mirror of
https://github.com/sourcegraph/sourcegraph.git
synced 2026-02-06 16:51:55 +00:00
chore: Switch over to fake RepoStore in codenav tests (#64284)
Reduce the exposed surface area with a smaller interface minimalRepoStore, and make sure we're using fakes in the tests which better document the intent, instead of using a mock repo store. The fake makes sure that the methods are mutually consistent, which is easier to do when working with a smaller interface.
This commit is contained in:
parent
1cac35b246
commit
99f7d97dc6
@ -90,7 +90,7 @@ go_test(
|
||||
"//internal/codeintel/core",
|
||||
"//internal/codeintel/uploads/shared",
|
||||
"//internal/collections",
|
||||
"//internal/database/dbmocks",
|
||||
"//internal/database",
|
||||
"//internal/gitserver",
|
||||
"//internal/gitserver/gitdomain",
|
||||
"//internal/observation",
|
||||
|
||||
@ -8,7 +8,6 @@ import (
|
||||
|
||||
"github.com/sourcegraph/sourcegraph/internal/api"
|
||||
"github.com/sourcegraph/sourcegraph/internal/collections"
|
||||
"github.com/sourcegraph/sourcegraph/internal/database"
|
||||
"github.com/sourcegraph/sourcegraph/internal/gitserver"
|
||||
"github.com/sourcegraph/sourcegraph/internal/gitserver/gitdomain"
|
||||
"github.com/sourcegraph/sourcegraph/lib/errors"
|
||||
@ -25,13 +24,13 @@ type RepositoryCommit struct {
|
||||
}
|
||||
|
||||
type commitCache struct {
|
||||
repoStore database.RepoStore
|
||||
repoStore minimalRepoStore
|
||||
gitserverClient gitserver.Client
|
||||
mutex sync.RWMutex
|
||||
cache map[api.RepoID]map[api.CommitID]bool
|
||||
}
|
||||
|
||||
func NewCommitCache(repoStore database.RepoStore, client gitserver.Client) CommitCache {
|
||||
func NewCommitCache(repoStore minimalRepoStore, client gitserver.Client) CommitCache {
|
||||
return &commitCache{
|
||||
repoStore: repoStore,
|
||||
gitserverClient: client,
|
||||
|
||||
@ -99,7 +99,7 @@ func (r *RequestState) SetLocalGitTreeTranslator(client gitserver.Client, repo *
|
||||
r.GitTreeTranslator = NewGitTreeTranslator(client, *repo)
|
||||
}
|
||||
|
||||
func (r *RequestState) SetLocalCommitCache(repoStore database.RepoStore, client gitserver.Client) {
|
||||
func (r *RequestState) SetLocalCommitCache(repoStore minimalRepoStore, client gitserver.Client) {
|
||||
r.commitCache = NewCommitCache(repoStore, client)
|
||||
}
|
||||
|
||||
|
||||
@ -21,7 +21,6 @@ import (
|
||||
"github.com/sourcegraph/sourcegraph/internal/codeintel/codenav/shared"
|
||||
"github.com/sourcegraph/sourcegraph/internal/codeintel/core"
|
||||
uploadsshared "github.com/sourcegraph/sourcegraph/internal/codeintel/uploads/shared"
|
||||
"github.com/sourcegraph/sourcegraph/internal/database"
|
||||
"github.com/sourcegraph/sourcegraph/internal/gitserver"
|
||||
"github.com/sourcegraph/sourcegraph/internal/observation"
|
||||
searcher "github.com/sourcegraph/sourcegraph/internal/search/client"
|
||||
@ -32,7 +31,7 @@ import (
|
||||
)
|
||||
|
||||
type Service struct {
|
||||
repoStore database.RepoStore
|
||||
repoStore minimalRepoStore
|
||||
lsifstore lsifstore.LsifStore
|
||||
gitserver gitserver.Client
|
||||
uploadSvc UploadService
|
||||
@ -41,9 +40,18 @@ type Service struct {
|
||||
logger log.Logger
|
||||
}
|
||||
|
||||
// minimalRepoStore covers the subset of database.RepoStore APIs that we need
|
||||
// for code navigation.
|
||||
//
|
||||
// Prefer calling GetReposSetByIDs instead of calling Get in a loop.
|
||||
type minimalRepoStore interface {
|
||||
Get(context.Context, api.RepoID) (*types.Repo, error)
|
||||
GetReposSetByIDs(context.Context, ...api.RepoID) (map[api.RepoID]*types.Repo, error)
|
||||
}
|
||||
|
||||
func newService(
|
||||
observationCtx *observation.Context,
|
||||
repoStore database.RepoStore,
|
||||
repoStore minimalRepoStore,
|
||||
lsifstore lsifstore.LsifStore,
|
||||
uploadSvc UploadService,
|
||||
gitserver gitserver.Client,
|
||||
|
||||
@ -66,14 +66,15 @@ func TestGetClosestCompletedUploadsForBlob(t *testing.T) {
|
||||
}
|
||||
for _, testCase := range testCases {
|
||||
// Set up mocks
|
||||
mockRepoStore := defaultMockRepoStore()
|
||||
const testRepoName = "yummy.com/cake"
|
||||
fakeRepoStore := FakeMinimalRepoStore{data: map[api.RepoID]*types.Repo{repoID: {ID: repoID, Name: testRepoName}}}
|
||||
mockLsifStore := lsifstoremocks.NewMockLsifStore()
|
||||
mockUploadSvc := NewMockUploadService()
|
||||
mockGitserverClient := gitserver.NewMockClient()
|
||||
mockSearchClient := client.NewMockSearchClient()
|
||||
|
||||
// Init service
|
||||
svc := newService(observation.TestContextTB(t), mockRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
svc := newService(observation.TestContextTB(t), fakeRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
|
||||
closestUploads := slices.Clone(testCase.closestUploads)
|
||||
for i := range closestUploads {
|
||||
@ -81,10 +82,6 @@ func TestGetClosestCompletedUploadsForBlob(t *testing.T) {
|
||||
}
|
||||
|
||||
mockUploadSvc.InferClosestUploadsFunc.SetDefaultReturn(closestUploads, nil)
|
||||
const testRepoName = "yummy.com/cake"
|
||||
mockRepoStore.GetReposSetByIDsFunc.PushReturn(map[api.RepoID]*types.Repo{
|
||||
repoID: {ID: repoID, Name: testRepoName},
|
||||
}, nil)
|
||||
|
||||
mockGitserverClient.GetCommitFunc.SetDefaultHook(func(_ context.Context, repoName api.RepoName, commitID api.CommitID) (*gitdomain.Commit, error) {
|
||||
// C1 is deliberately missing from gitserver
|
||||
|
||||
@ -25,18 +25,18 @@ var uploadRelPath = core.NewUploadRelPathUnchecked
|
||||
|
||||
func TestDiagnostics(t *testing.T) {
|
||||
// Set up mocks
|
||||
mockRepoStore := defaultMockRepoStore()
|
||||
fakeRepoStore := AllPresentFakeRepoStore{}
|
||||
mockLsifStore := lsifstoremocks.NewMockLsifStore()
|
||||
mockUploadSvc := NewMockUploadService()
|
||||
mockGitserverClient := gitserver.NewMockClient()
|
||||
mockSearchClient := client.NewMockSearchClient()
|
||||
|
||||
// Init service
|
||||
svc := newService(observation.TestContextTB(t), mockRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
svc := newService(observation.TestContextTB(t), fakeRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
|
||||
// Set up request state
|
||||
mockRequestState := RequestState{}
|
||||
mockRequestState.SetLocalCommitCache(mockRepoStore, mockGitserverClient)
|
||||
mockRequestState.SetLocalCommitCache(fakeRepoStore, mockGitserverClient)
|
||||
mockRequestState.SetLocalGitTreeTranslator(mockGitserverClient, &sgtypes.Repo{})
|
||||
uploads := []uploadsshared.CompletedUpload{
|
||||
{ID: 50, Commit: "deadbeef", Root: "sub1/"},
|
||||
@ -100,18 +100,18 @@ func TestDiagnostics(t *testing.T) {
|
||||
|
||||
func TestDiagnosticsWithSubRepoPermissions(t *testing.T) {
|
||||
// Set up mocks
|
||||
mockRepoStore := defaultMockRepoStore()
|
||||
fakeRepoStore := AllPresentFakeRepoStore{}
|
||||
mockLsifStore := lsifstoremocks.NewMockLsifStore()
|
||||
mockUploadSvc := NewMockUploadService()
|
||||
mockGitserverClient := gitserver.NewMockClient()
|
||||
mockSearchClient := client.NewMockSearchClient()
|
||||
|
||||
// Init service
|
||||
svc := newService(observation.TestContextTB(t), mockRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
svc := newService(observation.TestContextTB(t), fakeRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
|
||||
// Set up request state
|
||||
mockRequestState := RequestState{}
|
||||
mockRequestState.SetLocalCommitCache(mockRepoStore, mockGitserverClient)
|
||||
mockRequestState.SetLocalCommitCache(fakeRepoStore, mockGitserverClient)
|
||||
mockRequestState.SetLocalGitTreeTranslator(mockGitserverClient, &sgtypes.Repo{})
|
||||
uploads := []uploadsshared.CompletedUpload{
|
||||
{ID: 50, Commit: "deadbeef", Root: "sub1/"},
|
||||
|
||||
@ -21,18 +21,18 @@ import (
|
||||
|
||||
func TestHover(t *testing.T) {
|
||||
// Set up mocks
|
||||
mockRepoStore := defaultMockRepoStore()
|
||||
fakeRepoStore := AllPresentFakeRepoStore{}
|
||||
mockLsifStore := lsifstoremocks.NewMockLsifStore()
|
||||
mockUploadSvc := NewMockUploadService()
|
||||
mockGitserverClient := gitserver.NewMockClient()
|
||||
mockSearchClient := client.NewMockSearchClient()
|
||||
|
||||
// Init service
|
||||
svc := newService(observation.TestContextTB(t), mockRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
svc := newService(observation.TestContextTB(t), fakeRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
|
||||
// Set up request state
|
||||
mockRequestState := RequestState{}
|
||||
mockRequestState.SetLocalCommitCache(mockRepoStore, mockGitserverClient)
|
||||
mockRequestState.SetLocalCommitCache(fakeRepoStore, mockGitserverClient)
|
||||
mockRequestState.GitTreeTranslator = noopTranslator()
|
||||
uploads := []uploadsshared.CompletedUpload{
|
||||
{ID: 50, Commit: "deadbeef", Root: "sub1/"},
|
||||
@ -77,18 +77,18 @@ func TestHover(t *testing.T) {
|
||||
|
||||
func TestHoverRemote(t *testing.T) {
|
||||
// Set up mocks
|
||||
mockRepoStore := defaultMockRepoStore()
|
||||
fakeRepoStore := AllPresentFakeRepoStore{}
|
||||
mockLsifStore := lsifstoremocks.NewMockLsifStore()
|
||||
mockUploadSvc := NewMockUploadService()
|
||||
mockGitserverClient := gitserver.NewMockClient()
|
||||
mockSearchClient := client.NewMockSearchClient()
|
||||
|
||||
// Init service
|
||||
svc := newService(observation.TestContextTB(t), mockRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
svc := newService(observation.TestContextTB(t), fakeRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
|
||||
// Set up request state
|
||||
mockRequestState := RequestState{}
|
||||
mockRequestState.SetLocalCommitCache(mockRepoStore, mockGitserverClient)
|
||||
mockRequestState.SetLocalCommitCache(fakeRepoStore, mockGitserverClient)
|
||||
mockRequestState.GitTreeTranslator = noopTranslator()
|
||||
uploads := []uploadsshared.CompletedUpload{
|
||||
{ID: 50, Commit: "deadbeef"},
|
||||
|
||||
@ -30,19 +30,19 @@ func posMatcher(line int, char int) shared.Matcher {
|
||||
func TestGetDefinitions(t *testing.T) {
|
||||
t.Run("local", func(t *testing.T) {
|
||||
// Set up mocks
|
||||
mockRepoStore := defaultMockRepoStore()
|
||||
fakeRepoStore := AllPresentFakeRepoStore{}
|
||||
mockLsifStore := lsifstoremocks.NewMockLsifStore()
|
||||
mockUploadSvc := NewMockUploadService()
|
||||
mockGitserverClient := gitserver.NewMockClient()
|
||||
mockSearchClient := client.NewMockSearchClient()
|
||||
|
||||
// Init service
|
||||
svc := newService(observation.TestContextTB(t), mockRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
svc := newService(observation.TestContextTB(t), fakeRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
|
||||
// Set up request state
|
||||
lookupPath := core.NewRepoRelPathUnchecked("sub2/a.go")
|
||||
mockRequestState := RequestState{Path: lookupPath}
|
||||
mockRequestState.SetLocalCommitCache(mockRepoStore, mockGitserverClient)
|
||||
mockRequestState.SetLocalCommitCache(fakeRepoStore, mockGitserverClient)
|
||||
|
||||
mockRequestState.GitTreeTranslator = noopTranslator()
|
||||
mockRequest := OccurrenceRequestArgs{
|
||||
@ -92,19 +92,19 @@ func TestGetDefinitions(t *testing.T) {
|
||||
|
||||
t.Run("remote", func(t *testing.T) {
|
||||
// Set up mocks
|
||||
mockRepoStore := defaultMockRepoStore()
|
||||
fakeRepoStore := AllPresentFakeRepoStore{}
|
||||
mockLsifStore := lsifstoremocks.NewMockLsifStore()
|
||||
mockUploadSvc := NewMockUploadService()
|
||||
mockGitserverClient := gitserver.NewMockClient()
|
||||
mockSearchClient := client.NewMockSearchClient()
|
||||
|
||||
// Init service
|
||||
svc := newService(observation.TestContextTB(t), mockRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
svc := newService(observation.TestContextTB(t), fakeRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
|
||||
// Set up request state
|
||||
lookupPath := core.NewRepoRelPathUnchecked("sub2/a.go")
|
||||
mockRequestState := RequestState{Path: lookupPath}
|
||||
mockRequestState.SetLocalCommitCache(mockRepoStore, mockGitserverClient)
|
||||
mockRequestState.SetLocalCommitCache(fakeRepoStore, mockGitserverClient)
|
||||
mockRequestState.SetLocalGitTreeTranslator(mockGitserverClient, &sgtypes.Repo{ID: 42})
|
||||
mockRequestState.GitTreeTranslator = noopTranslator()
|
||||
uploads1 := []uploadsshared.CompletedUpload{
|
||||
@ -209,19 +209,19 @@ func TestGetDefinitions(t *testing.T) {
|
||||
func TestGetReferences(t *testing.T) {
|
||||
t.Run("local", func(t *testing.T) {
|
||||
// Set up mocks
|
||||
mockRepoStore := defaultMockRepoStore()
|
||||
fakeRepoStore := AllPresentFakeRepoStore{}
|
||||
mockLsifStore := lsifstoremocks.NewMockLsifStore()
|
||||
mockUploadSvc := NewMockUploadService()
|
||||
mockGitserverClient := gitserver.NewMockClient()
|
||||
mockSearchClient := client.NewMockSearchClient()
|
||||
|
||||
// Init service
|
||||
svc := newService(observation.TestContextTB(t), mockRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
svc := newService(observation.TestContextTB(t), fakeRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
|
||||
// Set up request state
|
||||
lookupPath := core.NewRepoRelPathUnchecked("sub2/a.go")
|
||||
mockRequestState := RequestState{Path: lookupPath}
|
||||
mockRequestState.SetLocalCommitCache(mockRepoStore, mockGitserverClient)
|
||||
mockRequestState.SetLocalCommitCache(fakeRepoStore, mockGitserverClient)
|
||||
mockRequestState.GitTreeTranslator = noopTranslator()
|
||||
uploads := []uploadsshared.CompletedUpload{
|
||||
{ID: 50, Commit: "deadbeef", Root: "sub2/"},
|
||||
@ -285,19 +285,19 @@ func TestGetReferences(t *testing.T) {
|
||||
|
||||
t.Run("remote", func(t *testing.T) {
|
||||
// Set up mocks
|
||||
mockRepoStore := defaultMockRepoStore()
|
||||
fakeRepoStore := AllPresentFakeRepoStore{}
|
||||
mockLsifStore := lsifstoremocks.NewMockLsifStore()
|
||||
mockUploadSvc := NewMockUploadService()
|
||||
mockGitserverClient := gitserver.NewMockClient()
|
||||
mockSearchClient := client.NewMockSearchClient()
|
||||
|
||||
// Init service
|
||||
svc := newService(observation.TestContextTB(t), mockRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
svc := newService(observation.TestContextTB(t), fakeRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
|
||||
// Set up request state
|
||||
lookupPath := core.NewRepoRelPathUnchecked("sub2/a.go")
|
||||
mockRequestState := RequestState{Path: lookupPath}
|
||||
mockRequestState.SetLocalCommitCache(mockRepoStore, mockGitserverClient)
|
||||
mockRequestState.SetLocalCommitCache(fakeRepoStore, mockGitserverClient)
|
||||
mockRequestState.GitTreeTranslator = noopTranslator()
|
||||
uploads := []uploadsshared.CompletedUpload{
|
||||
{ID: 50, Commit: "deadbeef", Root: "sub1/"},
|
||||
@ -458,19 +458,19 @@ func TestGetReferences(t *testing.T) {
|
||||
func TestGetImplementations(t *testing.T) {
|
||||
t.Run("local", func(t *testing.T) {
|
||||
// Set up mocks
|
||||
mockRepoStore := defaultMockRepoStore()
|
||||
fakeRepoStore := AllPresentFakeRepoStore{}
|
||||
mockLsifStore := lsifstoremocks.NewMockLsifStore()
|
||||
mockUploadSvc := NewMockUploadService()
|
||||
mockGitserverClient := gitserver.NewMockClient()
|
||||
mockSearchClient := client.NewMockSearchClient()
|
||||
|
||||
// Init service
|
||||
svc := newService(observation.TestContextTB(t), mockRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
svc := newService(observation.TestContextTB(t), fakeRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
|
||||
// Set up request state
|
||||
lookupPath := core.NewRepoRelPathUnchecked("sub2/a.go")
|
||||
mockRequestState := RequestState{Path: lookupPath}
|
||||
mockRequestState.SetLocalCommitCache(mockRepoStore, mockGitserverClient)
|
||||
mockRequestState.SetLocalCommitCache(fakeRepoStore, mockGitserverClient)
|
||||
mockRequestState.GitTreeTranslator = noopTranslator()
|
||||
|
||||
// Empty result set (prevents nil pointer as scanner is always non-nil)
|
||||
|
||||
@ -36,7 +36,7 @@ index deadbeef1..deadbeef2 100644
|
||||
|
||||
func TestRanges(t *testing.T) {
|
||||
// Set up mocks
|
||||
mockRepoStore := defaultMockRepoStore()
|
||||
fakeRepoStore := AllPresentFakeRepoStore{}
|
||||
mockLsifStore := lsifstoremocks.NewMockLsifStore()
|
||||
mockUploadSvc := NewMockUploadService()
|
||||
mockGitserverClient := gitserver.NewMockClient()
|
||||
@ -51,11 +51,11 @@ func TestRanges(t *testing.T) {
|
||||
mockLsifStore.FindDocumentIDsFunc.SetDefaultHook(findDocumentIDsFuncAllowAny())
|
||||
|
||||
// Init service
|
||||
svc := newService(observation.TestContextTB(t), mockRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
svc := newService(observation.TestContextTB(t), fakeRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
|
||||
// Set up request state
|
||||
mockRequestState := RequestState{}
|
||||
mockRequestState.SetLocalCommitCache(mockRepoStore, mockGitserverClient)
|
||||
mockRequestState.SetLocalCommitCache(fakeRepoStore, mockGitserverClient)
|
||||
mockRequestState.SetLocalGitTreeTranslator(mockGitserverClient, &sgtypes.Repo{})
|
||||
uploads := []uploadsshared.CompletedUpload{
|
||||
{ID: 50, Commit: "deadbeef1", Root: "sub1/", RepositoryID: 42},
|
||||
|
||||
@ -16,7 +16,6 @@ import (
|
||||
"github.com/sourcegraph/sourcegraph/internal/gitserver"
|
||||
"github.com/sourcegraph/sourcegraph/internal/observation"
|
||||
"github.com/sourcegraph/sourcegraph/internal/search/client"
|
||||
"github.com/sourcegraph/sourcegraph/internal/types"
|
||||
)
|
||||
|
||||
const sampleFile1 = `package food
|
||||
@ -25,7 +24,7 @@ type banana struct{}`
|
||||
|
||||
func TestSnapshotForDocument(t *testing.T) {
|
||||
// Set up mocks
|
||||
mockRepoStore := defaultMockRepoStore()
|
||||
fakeRepoStore := AllPresentFakeRepoStore{}
|
||||
mockLsifStore := lsifstoremocks.NewMockLsifStore()
|
||||
mockUploadSvc := NewMockUploadService()
|
||||
mockGitserverClient := gitserver.NewMockClient()
|
||||
@ -33,10 +32,9 @@ func TestSnapshotForDocument(t *testing.T) {
|
||||
mockSearchClient := client.NewMockSearchClient()
|
||||
|
||||
// Init service
|
||||
svc := newService(observation.TestContextTB(t), mockRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
svc := newService(observation.TestContextTB(t), fakeRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
|
||||
mockUploadSvc.GetCompletedUploadsByIDsFunc.SetDefaultReturn([]shared.CompletedUpload{{}}, nil)
|
||||
mockRepoStore.GetFunc.SetDefaultReturn(&types.Repo{}, nil)
|
||||
mockGitserverClient.NewFileReaderFunc.SetDefaultReturn(io.NopCloser(bytes.NewReader([]byte(sampleFile1))), nil)
|
||||
mockLsifStore.SCIPDocumentFunc.SetDefaultReturn(core.Some(&scip.Document{
|
||||
RelativePath: "burger.go",
|
||||
|
||||
@ -18,7 +18,7 @@ import (
|
||||
|
||||
func TestStencil(t *testing.T) {
|
||||
// Set up mocks
|
||||
mockRepoStore := defaultMockRepoStore()
|
||||
fakeRepoStore := AllPresentFakeRepoStore{}
|
||||
mockLsifStore := lsifstoremocks.NewMockLsifStore()
|
||||
mockUploadSvc := NewMockUploadService()
|
||||
mockGitserverClient := gitserver.NewMockClient()
|
||||
@ -27,11 +27,11 @@ func TestStencil(t *testing.T) {
|
||||
mockLsifStore.FindDocumentIDsFunc.SetDefaultHook(findDocumentIDsFuncAllowAny())
|
||||
|
||||
// Init service
|
||||
svc := newService(observation.TestContextTB(t), mockRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
svc := newService(observation.TestContextTB(t), fakeRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
|
||||
// Set up request state
|
||||
mockRequestState := RequestState{}
|
||||
mockRequestState.SetLocalCommitCache(mockRepoStore, mockGitserverClient)
|
||||
mockRequestState.SetLocalCommitCache(fakeRepoStore, mockGitserverClient)
|
||||
mockRequestState.SetLocalGitTreeTranslator(mockGitserverClient, &sgtypes.Repo{})
|
||||
uploads := []uploadsshared.CompletedUpload{
|
||||
{ID: 50, Commit: "deadbeef", Root: "sub1/"},
|
||||
@ -78,7 +78,7 @@ func TestStencil(t *testing.T) {
|
||||
|
||||
func TestStencilWithDuplicateRanges(t *testing.T) {
|
||||
// Set up mocks
|
||||
mockRepoStore := defaultMockRepoStore()
|
||||
fakeRepoStore := AllPresentFakeRepoStore{}
|
||||
mockLsifStore := lsifstoremocks.NewMockLsifStore()
|
||||
mockUploadSvc := NewMockUploadService()
|
||||
mockGitserverClient := gitserver.NewMockClient()
|
||||
@ -87,11 +87,11 @@ func TestStencilWithDuplicateRanges(t *testing.T) {
|
||||
mockLsifStore.FindDocumentIDsFunc.SetDefaultHook(findDocumentIDsFuncAllowAny())
|
||||
|
||||
// Init service
|
||||
svc := newService(observation.TestContextTB(t), mockRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
svc := newService(observation.TestContextTB(t), fakeRepoStore, mockLsifStore, mockUploadSvc, mockGitserverClient, mockSearchClient, log.NoOp())
|
||||
|
||||
// Set up request state
|
||||
mockRequestState := RequestState{}
|
||||
mockRequestState.SetLocalCommitCache(mockRepoStore, mockGitserverClient)
|
||||
mockRequestState.SetLocalCommitCache(fakeRepoStore, mockGitserverClient)
|
||||
mockRequestState.SetLocalGitTreeTranslator(mockGitserverClient, &sgtypes.Repo{})
|
||||
uploads := []uploadsshared.CompletedUpload{
|
||||
{ID: 50, Commit: "deadbeef", Root: "sub1/"},
|
||||
|
||||
@ -5,23 +5,52 @@ import (
|
||||
"fmt"
|
||||
|
||||
"github.com/sourcegraph/sourcegraph/internal/api"
|
||||
"github.com/sourcegraph/sourcegraph/internal/database/dbmocks"
|
||||
"github.com/sourcegraph/sourcegraph/internal/database"
|
||||
internaltypes "github.com/sourcegraph/sourcegraph/internal/types"
|
||||
"github.com/sourcegraph/sourcegraph/lib/errors"
|
||||
)
|
||||
|
||||
func defaultMockRepoStore() *dbmocks.MockRepoStore {
|
||||
repoStore := dbmocks.NewMockRepoStore()
|
||||
repoStore.GetReposSetByIDsFunc.SetDefaultHook(func(ctx context.Context, ids ...api.RepoID) (map[api.RepoID]*internaltypes.Repo, error) {
|
||||
m := map[api.RepoID]*internaltypes.Repo{}
|
||||
for _, id := range ids {
|
||||
m[id] = &internaltypes.Repo{
|
||||
ID: id,
|
||||
Name: api.RepoName(fmt.Sprintf("r%d", id)),
|
||||
}
|
||||
}
|
||||
type AllPresentFakeRepoStore struct{}
|
||||
|
||||
return m, nil
|
||||
})
|
||||
var _ minimalRepoStore = AllPresentFakeRepoStore{}
|
||||
|
||||
return repoStore
|
||||
func (s AllPresentFakeRepoStore) Get(_ context.Context, id api.RepoID) (*internaltypes.Repo, error) {
|
||||
return &internaltypes.Repo{ID: id, Name: api.RepoName(fmt.Sprintf("r%d", id))}, nil
|
||||
}
|
||||
|
||||
func (s AllPresentFakeRepoStore) GetReposSetByIDs(ctx context.Context, ids ...api.RepoID) (map[api.RepoID]*internaltypes.Repo, error) {
|
||||
out := map[api.RepoID]*internaltypes.Repo{}
|
||||
for _, id := range ids {
|
||||
r, _ := s.Get(ctx, id) // Get doesn't error so this is OK
|
||||
out[id] = r
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
type FakeMinimalRepoStore struct {
|
||||
data map[api.RepoID]*internaltypes.Repo
|
||||
}
|
||||
|
||||
var _ minimalRepoStore = FakeMinimalRepoStore{}
|
||||
|
||||
func (f FakeMinimalRepoStore) Get(ctx context.Context, id api.RepoID) (*internaltypes.Repo, error) {
|
||||
if r, ok := f.data[id]; ok {
|
||||
return r, nil
|
||||
}
|
||||
return nil, &database.RepoNotFoundErr{ID: id}
|
||||
}
|
||||
|
||||
func (f FakeMinimalRepoStore) GetReposSetByIDs(ctx context.Context, ids ...api.RepoID) (map[api.RepoID]*internaltypes.Repo, error) {
|
||||
out := map[api.RepoID]*internaltypes.Repo{}
|
||||
for _, id := range ids {
|
||||
r, err := f.Get(ctx, id)
|
||||
if err != nil {
|
||||
if errors.Is(err, &database.RepoNotFoundErr{}) {
|
||||
continue
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
out[id] = r
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user