aboutsummaryrefslogtreecommitdiff
path: root/internal/postgres/path_test.go
diff options
context:
space:
mode:
authorJulie Qiu <julie@golang.org>2021-01-08 17:25:01 -0500
committerJulie Qiu <julie@golang.org>2021-01-11 19:32:45 +0000
commit288cdb122a1fffcb596cbf96927e50faece1ddd9 (patch)
tree9d29badc4f94e0752f8f9f357719a90d61388bfd /internal/postgres/path_test.go
parentd63c0e72efc2b7685ab053e4d87e2755944d8bd2 (diff)
downloadgo-x-pkgsite-288cdb122a1fffcb596cbf96927e50faece1ddd9.tar.xz
internal/postgres: move code from path_test.go to unit_test.go
Pure code in motion. Change-Id: Ib2615e00f27a358de2321314c19001f21c11f648 Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/282619 Reviewed-by: Jonathan Amsterdam <jba@google.com> Trust: Julie Qiu <julie@golang.org>
Diffstat (limited to 'internal/postgres/path_test.go')
-rw-r--r--internal/postgres/path_test.go422
1 files changed, 0 insertions, 422 deletions
diff --git a/internal/postgres/path_test.go b/internal/postgres/path_test.go
deleted file mode 100644
index aebd93d9..00000000
--- a/internal/postgres/path_test.go
+++ /dev/null
@@ -1,422 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package postgres
-
-import (
- "context"
- "fmt"
- "testing"
-
- "github.com/google/go-cmp/cmp"
- "github.com/google/go-cmp/cmp/cmpopts"
- "github.com/google/safehtml"
- "golang.org/x/pkgsite/internal"
- "golang.org/x/pkgsite/internal/licenses"
- "golang.org/x/pkgsite/internal/source"
- "golang.org/x/pkgsite/internal/testing/sample"
-)
-
-func TestGetUnitMeta(t *testing.T) {
- ctx, cancel := context.WithTimeout(context.Background(), testTimeout)
- defer cancel()
-
- defer ResetTestDB(testDB, t)
-
- for _, testModule := range []struct {
- module, version, packageSuffix string
- isMaster bool
- }{
- {"m.com", "v1.0.0", "a", false},
- {"m.com", "v1.0.1", "dir/a", false},
- {"m.com", "v1.1.0", "a/b", false},
- {"m.com", "v1.2.0-pre", "a", true},
- {"m.com", "v2.0.0+incompatible", "a", false},
- {"m.com/a", "v1.1.0", "b", false},
- {"m.com/b", "v2.0.0+incompatible", "a", true},
- {"cloud.google.com/go", "v0.69.0", "pubsublite", false},
- {"cloud.google.com/go/pubsublite", "v0.4.0", "", false},
- {"cloud.google.com/go", "v0.74.0", "compute/metadata", false},
- {"cloud.google.com/go/compute/metadata", "v0.0.0-20181115181204-d50f0e9b2506", "", false},
- } {
- m := sample.Module(testModule.module, testModule.version, testModule.packageSuffix)
- if err := testDB.InsertModule(ctx, m); err != nil {
- t.Fatal(err)
- }
- requested := m.Version
- if testModule.isMaster {
- requested = "master"
- }
- if err := testDB.UpsertVersionMap(ctx, &internal.VersionMap{
- ModulePath: m.ModulePath,
- RequestedVersion: requested,
- ResolvedVersion: m.Version,
- }); err != nil {
- t.Fatal(err)
- }
- }
-
- type teststruct struct {
- name string
- path, module, version string
- want *internal.UnitMeta
- }
-
- checkUnitMeta := func(ctx context.Context, test teststruct) {
- got, err := testDB.GetUnitMeta(ctx, test.path, test.module, test.version)
- if err != nil {
- t.Fatal(err)
- }
- opts := []cmp.Option{
- cmpopts.IgnoreFields(licenses.Metadata{}, "Coverage"),
- cmpopts.IgnoreFields(internal.UnitMeta{}, "HasGoMod"),
- cmp.AllowUnexported(source.Info{}, safehtml.HTML{}),
- }
- if diff := cmp.Diff(test.want, got, opts...); diff != "" {
- t.Errorf("mismatch (-want +got):\n%s", diff)
- }
- }
-
- for _, test := range []teststruct{
- {
- name: "known module and version",
- path: "m.com/a",
- module: "m.com",
- version: "v1.2.0-pre",
- want: &internal.UnitMeta{
- ModulePath: "m.com",
- Version: "v1.2.0-pre",
- Name: "a",
- IsRedistributable: true,
- },
- },
- {
- name: "unknown module, known version",
- path: "m.com/a/b",
- version: "v1.1.0",
- // The path is in two modules at v1.1.0. Prefer the longer one.
- want: &internal.UnitMeta{
- ModulePath: "m.com/a",
- Version: "v1.1.0",
- Name: "b",
- IsRedistributable: true,
- },
- },
- {
- name: "known module, unknown version",
- path: "m.com/a",
- module: "m.com",
- // Choose the latest release version.
- want: &internal.UnitMeta{
- ModulePath: "m.com",
- Version: "v1.1.0",
- IsRedistributable: true,
- },
- },
- {
- name: "unknown module and version",
- path: "m.com/a/b",
- // Select the latest release version, longest module.
- want: &internal.UnitMeta{
- ModulePath: "m.com/a",
- Version: "v1.1.0",
- Name: "b",
- IsRedistributable: true,
- },
- },
- {
- name: "module",
- path: "m.com",
- // Select the latest version of the module.
- want: &internal.UnitMeta{
- ModulePath: "m.com",
- Version: "v1.1.0",
- IsRedistributable: true,
- },
- },
- {
- name: "longest module",
- path: "m.com/a",
- version: "v1.1.0",
- // Prefer module m/a over module m, directory a.
- want: &internal.UnitMeta{
- ModulePath: "m.com/a",
- Version: "v1.1.0",
- IsRedistributable: true,
- },
- },
- {
- name: "directory",
- path: "m.com/dir",
- want: &internal.UnitMeta{
- ModulePath: "m.com",
- Version: "v1.0.1",
- IsRedistributable: true,
- },
- },
- {
- name: "module at master version",
- path: "m.com",
- version: "master",
- want: &internal.UnitMeta{
- ModulePath: "m.com",
- Version: "v1.2.0-pre",
- IsRedistributable: true,
- },
- },
- {
- name: "package at master version",
- path: "m.com/a",
- version: "master",
- want: &internal.UnitMeta{
- ModulePath: "m.com",
- Version: "v1.2.0-pre",
- Name: "a",
- IsRedistributable: true,
- },
- },
- {
- name: "incompatible module",
- path: "m.com/b",
- version: "master",
- want: &internal.UnitMeta{
- ModulePath: "m.com/b",
- Version: "v2.0.0+incompatible",
- IsRedistributable: true,
- },
- },
- {
- name: "prefer pubsublite nested module",
- path: "cloud.google.com/go/pubsublite",
- want: &internal.UnitMeta{
- ModulePath: "cloud.google.com/go/pubsublite",
- Name: "pubsublite",
- Version: "v0.4.0",
- IsRedistributable: true,
- },
- },
- {
- name: "prefer compute metadata in main module",
- path: "cloud.google.com/go/compute/metadata",
- want: &internal.UnitMeta{
- ModulePath: "cloud.google.com/go",
- Name: "metadata",
- Version: "v0.74.0",
- IsRedistributable: true,
- },
- },
- } {
- t.Run(test.name, func(t *testing.T) {
- if test.module == "" {
- test.module = internal.UnknownModulePath
- }
- if test.version == "" {
- test.version = internal.LatestVersion
- }
- test.want = sample.UnitMeta(
- test.path,
- test.want.ModulePath,
- test.want.Version,
- test.want.Name,
- test.want.IsRedistributable,
- )
- test.want.CommitTime = sample.CommitTime
- checkUnitMeta(ctx, test)
- })
- }
-}
-
-func TestGetUnitMetaBypass(t *testing.T) {
- ctx, cancel := context.WithTimeout(context.Background(), testTimeout)
- defer cancel()
-
- defer ResetTestDB(testDB, t)
- bypassDB := NewBypassingLicenseCheck(testDB.db)
-
- for _, testModule := range []struct {
- module, version, packageSuffix string
- isMaster bool
- }{
- {"m.com", "v1.0.0", "a", false},
- {"m.com", "v1.0.1", "dir/a", false},
- {"m.com", "v1.1.0", "a/b", false},
- {"m.com", "v1.2.0-pre", "a", true},
- {"m.com", "v2.0.0+incompatible", "a", false},
- {"m.com/a", "v1.1.0", "b", false},
- {"m.com/b", "v2.0.0+incompatible", "a", true},
- } {
- m := sample.Module(testModule.module, testModule.version, testModule.packageSuffix)
- makeModuleNonRedistributable(m)
-
- if err := bypassDB.InsertModule(ctx, m); err != nil {
- t.Fatal(err)
- }
- requested := m.Version
- if testModule.isMaster {
- requested = "master"
- }
- if err := bypassDB.UpsertVersionMap(ctx, &internal.VersionMap{
- ModulePath: m.ModulePath,
- RequestedVersion: requested,
- ResolvedVersion: m.Version,
- }); err != nil {
- t.Fatal(err)
- }
- }
-
- for _, bypassLicenseCheck := range []bool{false, true} {
- for _, test := range []struct {
- name string
- path, module, version string
- want *internal.UnitMeta
- }{
- {
- name: "known module and version",
- path: "m.com/a",
- module: "m.com",
- version: "v1.2.0-pre",
- want: &internal.UnitMeta{
- ModulePath: "m.com",
- Version: "v1.2.0-pre",
- Name: "a",
- IsRedistributable: bypassLicenseCheck,
- },
- },
- {
- name: "unknown module, known version",
- path: "m.com/a/b",
- version: "v1.1.0",
- // The path is in two modules at v1.1.0. Prefer the longer one.
- want: &internal.UnitMeta{
- ModulePath: "m.com/a",
- Version: "v1.1.0",
- Name: "b",
- IsRedistributable: bypassLicenseCheck,
- },
- },
- {
- name: "known module, unknown version",
- path: "m.com/a",
- module: "m.com",
- // Choose the latest release version.
- want: &internal.UnitMeta{
- ModulePath: "m.com",
- Version: "v1.1.0",
- IsRedistributable: bypassLicenseCheck,
- },
- },
- {
- name: "unknown module and version",
- path: "m.com/a/b",
- // Select the latest release version, longest module.
- want: &internal.UnitMeta{
- ModulePath: "m.com/a",
- Version: "v1.1.0",
- Name: "b",
- IsRedistributable: bypassLicenseCheck,
- },
- },
- {
- name: "module",
- path: "m.com",
- // Select the latest version of the module.
- want: &internal.UnitMeta{
- ModulePath: "m.com",
- Version: "v1.1.0",
- IsRedistributable: bypassLicenseCheck,
- },
- },
- {
- name: "longest module",
- path: "m.com/a",
- version: "v1.1.0",
- // Prefer module m/a over module m, directory a.
- want: &internal.UnitMeta{
- ModulePath: "m.com/a",
- Version: "v1.1.0",
- IsRedistributable: bypassLicenseCheck,
- },
- },
- {
- name: "directory",
- path: "m.com/dir",
- want: &internal.UnitMeta{
- ModulePath: "m.com",
- Version: "v1.0.1",
- IsRedistributable: bypassLicenseCheck,
- },
- },
- {
- name: "module at master version",
- path: "m.com",
- version: "master",
- want: &internal.UnitMeta{
- ModulePath: "m.com",
- Version: "v1.2.0-pre",
- IsRedistributable: bypassLicenseCheck,
- },
- },
- {
- name: "package at master version",
- path: "m.com/a",
- version: "master",
- want: &internal.UnitMeta{
- ModulePath: "m.com",
- Version: "v1.2.0-pre",
- Name: "a",
- IsRedistributable: bypassLicenseCheck,
- },
- },
- {
- name: "incompatible module",
- path: "m.com/b",
- version: "master",
- want: &internal.UnitMeta{
- ModulePath: "m.com/b",
- Version: "v2.0.0+incompatible",
- IsRedistributable: bypassLicenseCheck,
- },
- },
- } {
- name := fmt.Sprintf("bypass %v %s", bypassLicenseCheck, test.name)
- t.Run(name, func(t *testing.T) {
- if test.module == "" {
- test.module = internal.UnknownModulePath
- }
- if test.version == "" {
- test.version = internal.LatestVersion
- }
- test.want = sample.UnitMeta(
- test.path,
- test.want.ModulePath,
- test.want.Version,
- test.want.Name,
- test.want.IsRedistributable,
- )
- test.want.CommitTime = sample.CommitTime
-
- var db *DB
-
- if bypassLicenseCheck {
- db = bypassDB
- } else {
- db = testDB
- }
-
- got, err := db.GetUnitMeta(ctx, test.path, test.module, test.version)
- if err != nil {
- t.Fatal(err)
- }
- opts := []cmp.Option{
- cmpopts.IgnoreFields(licenses.Metadata{}, "Coverage"),
- cmpopts.IgnoreFields(internal.UnitMeta{}, "HasGoMod"),
- cmp.AllowUnexported(source.Info{}, safehtml.HTML{}),
- }
- if diff := cmp.Diff(test.want, got, opts...); diff != "" {
- t.Errorf("mismatch (-want +got):\n%s", diff)
- }
- })
- }
- }
-}