pkg/gitinterface: Add and refactor tests for coverage

This commit adds tests for uncovered error paths and edge cases in
pkg/gitinterface, and refactors existing tests for clarity:

- Add error path tests for CheckAndSetReference, SetReference,
  DeleteReference, RefSpec, CanSign, VerifySignature,
  TagUsingSpecificKey, GetAllFilesInTree, EnsureIsCommit,
  GetTagTarget, ensureIsTag, and other helpers
- Inline error-case test functions into parent tests using t.Run
  subtests for better organization
- Extract inline byte slices into named variables for readability
- Simplify temp directory usage where subdirectories are unnecessary
- Remove redundant parser-level error tests
- Format files with gofmt

Signed-off-by: dawgdevv <nraj02415@gmail.com>
This commit is contained in:
dawgdevv 2026-04-29 02:15:17 +05:30
parent b55ba336ce
commit 3e835940ee
7 changed files with 235 additions and 54 deletions

View file

@ -129,6 +129,16 @@ func TestGetPathIDInTree(t *testing.T) {
assert.ErrorIs(t, err, ErrTreeDoesNotHavePath)
assert.Nil(t, itemID)
})
t.Run("blob id", func(t *testing.T) {
_, err := repo.GetPathIDInTree("a", blobAID)
assert.ErrorContains(t, err, "unable to enumerate items in tree")
})
t.Run("non-existent id", func(t *testing.T) {
_, err := repo.GetPathIDInTree("a", ZeroHash)
assert.ErrorContains(t, err, "unable to enumerate items in tree")
})
}
func TestGetTreeItems(t *testing.T) {
@ -237,6 +247,16 @@ func TestGetTreeItems(t *testing.T) {
assert.Nil(t, err)
assert.Equal(t, expectedTreeItems, treeItems)
})
t.Run("blob id", func(t *testing.T) {
_, err := repo.GetTreeItems(blobAID)
assert.ErrorContains(t, err, "unable to enumerate items in tree")
})
t.Run("non-existent id", func(t *testing.T) {
_, err := repo.GetTreeItems(ZeroHash)
assert.ErrorContains(t, err, "unable to enumerate items in tree")
})
}
func TestGetMergeTree(t *testing.T) {
@ -443,6 +463,43 @@ func TestGetMergeTree(t *testing.T) {
assert.Nil(t, err)
assert.Equal(t, treeID, mergeTreeID)
})
t.Run("non-commit target", func(t *testing.T) {
tmpDir := t.TempDir()
repo := CreateTestGitRepository(t, tmpDir, false)
blobID, err := repo.WriteBlob([]byte("a"))
if err != nil {
t.Fatal(err)
}
_, err = repo.GetMergeTree(ZeroHash, blobID)
assert.ErrorContains(t, err, "is not a commit object")
})
t.Run("non-commit base", func(t *testing.T) {
tmpDir := t.TempDir()
repo := CreateTestGitRepository(t, tmpDir, false)
treeBuilder := NewTreeBuilder(repo)
blobID, err := repo.WriteBlob([]byte("a"))
if err != nil {
t.Fatal(err)
}
emptyTreeID, err := treeBuilder.WriteTreeFromEntries(nil)
if err != nil {
t.Fatal(err)
}
commitID, err := repo.Commit(emptyTreeID, "refs/heads/main", "Initial commit\n", false)
if err != nil {
t.Fatal(err)
}
_, err = repo.GetMergeTree(blobID, commitID)
assert.ErrorContains(t, err, "is not a commit object")
})
}
func TestCreateSubtreeFromUpstreamRepository(t *testing.T) {
@ -1121,4 +1178,25 @@ func TestEnsureIsTree(t *testing.T) {
err = repo.ensureIsTree(blobID)
assert.NotNil(t, err)
err = repo.ensureIsTree(ZeroHash)
assert.ErrorContains(t, err, "unable to inspect if object is tree")
}
func TestGetAllFilesInTree(t *testing.T) {
t.Run("error cases", func(t *testing.T) {
tmpDir := t.TempDir()
repo := CreateTestGitRepository(t, tmpDir, false)
blobID, err := repo.WriteBlob([]byte("a"))
if err != nil {
t.Fatal(err)
}
_, err = repo.GetAllFilesInTree(blobID)
assert.ErrorContains(t, err, "unable to enumerate all files in tree")
_, err = repo.GetAllFilesInTree(ZeroHash)
assert.ErrorContains(t, err, "unable to enumerate all files in tree")
})
}