diff options
| author | Jonathan Amsterdam <jba@google.com> | 2021-04-06 08:33:20 -0400 |
|---|---|---|
| committer | Jonathan Amsterdam <jba@google.com> | 2021-04-06 16:49:01 +0000 |
| commit | ee71ea76e32d834eebc52a8dfb6f96c7b393e554 (patch) | |
| tree | 82ca4203eede1b891332494413e0e51e8ff15d63 /internal/postgres | |
| parent | c6c01755cd7185503216bd48ce90911095405dc3 (diff) | |
| download | go-x-pkgsite-ee71ea76e32d834eebc52a8dfb6f96c7b393e554.tar.xz | |
internal/postgres: clarify TestGetLatestMajorPathForV1Path
I found this test hard to understand because it was doing so much to
the test inputs. I brought the test inputs and expected values closer
to the actual arguments and return values of the function under test.
Change-Id: I6d72033e21eddfcc78f5803563c4bbf9e2e19356
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/307392
Trust: Jonathan Amsterdam <jba@google.com>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
TryBot-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jamal Carvalho <jamal@golang.org>
Reviewed-by: Julie Qiu <julie@golang.org>
Diffstat (limited to 'internal/postgres')
| -rw-r--r-- | internal/postgres/path.go | 2 | ||||
| -rw-r--r-- | internal/postgres/path_test.go | 82 |
2 files changed, 31 insertions, 53 deletions
diff --git a/internal/postgres/path.go b/internal/postgres/path.go index 099fc798..61df19d5 100644 --- a/internal/postgres/path.go +++ b/internal/postgres/path.go @@ -19,7 +19,7 @@ import ( ) // GetLatestMajorPathForV1Path reports the latest unit path in the series for -// the given v1path. +// the given v1path. It also returns the major version for that path. func (db *DB) GetLatestMajorPathForV1Path(ctx context.Context, v1path string) (_ string, _ int, err error) { defer derrors.WrapStack(&err, "DB.GetLatestPathForV1Path(ctx, %q)", v1path) q := ` diff --git a/internal/postgres/path_test.go b/internal/postgres/path_test.go index f169f877..9600f29f 100644 --- a/internal/postgres/path_test.go +++ b/internal/postgres/path_test.go @@ -9,8 +9,6 @@ import ( "database/sql" "errors" "fmt" - "strconv" - "strings" "testing" "golang.org/x/pkgsite/internal/database" @@ -21,80 +19,60 @@ func TestGetLatestMajorPathForV1Path(t *testing.T) { t.Parallel() ctx := context.Background() - checkLatest := func(t *testing.T, db *DB, versions []string, v1path string, version, suffix string) { - t.Helper() - gotPath, gotVer, err := db.GetLatestMajorPathForV1Path(ctx, v1path) - if err != nil { - t.Fatal(err) - } - want := sample.ModulePath - if suffix != "" { - want = want + "/" + suffix - } - var wantVer int - if version == "" { - wantVer = 1 - } else { - wantVer, err = strconv.Atoi(strings.TrimPrefix(version, "v")) - if err != nil { - t.Fatal(err) - } - } - if gotPath != want || gotVer != wantVer { - t.Errorf("GetLatestMajorPathForV1Path(%q) = %q, %d, want %q, %d", v1path, gotPath, gotVer, want, wantVer) - } - } - for _, test := range []struct { - name, want string - versions []string + name string + v1ModulePath string + modvers []string + wantModulePath string + wantVersion int }{ { "want highest major version", - "v11", - []string{"", "v2", "v11"}, + "m.com", + []string{"m.com@v1.0.0", "m.com/v2@v2.0.0", "m.com/v11@v11.0.0"}, + "m.com/v11", 11, }, { "only v1 version", - "", - []string{""}, + "m.com", + []string{"m.com@v1.0.0"}, + "m.com", 1, }, { "no v1 version", - "v4", - []string{"v4"}, + "m.com", + []string{"m.com/v4@v4.0.0"}, + "m.com/v4", 4, }, } { t.Run(test.name, func(t *testing.T) { testDB, release := acquire(t) defer release() - suffix := "a/b/c" + const suffix = "a/b/c" - for _, v := range test.versions { - modpath := sample.ModulePath - if v != "" { - modpath = modpath + "/" + v + check := func(v1path, wantPath string) { + t.Helper() + gotPath, gotVer, err := testDB.GetLatestMajorPathForV1Path(ctx, v1path) + if err != nil { + t.Fatal(err) } - if v == "" { - v = sample.VersionString - } else { - v = v + ".0.0" + if gotPath != wantPath || gotVer != test.wantVersion { + t.Errorf("GetLatestMajorPathForV1Path(%q) = %q, %d, want %q, %d", + v1path, gotPath, gotVer, wantPath, test.wantVersion) } - m := sample.Module(modpath, v, suffix) + } + + for _, mv := range test.modvers { + mod, ver, _ := parseModuleVersionPackage(mv) + m := sample.Module(mod, ver, suffix) MustInsertModule(ctx, t, testDB, m) } t.Run("module", func(t *testing.T) { - v1path := sample.ModulePath - checkLatest(t, testDB, test.versions, v1path, test.want, test.want) + check(test.v1ModulePath, test.wantModulePath) }) t.Run("package", func(t *testing.T) { - want := test.want - if test.want != "" { - want += "/" - } - v1path := sample.ModulePath + "/" + suffix - checkLatest(t, testDB, test.versions, v1path, test.want, want+suffix) + check(test.v1ModulePath+"/"+suffix, test.wantModulePath+"/"+suffix) }) }) } |
