diff options
author | Patrick Steinhardt <psteinhardt@gitlab.com> | 2022-02-01 15:07:42 +0300 |
---|---|---|
committer | Patrick Steinhardt <psteinhardt@gitlab.com> | 2022-02-01 17:17:55 +0300 |
commit | 450c53c7466468d0d1922d47f1dc5c27168d6e74 (patch) | |
tree | 80f1b88291d1ac15c86d29c161ff6b51a7978ebd | |
parent | a79459c6b42fdf33d36badecd917abeb33da81fa (diff) |
localrepo: Refactor tests to not read FETCH_HEAD
Some of our remote tests use the FETCH_HEAD file to determine whether
expected references have been fetched. We're about to stop writing that
file though, which will break these tests.
Refactor them to use `localrepo.GetReferences()` to determine whether
refs match after the fetch.
-rw-r--r-- | internal/git/localrepo/remote_extra_test.go | 32 | ||||
-rw-r--r-- | internal/git/localrepo/remote_test.go | 11 |
2 files changed, 18 insertions, 25 deletions
diff --git a/internal/git/localrepo/remote_extra_test.go b/internal/git/localrepo/remote_extra_test.go index 1b473c06e..5c40c9290 100644 --- a/internal/git/localrepo/remote_extra_test.go +++ b/internal/git/localrepo/remote_extra_test.go @@ -2,7 +2,6 @@ package localrepo_test import ( "bytes" - "fmt" "path/filepath" "testing" @@ -13,7 +12,6 @@ import ( "gitlab.com/gitlab-org/gitaly/v14/internal/gitaly/service" "gitlab.com/gitlab-org/gitaly/v14/internal/gitaly/service/hook" "gitlab.com/gitlab-org/gitaly/v14/internal/gitaly/service/ssh" - "gitlab.com/gitlab-org/gitaly/v14/internal/helper/text" "gitlab.com/gitlab-org/gitaly/v14/internal/testhelper" "gitlab.com/gitlab-org/gitaly/v14/internal/testhelper/testcfg" "gitlab.com/gitlab-org/gitaly/v14/internal/testhelper/testserver" @@ -66,15 +64,13 @@ func TestRepo_FetchInternal(t *testing.T) { localrepo.FetchOpts{}, )) - fetchHead := testhelper.MustReadFile(t, filepath.Join(repoPath, "FETCH_HEAD")) - expectedFetchHead := fmt.Sprintf("%s\t\tbranch 'master' of ssh://gitaly/internal\n", remoteOID.String()) - expectedFetchHead += fmt.Sprintf("%s\tnot-for-merge\ttag 'v1.0.0' of ssh://gitaly/internal\n", tagV100OID.String()) - expectedFetchHead += fmt.Sprintf("%s\tnot-for-merge\ttag 'v1.1.0' of ssh://gitaly/internal", tagV110OID.String()) - require.Equal(t, expectedFetchHead, text.ChompBytes(fetchHead)) - - oid, err := repo.ResolveRevision(ctx, git.Revision("refs/heads/master")) - require.NoError(t, err, "the object from remote should exists in local after fetch done") - require.Equal(t, remoteOID, oid) + refs, err := repo.GetReferences(ctx) + require.NoError(t, err) + require.Equal(t, []git.Reference{ + {Name: "refs/heads/master", Target: remoteOID.String()}, + {Name: "refs/tags/v1.0.0", Target: tagV100OID.String()}, + {Name: "refs/tags/v1.1.0", Target: tagV110OID.String()}, + }, refs) // Even if the gitconfig says we should write a commit graph, Gitaly should refuse // to do so. @@ -88,7 +84,7 @@ func TestRepo_FetchInternal(t *testing.T) { t.Run("refspec without tags", func(t *testing.T) { ctx := testhelper.MergeIncomingMetadata(ctx, testcfg.GitalyServersMetadataFromCfg(t, cfg)) - repoProto, repoPath := gittest.InitRepo(t, cfg, cfg.Storages[0]) + repoProto, _ := gittest.InitRepo(t, cfg, cfg.Storages[0]) repo := localrepo.NewTestRepo(t, cfg, repoProto) require.NoError(t, repo.FetchInternal( @@ -96,13 +92,11 @@ func TestRepo_FetchInternal(t *testing.T) { localrepo.FetchOpts{Tags: localrepo.FetchOptsTagsNone}, )) - fetchHead := testhelper.MustReadFile(t, filepath.Join(repoPath, "FETCH_HEAD")) - expectedFetchHead := fmt.Sprintf("%s\t\tbranch 'master' of ssh://gitaly/internal", remoteOID.String()) - require.Equal(t, expectedFetchHead, text.ChompBytes(fetchHead)) - - oid, err := repo.ResolveRevision(ctx, git.Revision("refs/heads/master")) - require.NoError(t, err, "the object from remote should exists in local after fetch done") - require.Equal(t, remoteOID, oid) + refs, err := repo.GetReferences(ctx) + require.NoError(t, err) + require.Equal(t, []git.Reference{ + {Name: "refs/heads/master", Target: remoteOID.String()}, + }, refs) }) t.Run("object ID", func(t *testing.T) { diff --git a/internal/git/localrepo/remote_test.go b/internal/git/localrepo/remote_test.go index 0c5ef9c75..3a0eb19b0 100644 --- a/internal/git/localrepo/remote_test.go +++ b/internal/git/localrepo/remote_test.go @@ -63,18 +63,17 @@ func TestRepo_FetchRemote(t *testing.T) { }) t.Run("ok", func(t *testing.T) { - repo, testRepoPath := initBareWithRemote(t, "origin") + repo, _ := initBareWithRemote(t, "origin") var stderr bytes.Buffer require.NoError(t, repo.FetchRemote(ctx, "origin", FetchOpts{Stderr: &stderr})) require.Empty(t, stderr.String(), "it should not produce output as it is called with --quite flag by default") - fetchHeadData := testhelper.MustReadFile(t, filepath.Join(testRepoPath, "FETCH_HEAD")) - - fetchHead := string(fetchHeadData) - require.Contains(t, fetchHead, "e56497bb5f03a90a51293fc6d516788730953899 not-for-merge branch ''test''") - require.Contains(t, fetchHead, "8a2a6eb295bb170b34c24c76c49ed0e9b2eaf34b not-for-merge tag 'v1.1.0'") + refs, err := repo.GetReferences(ctx) + require.NoError(t, err) + require.Contains(t, refs, git.Reference{Name: "refs/remotes/origin/'test'", Target: "e56497bb5f03a90a51293fc6d516788730953899"}) + require.Contains(t, refs, git.Reference{Name: "refs/tags/v1.1.0", Target: "8a2a6eb295bb170b34c24c76c49ed0e9b2eaf34b"}) sha, err := repo.ResolveRevision(ctx, git.Revision("refs/remotes/origin/master^{commit}")) require.NoError(t, err, "the object from remote should exists in local after fetch done") |