summaryrefslogtreecommitdiff
path: root/note_test.go
diff options
context:
space:
mode:
authorBen Burkert <[email protected]>2015-01-06 10:21:33 -0800
committerBen Burkert <[email protected]>2015-01-07 11:56:33 -0800
commit4989fc5a15123debf82b2c1232cf511ec9ee4c15 (patch)
tree1df6ec1b79a496b719da47fa0ad2295fb72e2eba /note_test.go
parentd57246fb74404ed8b18d0d26d2b02b326ffd2cbe (diff)
Add git note support
Diffstat (limited to 'note_test.go')
-rw-r--r--note_test.go113
1 files changed, 113 insertions, 0 deletions
diff --git a/note_test.go b/note_test.go
new file mode 100644
index 0000000..f5e9c01
--- /dev/null
+++ b/note_test.go
@@ -0,0 +1,113 @@
+package git
+
+import (
+ "fmt"
+ "os"
+ "reflect"
+ "testing"
+ "time"
+)
+
+func TestCreateNote(t *testing.T) {
+ repo := createTestRepo(t)
+ defer os.RemoveAll(repo.Workdir())
+
+ 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, "[email protected]", note.Author().Email)
+ compareStrings(t, "alice", note.Committer().Name)
+ compareStrings(t, "[email protected]", note.Committer().Email)
+}
+
+func TestNoteIterator(t *testing.T) {
+ repo := createTestRepo(t)
+ defer os.RemoveAll(repo.Workdir())
+ 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.ReadNote("", 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 os.RemoveAll(repo.Workdir())
+
+ commitId, _ := seedTestRepo(t, repo)
+
+ commit, err := repo.LookupCommit(commitId)
+ checkFatal(t, err)
+
+ note, _ := createTestNote(t, repo, commit)
+
+ _, err = repo.ReadNote("", commit.Id())
+ checkFatal(t, err)
+
+ err = repo.RemoveNote("", note.Author(), note.Committer(), commitId)
+ checkFatal(t, err)
+
+ _, err = repo.ReadNote("", commit.Id())
+ if err == nil {
+ t.Fatal("note remove failed")
+ }
+}
+
+func TestDefaultNoteRef(t *testing.T) {
+ repo := createTestRepo(t)
+ defer os.RemoveAll(repo.Workdir())
+
+ ref, err := repo.DefaultNoteRef()
+ 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: "[email protected]",
+ When: time.Date(2015, 01, 05, 13, 0, 0, 0, loc),
+ }
+
+ noteId, err := repo.CreateNote("", sig, sig, commit.Id(), "I am a note\n", false)
+ checkFatal(t, err)
+
+ note, err := repo.ReadNote("", commit.Id())
+ checkFatal(t, err)
+
+ return note, noteId
+}