internal/postgres: use MustInsertModuleLatest

For most internal/postgres tests, update latest-version information
when we insert a module.

That is more like what actually happens on the worker, and some
features now rely on it, so we should do it everywhere.

Some tests still use a custom go.mod file, so we can't switch to
MustInsertModuleLatest for those, because it uses a minimal go.mod
file.

Change-Id: Ie5030aee4ed9c837931fddb8757e37bf6373a8c7
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/307871
Trust: Jonathan Amsterdam <jba@google.com>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
Reviewed-by: Julie Qiu <julie@golang.org>
TryBot-Result: kokoro <noreply+kokoro@google.com>
This commit is contained in:
Jonathan Amsterdam 2021-04-07 12:43:30 -04:00
Родитель 668263d32c
Коммит b3344a7197
13 изменённых файлов: 53 добавлений и 55 удалений

Просмотреть файл

@ -26,7 +26,7 @@ func TestDeletePseudoversionsExcept(t *testing.T) {
"v0.0.0-20190904010203-89fb59e2e920",
}
for _, v := range versions {
MustInsertModule(ctx, t, testDB, sample.Module(sample.ModulePath, v, ""))
MustInsertModuleLatest(ctx, t, testDB, sample.Module(sample.ModulePath, v, ""))
}
if err := testDB.DeletePseudoversionsExcept(ctx, sample.ModulePath, pseudo1); err != nil {
t.Fatal(err)

Просмотреть файл

@ -73,7 +73,7 @@ func TestGetNestedModules(t *testing.T) {
defer release()
for _, v := range test.modules {
MustInsertModule(ctx, t, testDB, v)
MustInsertModuleLatest(ctx, t, testDB, v)
}
gotModules, err := testDB.GetNestedModules(ctx, test.path)
@ -120,7 +120,7 @@ func TestGetNestedModules_Excluded(t *testing.T) {
},
}
for _, m := range test.modules {
MustInsertModule(ctx, t, testDB, m)
MustInsertModuleLatest(ctx, t, testDB, m)
}
if err := testDB.InsertExcludedPrefix(ctx, "cloud.google.com/go/storage", "postgres", "test"); err != nil {
t.Fatal(err)
@ -185,7 +185,7 @@ func TestPostgres_GetModuleInfo(t *testing.T) {
for _, test := range testCases {
t.Run(test.name, func(t *testing.T) {
for _, v := range test.modules {
MustInsertModule(ctx, t, testDB, v)
MustInsertModuleLatest(ctx, t, testDB, v)
}
gotVI, err := testDB.GetModuleInfo(ctx, test.path, test.version)
@ -270,7 +270,7 @@ func TestGetImportedBy(t *testing.T) {
defer release()
for _, v := range testModules {
MustInsertModule(ctx, t, testDB, v)
MustInsertModuleLatest(ctx, t, testDB, v)
}
gotImportedBy, err := testDB.GetImportedBy(ctx, test.path, test.modulePath, 100)

Просмотреть файл

@ -80,9 +80,9 @@ func TestInsertModule(t *testing.T) {
testDB, release := acquire(t)
defer release()
MustInsertModule(ctx, t, testDB, test.module)
MustInsertModuleLatest(ctx, t, testDB, test.module)
// Test that insertion of duplicate primary key won't fail.
MustInsertModule(ctx, t, testDB, test.module)
MustInsertModuleLatest(ctx, t, testDB, test.module)
checkModule(ctx, t, testDB, test.module)
})
}
@ -158,7 +158,7 @@ func TestInsertModuleLicenseCheck(t *testing.T) {
mod.IsRedistributable = false
mod.Units[0].IsRedistributable = false
MustInsertModule(ctx, t, db, mod)
MustInsertModuleLatest(ctx, t, db, mod)
// New model
u, err := db.GetUnit(ctx, newUnitMeta(mod.ModulePath, mod.ModulePath, mod.Version), internal.AllFields)
@ -190,7 +190,7 @@ func TestUpsertModule(t *testing.T) {
m := sample.Module("upsert.org", "v1.2.3", "dir/p")
// Insert the module.
MustInsertModule(ctx, t, testDB, m)
MustInsertModuleLatest(ctx, t, testDB, m)
// Change the module, and re-insert.
m.IsRedistributable = !m.IsRedistributable
lic := *m.Licenses[0]
@ -198,7 +198,7 @@ func TestUpsertModule(t *testing.T) {
sample.ReplaceLicense(m, &lic)
m.Units[0].Readme.Contents += " and more"
MustInsertModule(ctx, t, testDB, m)
MustInsertModuleLatest(ctx, t, testDB, m)
// The changes should have been saved.
checkModule(ctx, t, testDB, m)
}
@ -303,7 +303,7 @@ func TestInsertModuleNewCoverage(t *testing.T) {
Contents: []byte(`Lorem Ipsum`),
},
}
MustInsertModule(ctx, t, testDB, m)
MustInsertModuleLatest(ctx, t, testDB, m)
u, err := testDB.GetUnit(ctx, newUnitMeta(m.ModulePath, m.ModulePath, m.Version), internal.AllFields)
if err != nil {
t.Fatal(err)
@ -338,7 +338,7 @@ func TestPostgres_ReadAndWriteModuleOtherColumns(t *testing.T) {
seriesPath: "github.com/user/repo/path",
}
MustInsertModule(ctx, t, testDB, v)
MustInsertModuleLatest(ctx, t, testDB, v)
query := `
SELECT
sort_version, series_path
@ -450,7 +450,7 @@ func TestDeleteModule(t *testing.T) {
v := sample.DefaultModule()
MustInsertModule(ctx, t, testDB, v)
MustInsertModuleLatest(ctx, t, testDB, v)
if _, err := testDB.GetModuleInfo(ctx, v.ModulePath, v.Version); err != nil {
t.Fatal(err)
}
@ -513,7 +513,7 @@ func TestPostgres_NewerAlternative(t *testing.T) {
t.Fatal(err)
}
m := sample.Module(mvs.ModulePath, okVersion, "p")
MustInsertModule(ctx, t, testDB, m)
MustInsertModuleLatest(ctx, t, testDB, m)
if _, _, found := GetFromSearchDocuments(ctx, t, testDB, m.Packages()[0].Path); found {
t.Fatal("found package after inserting")
}

Просмотреть файл

@ -44,8 +44,8 @@ func TestGetLicenses(t *testing.T) {
ctx, cancel := context.WithTimeout(context.Background(), testTimeout*5)
defer cancel()
MustInsertModule(ctx, t, testDB, testModule)
MustInsertModule(ctx, t, testDB, stdlibModule)
MustInsertModuleLatest(ctx, t, testDB, testModule)
MustInsertModuleLatest(ctx, t, testDB, stdlibModule)
for _, test := range []struct {
err error
name, fullPath, modulePath, version string
@ -142,7 +142,7 @@ func TestGetModuleLicenses(t *testing.T) {
})
}
MustInsertModule(ctx, t, testDB, testModule)
MustInsertModuleLatest(ctx, t, testDB, testModule)
var moduleID int
query := `
@ -176,7 +176,7 @@ func TestGetLicensesBypass(t *testing.T) {
// Insert with non-redistributable license contents.
m := nonRedistributableModule()
MustInsertModule(ctx, t, bypassDB, m)
MustInsertModuleLatest(ctx, t, bypassDB, m)
// check reads and the second license in the module and compares it with want.
check := func(bypass bool, want *licenses.License) {

Просмотреть файл

@ -72,7 +72,7 @@ func TestGetLatestMajorPathForV1Path(t *testing.T) {
for _, mv := range test.modvers {
mod, ver, _ := parseModuleVersionPackage(mv)
m := sample.Module(mod, ver, suffix)
MustInsertModule(ctx, t, testDB, m)
MustInsertModuleLatest(ctx, t, testDB, m)
}
t.Run("module", func(t *testing.T) {
check(test.v1ModulePath, test.wantModulePath)

Просмотреть файл

@ -297,7 +297,7 @@ func TestSearch(t *testing.T) {
testDB, release := acquire(t)
defer release()
for _, m := range test.modules {
MustInsertModule(ctx, t, testDB, m)
MustInsertModuleLatest(ctx, t, testDB, m)
}
if _, err := testDB.UpdateSearchDocumentsImportedByCount(ctx); err != nil {
t.Fatal(err)
@ -385,7 +385,7 @@ func TestSearchErrors(t *testing.T) {
defer release()
modules := importGraph("foo.com/A", "", 0)
for _, v := range modules {
MustInsertModule(ctx, t, testDB, v)
MustInsertModuleLatest(ctx, t, testDB, v)
}
if _, err := testDB.UpdateSearchDocumentsImportedByCount(ctx); err != nil {
t.Fatal(err)
@ -550,7 +550,7 @@ func TestInsertSearchDocumentAndSearch(t *testing.T) {
pkg.Licenses = sample.LicenseMetadata()
m := sample.Module(modulePath, sample.VersionString)
sample.AddUnit(m, pkg)
MustInsertModule(ctx, t, testDB, m)
MustInsertModuleLatest(ctx, t, testDB, m)
}
if test.limit < 1 {
@ -606,7 +606,7 @@ func TestSearchPenalties(t *testing.T) {
v.Packages()[0].IsRedistributable = m.redist
v.IsRedistributable = m.redist
v.HasGoMod = m.hasGoMod
MustInsertModule(ctx, t, testDB, v)
MustInsertModuleLatest(ctx, t, testDB, v)
}
for method, searcher := range searchers {
@ -640,7 +640,7 @@ func TestExcludedFromSearch(t *testing.T) {
// Insert a module with two packages.
const domain = "exclude.com"
sm := sample.Module(domain, "v1.2.3", "pkg", "ex/clude")
MustInsertModule(ctx, t, testDB, sm)
MustInsertModuleLatest(ctx, t, testDB, sm)
// Exclude a prefix that matches one of the packages.
if err := testDB.InsertExcludedPrefix(ctx, domain+"/ex", "no user", "no reason"); err != nil {
t.Fatal(err)
@ -669,7 +669,7 @@ func TestSearchBypass(t *testing.T) {
bypassDB := NewBypassingLicenseCheck(testDB.db)
m := nonRedistributableModule()
MustInsertModule(ctx, t, bypassDB, m)
MustInsertModuleLatest(ctx, t, bypassDB, m)
for _, test := range []struct {
db *DB
@ -703,7 +703,7 @@ func TestSearchLicenseDedup(t *testing.T) {
FilePath: "pkg/LICENSE.md",
},
})
MustInsertModule(ctx, t, testDB, m)
MustInsertModuleLatest(ctx, t, testDB, m)
got, err := testDB.Search(ctx, m.ModulePath, 10, 0, 100)
if err != nil {
t.Fatal(err)
@ -791,9 +791,7 @@ func TestUpsertSearchDocument(t *testing.T) {
m := sample.Module(sample.ModulePath, version, "A")
m.HasGoMod = gomod
m.Packages()[0].Documentation[0].Synopsis = "syn-" + version
lmv := addLatest(ctx, t, testDB, m.ModulePath, m.Version, "")
MustInsertModule(ctx, t, testDB, m)
MustInsertModuleLMV(ctx, t, testDB, m, lmv)
MustInsertModuleLatest(ctx, t, testDB, m)
}
const v1 = "v1.0.0"
@ -846,7 +844,7 @@ func TestUpsertSearchDocumentVersionHasGoMod(t *testing.T) {
for _, hasGoMod := range []bool{true, false} {
m := sample.Module(fmt.Sprintf("foo.com/%t", hasGoMod), "v1.2.3", "bar")
m.HasGoMod = hasGoMod
MustInsertModule(ctx, t, testDB, m)
MustInsertModuleLatest(ctx, t, testDB, m)
}
for _, hasGoMod := range []bool{true, false} {
@ -877,7 +875,7 @@ func TestUpdateSearchDocumentsImportedByCount(t *testing.T) {
for _, imp := range imports {
pkg.Imports = append(pkg.Imports, fmt.Sprintf("mod.com/%s/%[1]s", imp))
}
MustInsertModule(ctx, t, db, m)
MustInsertModuleLatest(ctx, t, db, m)
return m
}
@ -984,7 +982,7 @@ func TestUpdateSearchDocumentsImportedByCount(t *testing.T) {
// It should not get inserted into search_documents.
mAlt := sample.Module(alternativeModulePath, "v1.0.0", "A")
mAlt.Packages()[0].Imports = []string{"B"}
MustInsertModule(ctx, t, testDB, mAlt)
MustInsertModuleLatest(ctx, t, testDB, mAlt)
// Although B is imported by two packages, only one is in search_documents, so its
// imported-by count is 1.
updateImportedByCount(testDB)
@ -1015,7 +1013,7 @@ func TestGetPackagesForSearchDocumentUpsert(t *testing.T) {
moduleN := nonRedistributableModule()
bypassDB := NewBypassingLicenseCheck(testDB.db)
for _, m := range []*internal.Module{moduleA, moduleN} {
MustInsertModule(ctx, t, bypassDB, m)
MustInsertModuleLatest(ctx, t, bypassDB, m)
}
// We are asking for all packages in search_documents updated before now, which is
@ -1154,7 +1152,7 @@ func TestDeleteOlderVersionFromSearch(t *testing.T) {
}
insert := func(m module) {
sm := sample.Module(m.path, m.version, m.pkg)
MustInsertModule(ctx, t, testDB, sm)
MustInsertModuleLatest(ctx, t, testDB, sm)
}
check := func(m module) {

Просмотреть файл

@ -46,7 +46,7 @@ func TestGetStdlibPaths(t *testing.T) {
for _, p := range m.Packages() {
p.Imports = nil
}
MustInsertModule(ctx, t, testDB, m)
MustInsertModuleLatest(ctx, t, testDB, m)
}
got, err := testDB.GetStdlibPathsWithSuffix(ctx, "json")

Просмотреть файл

@ -38,7 +38,7 @@ func TestInsertSymbolNamesAndHistory(t *testing.T) {
sample.Type,
}
mod.Packages()[0].Documentation[0].API = api
MustInsertModule(ctx, t, testDB, mod)
MustInsertModuleLatest(ctx, t, testDB, mod)
got, err := collectStrings(ctx, testDB.db, `SELECT name FROM symbol_names;`)
if err != nil {
@ -86,7 +86,7 @@ func TestInsertSymbolHistory_Basic(t *testing.T) {
sample.Type,
}
mod.Packages()[0].Documentation[0].API = api
MustInsertModule(ctx, t, testDB, mod)
MustInsertModuleLatest(ctx, t, testDB, mod)
compareUnitSymbols(ctx, t, testDB, mod.Packages()[0].Path, mod.ModulePath, mod.Version,
map[internal.BuildContext][]*internal.Symbol{internal.BuildContextAll: api})
@ -136,9 +136,9 @@ func TestInsertSymbolHistory_MultiVersions(t *testing.T) {
mod12 := moduleWithSymbols(t, "v1.2.0", []*internal.Symbol{&typB})
// Insert most recent, then oldest, then middle version.
MustInsertModule(ctx, t, testDB, mod12)
MustInsertModule(ctx, t, testDB, mod10)
MustInsertModule(ctx, t, testDB, mod11)
MustInsertModuleLatest(ctx, t, testDB, mod12)
MustInsertModuleLatest(ctx, t, testDB, mod10)
MustInsertModuleLatest(ctx, t, testDB, mod11)
createwant := func(docs []*internal.Documentation) map[internal.BuildContext][]*internal.Symbol {
want := map[internal.BuildContext][]*internal.Symbol{}
@ -254,9 +254,9 @@ func TestInsertSymbolHistory_MultiGOOS(t *testing.T) {
mod12.Packages()[0].Documentation = docs2
// Insert most recent, then oldest, then middle version.
MustInsertModule(ctx, t, testDB, mod12)
MustInsertModule(ctx, t, testDB, mod10)
MustInsertModule(ctx, t, testDB, mod11)
MustInsertModuleLatest(ctx, t, testDB, mod12)
MustInsertModuleLatest(ctx, t, testDB, mod10)
MustInsertModuleLatest(ctx, t, testDB, mod11)
createwant := func(docs []*internal.Documentation) map[internal.BuildContext][]*internal.Symbol {
want := map[internal.BuildContext][]*internal.Symbol{}

Просмотреть файл

@ -303,7 +303,7 @@ func InsertSampleDirectoryTree(ctx context.Context, t *testing.T, testDB *DB) {
},
} {
m := sample.Module(data.modulePath, data.version, data.suffixes...)
MustInsertModule(ctx, t, testDB, m)
MustInsertModuleLatest(ctx, t, testDB, m)
}
}

Просмотреть файл

@ -332,7 +332,7 @@ func TestGetUnitMetaBypass(t *testing.T) {
m := sample.Module(testModule.module, testModule.version, testModule.packageSuffix)
makeModuleNonRedistributable(m)
MustInsertModule(ctx, t, bypassDB, m)
MustInsertModuleLatest(ctx, t, bypassDB, m)
requested := m.Version
if testModule.isMaster {
requested = "master"
@ -711,7 +711,7 @@ func TestGetUnit(t *testing.T) {
Filepath: "PKG_README.md",
Contents: "pkg readme",
}
MustInsertModule(ctx, t, testDB, m)
MustInsertModuleLatest(ctx, t, testDB, m)
// Add a module that has documentation for two Go build contexts.
m = sample.Module("a.com/twodoc", "v1.2.3", "p")
@ -721,7 +721,7 @@ func TestGetUnit(t *testing.T) {
sample.Documentation("windows", "amd64", `package p; var W int`),
}
pkg.Documentation = docs2
MustInsertModule(ctx, t, testDB, m)
MustInsertModuleLatest(ctx, t, testDB, m)
for _, test := range []struct {
name, path, modulePath, version string
@ -893,7 +893,7 @@ func TestGetUnit_SubdirectoriesShowNonRedistPackages(t *testing.T) {
m := sample.DefaultModule()
m.IsRedistributable = false
m.Packages()[0].IsRedistributable = false
MustInsertModule(ctx, t, testDB, m)
MustInsertModuleLatest(ctx, t, testDB, m)
}
func TestGetUnitFieldSet(t *testing.T) {
@ -910,7 +910,7 @@ func TestGetUnitFieldSet(t *testing.T) {
// Add a module that has READMEs in a directory and a package.
m := sample.Module("a.com/m", "v1.2.3", "dir/p")
m.Packages()[0].Readme = readme
MustInsertModule(ctx, t, testDB, m)
MustInsertModuleLatest(ctx, t, testDB, m)
cleanFields := func(u *internal.Unit, fields internal.FieldSet) {
// Add/remove fields based on the FieldSet specified.
@ -1034,7 +1034,7 @@ func TestGetUnitBypass(t *testing.T) {
bypassDB := NewBypassingLicenseCheck(testDB.db)
m := nonRedistributableModule()
MustInsertModule(ctx, t, bypassDB, m)
MustInsertModuleLatest(ctx, t, bypassDB, m)
for _, test := range []struct {
db *DB

Просмотреть файл

@ -23,7 +23,7 @@ func TestReadAndWriteVersionMap(t *testing.T) {
defer cancel()
m := sample.Module("golang.org/x/tools", sample.VersionString, "go/packages")
MustInsertModule(ctx, t, testDB, m)
MustInsertModuleLatest(ctx, t, testDB, m)
vm := &internal.VersionMap{
ModulePath: m.ModulePath,

Просмотреть файл

@ -434,7 +434,7 @@ func TestGetLatestGoodVersion(t *testing.T) {
t.Fatal(err)
}
for _, v := range []string{"v2.0.0+incompatible", "v1.4.0-pre", "v1.3.0", "v1.2.0", "v1.1.0"} {
MustInsertModule(ctx, t, testDB, sample.Module(modulePath, v, "pkg"))
MustInsertModuleLatest(ctx, t, testDB, sample.Module(modulePath, v, "pkg"))
}
for _, test := range []struct {

Просмотреть файл

@ -223,7 +223,7 @@ func TestUpsertModuleVersionStates(t *testing.T) {
defer release()
if test.insertModuleBeforeMVS && test.shouldInsertModule {
MustInsertModule(ctx, t, testDB, m)
MustInsertModuleLatest(ctx, t, testDB, m)
}
mvsu := &ModuleVersionStateForUpsert{
@ -250,7 +250,7 @@ func TestUpsertModuleVersionStates(t *testing.T) {
}
if !test.insertModuleBeforeMVS && test.shouldInsertModule {
MustInsertModule(ctx, t, testDB, m)
MustInsertModuleLatest(ctx, t, testDB, m)
}
if !test.shouldInsertModule {
@ -349,7 +349,7 @@ func TestHasGoMod(t *testing.T) {
if test.modulesHasRow {
m := sample.Module(modulePath, version, "")
m.HasGoMod = test.modulesValue
MustInsertModule(ctx, t, testDB, m)
MustInsertModuleLatest(ctx, t, testDB, m)
}
got, err := testDB.HasGoMod(ctx, modulePath, version)