| package git |
| |
| import ( |
| "fmt" |
| "reflect" |
| "testing" |
| "time" |
| ) |
| |
| func TestCreateNote(t *testing.T) { |
| repo := createTestRepo(t) |
| defer cleanupTestRepo(t, repo) |
| |
| commitId, _ := seedTestRepo(t, repo) |
| |
| commit, err := repo.LookupCommit(commitId) |
| checkFatal(t, err) |
| |
| note, noteId := createTestNote(t, repo, commit) |
| |
| compareStrings(t, "I am a note\n", note.Message()) |
| compareStrings(t, noteId.String(), note.Id().String()) |
| compareStrings(t, "alice", note.Author().Name) |
| compareStrings(t, "alice@example.com", note.Author().Email) |
| compareStrings(t, "alice", note.Committer().Name) |
| compareStrings(t, "alice@example.com", note.Committer().Email) |
| } |
| |
| func TestNoteIterator(t *testing.T) { |
| repo := createTestRepo(t) |
| defer cleanupTestRepo(t, repo) |
| |
| seedTestRepo(t, repo) |
| |
| notes := make([]*Note, 5) |
| for i := range notes { |
| commitId, _ := updateReadme(t, repo, fmt.Sprintf("README v%d\n", i+1)) |
| commit, err := repo.LookupCommit(commitId) |
| checkFatal(t, err) |
| |
| note, _ := createTestNote(t, repo, commit) |
| notes[i] = note |
| } |
| |
| iter, err := repo.NewNoteIterator("") |
| checkFatal(t, err) |
| for { |
| noteId, commitId, err := iter.Next() |
| if err != nil { |
| if !IsErrorCode(err, ErrIterOver) { |
| checkFatal(t, err) |
| } |
| break |
| } |
| |
| note, err := repo.Notes.Read("", commitId) |
| checkFatal(t, err) |
| |
| if !reflect.DeepEqual(note.Id(), noteId) { |
| t.Errorf("expected note oid '%v', actual '%v'", note.Id(), noteId) |
| } |
| } |
| } |
| |
| func TestRemoveNote(t *testing.T) { |
| repo := createTestRepo(t) |
| defer cleanupTestRepo(t, repo) |
| |
| commitId, _ := seedTestRepo(t, repo) |
| |
| commit, err := repo.LookupCommit(commitId) |
| checkFatal(t, err) |
| |
| note, _ := createTestNote(t, repo, commit) |
| |
| _, err = repo.Notes.Read("", commit.Id()) |
| checkFatal(t, err) |
| |
| err = repo.Notes.Remove("", note.Author(), note.Committer(), commitId) |
| checkFatal(t, err) |
| |
| _, err = repo.Notes.Read("", commit.Id()) |
| if err == nil { |
| t.Fatal("note remove failed") |
| } |
| } |
| |
| func TestDefaultNoteRef(t *testing.T) { |
| repo := createTestRepo(t) |
| defer cleanupTestRepo(t, repo) |
| |
| ref, err := repo.Notes.DefaultRef() |
| checkFatal(t, err) |
| |
| compareStrings(t, "refs/notes/commits", ref) |
| } |
| |
| func createTestNote(t *testing.T, repo *Repository, commit *Commit) (*Note, *Oid) { |
| loc, err := time.LoadLocation("Europe/Berlin") |
| sig := &Signature{ |
| Name: "alice", |
| Email: "alice@example.com", |
| When: time.Date(2015, 01, 05, 13, 0, 0, 0, loc), |
| } |
| |
| noteId, err := repo.Notes.Create("", sig, sig, commit.Id(), "I am a note\n", false) |
| checkFatal(t, err) |
| |
| note, err := repo.Notes.Read("", commit.Id()) |
| checkFatal(t, err) |
| |
| return note, noteId |
| } |