From 70f405e7b15148ba0c3de89355b7dd5cb3befa60 Mon Sep 17 00:00:00 2001 From: Alec Lanter Date: Mon, 23 Jan 2023 10:10:11 -0600 Subject: test: resolve changes for PR #1004, add unit test, fix issue uncovered by unit test --- repository/gogit_test.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'repository/gogit_test.go') diff --git a/repository/gogit_test.go b/repository/gogit_test.go index 02bd42fd..2bec97a5 100644 --- a/repository/gogit_test.go +++ b/repository/gogit_test.go @@ -1,6 +1,7 @@ package repository import ( + "os" "path" "path/filepath" "testing" @@ -81,3 +82,21 @@ func TestGoGitRepo_Indexes(t *testing.T) { require.NoError(t, err) require.NotZero(t, indexA) } + +func TestGoGit_DetectsSubmodules(t *testing.T) { + expectedPath := "../foo/bar" + submoduleData := "gitdir: " + expectedPath + d := t.TempDir() + if f, err := os.Create(filepath.Join(d, ".git")); err != nil { + t.Fatal("could not create necessary temp file:", err) + } else { + t.Log(f.Name()) + if _, err := f.Write([]byte(submoduleData)); err != nil { + t.Fatal("could not write necessary data to temp file:", err) + } + _ = f.Close() + } + result, err := detectGitPath(d) + assert.Empty(t, err) + assert.Equal(t, expectedPath, result) +} -- cgit From 27c96a4044f05a338d6ac6187135e6b9ac487e9f Mon Sep 17 00:00:00 2001 From: Michael Muré Date: Sat, 4 Mar 2023 13:10:38 +0100 Subject: repo: improve support for gitdir indirection - add a limited reader to avoid abuse - support recusive indirection (up to depth 10) - check that the pointed to repo does exist --- repository/gogit_test.go | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) (limited to 'repository/gogit_test.go') diff --git a/repository/gogit_test.go b/repository/gogit_test.go index 2bec97a5..21acd5df 100644 --- a/repository/gogit_test.go +++ b/repository/gogit_test.go @@ -1,6 +1,7 @@ package repository import ( + "fmt" "os" "path" "path/filepath" @@ -84,19 +85,14 @@ func TestGoGitRepo_Indexes(t *testing.T) { } func TestGoGit_DetectsSubmodules(t *testing.T) { - expectedPath := "../foo/bar" - submoduleData := "gitdir: " + expectedPath + repo := CreateGoGitTestRepo(t, false) + expected := filepath.Join(goGitRepoDir(t, repo), "/.git") + d := t.TempDir() - if f, err := os.Create(filepath.Join(d, ".git")); err != nil { - t.Fatal("could not create necessary temp file:", err) - } else { - t.Log(f.Name()) - if _, err := f.Write([]byte(submoduleData)); err != nil { - t.Fatal("could not write necessary data to temp file:", err) - } - _ = f.Close() - } - result, err := detectGitPath(d) + err := os.WriteFile(filepath.Join(d, ".git"), []byte(fmt.Sprintf("gitdir: %s", expected)), 0600) + require.NoError(t, err) + + result, err := detectGitPath(d, 0) assert.Empty(t, err) - assert.Equal(t, expectedPath, result) + assert.Equal(t, expected, result) } -- cgit