diff options
Diffstat (limited to 'obj_tag_test.go')
| -rw-r--r-- | obj_tag_test.go | 191 |
1 files changed, 0 insertions, 191 deletions
diff --git a/obj_tag_test.go b/obj_tag_test.go deleted file mode 100644 index 6b3c8368..00000000 --- a/obj_tag_test.go +++ /dev/null @@ -1,191 +0,0 @@ -package furgit - -import ( - "bytes" - "os" - "path/filepath" - "testing" - "time" -) - -func TestTagWrite(t *testing.T) { - repoPath, cleanup := setupTestRepo(t) - defer cleanup() - - workDir, cleanupWork := setupWorkDir(t) - defer cleanupWork() - - err := os.WriteFile(filepath.Join(workDir, "file.txt"), []byte("content"), 0o644) - if err != nil { - t.Fatalf("failed to write file.txt: %v", err) - } - gitCmd(t, repoPath, "--work-tree="+workDir, "add", ".") - gitCmd(t, repoPath, "--work-tree="+workDir, "commit", "-m", "Tagged commit") - commitHash := gitCmd(t, repoPath, "rev-parse", "HEAD") - - repo, err := OpenRepository(repoPath) - if err != nil { - t.Fatalf("OpenRepository failed: %v", err) - } - defer func() { _ = repo.Close() }() - - commitHashObj, _ := repo.ParseHash(commitHash) - - whenUnix := time.Now().Unix() - tag := &Tag{ - Target: commitHashObj, - TargetType: ObjectTypeCommit, - Name: []byte("v2.0.0"), - Tagger: &Ident{ - Name: []byte("Tagger Name"), - Email: []byte("tagger@test.org"), - WhenUnix: whenUnix, - OffsetMinutes: 120, - }, - Message: []byte("Release version 2.0.0\n"), - } - - tagHash, err := repo.WriteLooseObject(tag) - if err != nil { - t.Fatalf("WriteLooseObject failed: %v", err) - } - - gitType := string(gitCatFile(t, repoPath, "-t", tagHash.String())) - if gitType != "tag" { - t.Errorf("git type: got %q, want %q", gitType, "tag") - } - - readObj, err := repo.ReadObject(tagHash) - if err != nil { - t.Fatalf("ReadObject failed after write: %v", err) - } - readTag, ok := readObj.(*StoredTag) - if !ok { - t.Fatalf("expected *StoredTag, got %T", readObj) - } - - if !bytes.Equal(readTag.Name, []byte("v2.0.0")) { - t.Errorf("tag name: got %q, want %q", readTag.Name, "v2.0.0") - } - if !bytes.HasPrefix(readTag.Tagger.Name, []byte("Tagger Name")) { - t.Errorf("tagger name: got %q, want prefix %q", readTag.Tagger.Name, "Tagger Name") - } - if !bytes.Equal(readTag.Message, []byte("Release version 2.0.0\n")) { - t.Errorf("message: got %q, want %q", readTag.Message, "Release version 2.0.0\n") - } - - if tag.ObjectType() != ObjectTypeTag { - t.Errorf("ObjectType(): got %d, want %d", tag.ObjectType(), ObjectTypeTag) - } -} - -func TestTagRead(t *testing.T) { - repoPath, cleanup := setupTestRepo(t) - defer cleanup() - - workDir, cleanupWork := setupWorkDir(t) - defer cleanupWork() - - err := os.WriteFile(filepath.Join(workDir, "file.txt"), []byte("content"), 0o644) - if err != nil { - t.Fatalf("failed to write file.txt: %v", err) - } - gitCmd(t, repoPath, "--work-tree="+workDir, "add", ".") - gitCmd(t, repoPath, "--work-tree="+workDir, "commit", "-m", "Commit for tag") - commitHash := gitCmd(t, repoPath, "rev-parse", "HEAD") - - gitCmd(t, repoPath, "tag", "-a", "-m", "Tag message", "v1.0.0", commitHash) - tagHash := gitCmd(t, repoPath, "rev-parse", "v1.0.0") - - repo, err := OpenRepository(repoPath) - if err != nil { - t.Fatalf("OpenRepository failed: %v", err) - } - defer func() { _ = repo.Close() }() - - hash, _ := repo.ParseHash(tagHash) - obj, err := repo.ReadObject(hash) - if err != nil { - t.Fatalf("ReadObject failed: %v", err) - } - - tag, ok := obj.(*StoredTag) - if !ok { - t.Fatalf("expected *StoredTag, got %T", obj) - } - - if !bytes.Equal(tag.Name, []byte("v1.0.0")) { - t.Errorf("name: got %q, want %q", tag.Name, "v1.0.0") - } - if tag.TargetType != ObjectTypeCommit { - t.Errorf("target type: got %d, want %d", tag.TargetType, ObjectTypeCommit) - } - if tag.Target.String() != commitHash { - t.Errorf("target: got %s, want %s", tag.Target, commitHash) - } -} - -func TestTagRoundtrip(t *testing.T) { - repoPath, cleanup := setupTestRepo(t) - defer cleanup() - - workDir, cleanupWork := setupWorkDir(t) - defer cleanupWork() - - err := os.WriteFile(filepath.Join(workDir, "file.txt"), []byte("content"), 0o644) - if err != nil { - t.Fatalf("failed to write file.txt: %v", err) - } - gitCmd(t, repoPath, "--work-tree="+workDir, "add", ".") - gitCmd(t, repoPath, "--work-tree="+workDir, "commit", "-m", "Commit") - commitHash := gitCmd(t, repoPath, "rev-parse", "HEAD") - - repo, err := OpenRepository(repoPath) - if err != nil { - t.Fatalf("OpenRepository failed: %v", err) - } - defer func() { _ = repo.Close() }() - - commitHashObj, _ := repo.ParseHash(commitHash) - - tag := &Tag{ - Target: commitHashObj, - TargetType: ObjectTypeCommit, - Name: []byte("v3.0.0"), - Tagger: &Ident{ - Name: []byte("Test Tagger"), - Email: []byte("tagger@example.org"), - WhenUnix: 123456789, - OffsetMinutes: 0, - }, - Message: []byte("Tag message\n"), - } - - tagHash, err := repo.WriteLooseObject(tag) - if err != nil { - t.Fatalf("WriteLooseObject failed: %v", err) - } - - obj, err := repo.ReadObject(tagHash) - if err != nil { - t.Fatalf("ReadObject failed: %v", err) - } - - readTag, ok := obj.(*StoredTag) - if !ok { - t.Fatalf("expected *StoredTag, got %T", obj) - } - - if !bytes.Equal(readTag.Name, tag.Name) { - t.Errorf("name: got %q, want %q", readTag.Name, tag.Name) - } - if readTag.Target != tag.Target { - t.Errorf("target: got %s, want %s", readTag.Target, tag.Target) - } - if readTag.TargetType != tag.TargetType { - t.Errorf("target type: got %d, want %d", readTag.TargetType, tag.TargetType) - } - if !bytes.Equal(readTag.Message, tag.Message) { - t.Errorf("message: got %q, want %q", readTag.Message, tag.Message) - } -} |
