diff --git a/cmd/dep/glide_importer_test.go b/cmd/dep/glide_importer_test.go index bb138ce308..630b7814b7 100644 --- a/cmd/dep/glide_importer_test.go +++ b/cmd/dep/glide_importer_test.go @@ -34,6 +34,206 @@ func newTestContext(h *test.Helper) *dep.Ctx { } } +func TestGlideConfig_Convert(t *testing.T) { + testCases := map[string]struct { + yaml glideYaml + lock *glideLock + wantConvertErr bool + matchPairedVersion bool + projectRoot gps.ProjectRoot + wantSourceRepo string + wantConstraint string + wantRevision gps.Revision + wantVersion string + wantLockCount int + wantIgnoreCount int + wantIgnoredPackages []string + }{ + "project": { + yaml: glideYaml{ + Imports: []glidePackage{ + { + Name: "github.com/sdboyer/deptest", + Repository: "https://github.com/sdboyer/deptest.git", + Reference: "v1.0.0", + }, + }, + }, + lock: &glideLock{ + Imports: []glideLockedPackage{ + { + Name: "github.com/sdboyer/deptest", + Repository: "https://github.com/sdboyer/deptest.git", + Reference: "ff2948a2ac8f538c4ecd55962e919d1e13e74baf", + }, + }, + }, + projectRoot: "github.com/sdboyer/deptest", + wantSourceRepo: "https://github.com/sdboyer/deptest.git", + matchPairedVersion: true, + wantConstraint: "^1.0.0", + wantLockCount: 1, + wantRevision: gps.Revision("ff2948a2ac8f538c4ecd55962e919d1e13e74baf"), + wantVersion: "v1.0.0", + }, + "test project": { + yaml: glideYaml{ + Imports: []glidePackage{ + { + Name: "github.com/sdboyer/deptest", + Reference: "v1.0.0", + }, + }, + }, + lock: &glideLock{ + Imports: []glideLockedPackage{ + { + Name: "github.com/sdboyer/deptest", + Reference: "ff2948a2ac8f538c4ecd55962e919d1e13e74baf", + }, + }, + }, + projectRoot: "github.com/sdboyer/deptest", + wantLockCount: 1, + wantConstraint: "^1.0.0", + wantVersion: "v1.0.0", + }, + "with ignored package": { + yaml: glideYaml{ + Ignores: []string{"github.com/sdboyer/deptest"}, + }, + projectRoot: "github.com/sdboyer/deptest", + wantIgnoreCount: 1, + wantIgnoredPackages: []string{"github.com/sdboyer/deptest"}, + }, + "with exclude dir": { + yaml: glideYaml{ + ExcludeDirs: []string{"samples"}, + }, + projectRoot: testGlideProjectRoot, + wantIgnoreCount: 1, + wantIgnoredPackages: []string{"github.com/golang/notexist/samples"}, + }, + "exclude dir ignores mismatched package name": { + yaml: glideYaml{ + Name: "github.com/golang/mismatched-package-name", + ExcludeDirs: []string{"samples"}, + }, + projectRoot: testGlideProjectRoot, + wantIgnoreCount: 1, + wantIgnoredPackages: []string{"github.com/golang/notexist/samples"}, + }, + "bad input, empty package name": { + yaml: glideYaml{ + Imports: []glidePackage{{Name: ""}}, + }, + projectRoot: testGlideProjectRoot, + wantConvertErr: true, + }, + } + + h := test.NewHelper(t) + defer h.Cleanup() + + ctx := newTestContext(h) + sm, err := ctx.SourceManager() + h.Must(err) + defer sm.Release() + + for name, testCase := range testCases { + t.Run(name, func(t *testing.T) { + g := newGlideImporter(discardLogger, true, sm) + g.yaml = testCase.yaml + + if testCase.lock != nil { + g.lock = testCase.lock + } + + manifest, lock, err := g.convert(testCase.projectRoot) + if err != nil { + if testCase.wantConvertErr { + return + } + + t.Fatal(err) + } + + // Lock checks. + if lock != nil && len(lock.P) != testCase.wantLockCount { + t.Fatalf("Expected lock to have %d project(s), got %d", + testCase.wantLockCount, + len(lock.P)) + } + + // Ignored projects checks. + if len(manifest.Ignored) != testCase.wantIgnoreCount { + t.Fatalf("Expected manifest to have %d ignored project(s), got %d", + testCase.wantIgnoreCount, + len(manifest.Ignored)) + } + + if !equalSlice(manifest.Ignored, testCase.wantIgnoredPackages) { + t.Fatalf("Expected manifest to have ignore %s, got %s", + strings.Join(testCase.wantIgnoredPackages, ", "), + strings.Join(manifest.Ignored, ", ")) + } + + // Constraints checks below. Skip if there is no want constraint. + if testCase.wantConstraint == "" { + return + } + + d, ok := manifest.Constraints[testCase.projectRoot] + if !ok { + t.Fatalf("Expected the manifest to have a dependency for '%s' but got none", + testCase.projectRoot) + } + + v := d.Constraint.String() + if v != testCase.wantConstraint { + t.Fatalf("Expected manifest constraint to be %s, got %s", testCase.wantConstraint, v) + } + + p := lock.P[0] + + if p.Ident().ProjectRoot != testCase.projectRoot { + t.Fatalf("Expected the lock to have a project for '%s' but got '%s'", + testCase.projectRoot, + p.Ident().ProjectRoot) + } + + if p.Ident().Source != testCase.wantSourceRepo { + t.Fatalf("Expected locked source to be %s, got '%s'", testCase.wantSourceRepo, p.Ident().Source) + } + + lv := p.Version() + lpv, ok := lv.(gps.PairedVersion) + + if !ok { + if testCase.matchPairedVersion { + t.Fatalf("Expected locked version to be PairedVersion but got %T", lv) + } + + return + } + + ver := lpv.String() + if ver != testCase.wantVersion { + t.Fatalf("Expected locked version to be '%s', got %s", testCase.wantVersion, ver) + } + + if testCase.wantRevision != "" { + rev := lpv.Revision() + if rev != testCase.wantRevision { + t.Fatalf("Expected locked revision to be '%s', got %s", + testCase.wantRevision, + rev) + } + } + }) + } +} + func TestGlideConfig_Import(t *testing.T) { h := test.NewHelper(t) defer h.Cleanup() @@ -77,7 +277,7 @@ func TestGlideConfig_Import(t *testing.T) { t.Fatalf("%+v", errors.Wrapf(err, "Unable to write updated golden file %s", goldenFile)) } } else { - t.Fatalf("expected %s, got %s", want, got) + t.Fatalf("want %s, got %s", want, got) } } } @@ -112,230 +312,6 @@ func TestGlideConfig_Import_MissingLockFile(t *testing.T) { } } -func TestGlideConfig_Convert_Project(t *testing.T) { - h := test.NewHelper(t) - defer h.Cleanup() - - ctx := newTestContext(h) - sm, err := ctx.SourceManager() - h.Must(err) - defer sm.Release() - - pkg := "github.com/sdboyer/deptest" - repo := "https://github.com/sdboyer/deptest.git" - - g := newGlideImporter(ctx.Err, true, sm) - g.yaml = glideYaml{ - Imports: []glidePackage{ - { - Name: pkg, - Repository: repo, - Reference: "1.0.0", - }, - }, - } - g.lock = &glideLock{ - Imports: []glideLockedPackage{ - { - Name: pkg, - Repository: repo, - Reference: "ff2948a2ac8f538c4ecd55962e919d1e13e74baf", - }, - }, - } - - manifest, lock, err := g.convert(testGlideProjectRoot) - if err != nil { - t.Fatal(err) - } - - d, ok := manifest.Constraints[gps.ProjectRoot(pkg)] - if !ok { - t.Fatal("Expected the manifest to have a dependency for 'github.com/sdboyer/deptest' but got none") - } - - wantC := "^1.0.0" - gotC := d.Constraint.String() - if gotC != wantC { - t.Fatalf("Expected manifest constraint to be %s, got %s", wantC, gotC) - } - - gotS := d.Source - if gotS != repo { - t.Fatalf("Expected manifest source to be %s, got %s", repo, gotS) - } - - wantP := 1 - gotP := len(lock.P) - if gotP != 1 { - t.Fatalf("Expected the lock to contain %d project but got %d", wantP, gotP) - } - - p := lock.P[0] - gotPr := string(p.Ident().ProjectRoot) - if gotPr != pkg { - t.Fatalf("Expected the lock to have a project for %s but got '%s'", pkg, gotPr) - } - - gotS = p.Ident().Source - if gotS != repo { - t.Fatalf("Expected locked source to be %s, got '%s'", repo, gotS) - } - - lv := p.Version() - lpv, ok := lv.(gps.PairedVersion) - if !ok { - t.Fatalf("Expected locked version to be a PairedVersion but got %T", lv) - } - - wantRev := "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" - gotRev := lpv.Revision().String() - if gotRev != wantRev { - t.Fatalf("Expected locked revision to be %s, got %s", wantRev, gotRev) - } - - wantV := "v1.0.0" - gotV := lpv.String() - if gotV != wantV { - t.Fatalf("Expected locked version to be %s, got %s", wantV, gotV) - } -} - -func TestGlideConfig_Convert_TestProject(t *testing.T) { - h := test.NewHelper(t) - defer h.Cleanup() - - ctx := newTestContext(h) - sm, err := ctx.SourceManager() - h.Must(err) - defer sm.Release() - - pkg := "github.com/sdboyer/deptest" - - g := newGlideImporter(ctx.Err, true, sm) - g.yaml = glideYaml{ - TestImports: []glidePackage{ - { - Name: pkg, - Reference: "v1.0.0", - }, - }, - } - g.lock = &glideLock{ - TestImports: []glideLockedPackage{ - { - Name: pkg, - Reference: "ff2948a2ac8f538c4ecd55962e919d1e13e74baf", - }, - }, - } - - manifest, lock, err := g.convert(testGlideProjectRoot) - if err != nil { - t.Fatal(err) - } - - _, ok := manifest.Constraints[gps.ProjectRoot(pkg)] - if !ok { - t.Fatalf("Expected the manifest to have a dependency for %s but got none", pkg) - } - - if len(lock.P) != 1 { - t.Fatalf("Expected the lock to contain 1 project but got %d", len(lock.P)) - } - p := lock.P[0] - if p.Ident().ProjectRoot != gps.ProjectRoot(pkg) { - t.Fatalf("Expected the lock to have a project for %s but got '%s'", pkg, p.Ident().ProjectRoot) - } -} - -func TestGlideConfig_Convert_Ignore(t *testing.T) { - h := test.NewHelper(t) - defer h.Cleanup() - - ctx := newTestContext(h) - sm, err := ctx.SourceManager() - h.Must(err) - defer sm.Release() - - pkg := "github.com/sdboyer/deptest" - - g := newGlideImporter(ctx.Err, true, sm) - g.yaml = glideYaml{ - Ignores: []string{pkg}, - } - - manifest, _, err := g.convert(testGlideProjectRoot) - if err != nil { - t.Fatal(err) - } - - if len(manifest.Ignored) != 1 { - t.Fatalf("Expected the manifest to contain 1 ignored project but got %d", len(manifest.Ignored)) - } - i := manifest.Ignored[0] - if i != pkg { - t.Fatalf("Expected the manifest to ignore %s but got '%s'", pkg, i) - } -} - -func TestGlideConfig_Convert_ExcludeDir(t *testing.T) { - h := test.NewHelper(t) - defer h.Cleanup() - - ctx := newTestContext(h) - sm, err := ctx.SourceManager() - h.Must(err) - defer sm.Release() - - g := newGlideImporter(ctx.Err, true, sm) - g.yaml = glideYaml{ - ExcludeDirs: []string{"samples"}, - } - - manifest, _, err := g.convert(testGlideProjectRoot) - if err != nil { - t.Fatal(err) - } - - if len(manifest.Ignored) != 1 { - t.Fatalf("Expected the manifest to contain 1 ignored project but got %d", len(manifest.Ignored)) - } - i := manifest.Ignored[0] - if i != "github.com/golang/notexist/samples" { - t.Fatalf("Expected the manifest to ignore 'github.com/golang/notexist/samples' but got '%s'", i) - } -} - -func TestGlideConfig_Convert_ExcludeDir_IgnoresMismatchedPackageName(t *testing.T) { - h := test.NewHelper(t) - defer h.Cleanup() - - ctx := newTestContext(h) - sm, err := ctx.SourceManager() - h.Must(err) - defer sm.Release() - - g := newGlideImporter(ctx.Err, true, sm) - g.yaml = glideYaml{ - Name: "github.com/golang/mismatched-package-name", - ExcludeDirs: []string{"samples"}, - } - - manifest, _, err := g.convert(testGlideProjectRoot) - if err != nil { - t.Fatal(err) - } - - if len(manifest.Ignored) != 1 { - t.Fatalf("Expected the manifest to contain 1 ignored project but got %d", len(manifest.Ignored)) - } - i := manifest.Ignored[0] - if i != "github.com/golang/notexist/samples" { - t.Fatalf("Expected the manifest to ignore 'github.com/golang/notexist/samples' but got '%s'", i) - } -} - func TestGlideConfig_Convert_WarnsForUnusedFields(t *testing.T) { testCases := map[string]glidePackage{ "specified an os": {OS: "windows"}, @@ -377,22 +353,25 @@ func TestGlideConfig_Convert_WarnsForUnusedFields(t *testing.T) { } } -func TestGlideConfig_Convert_BadInput_EmptyPackageName(t *testing.T) { - h := test.NewHelper(t) - defer h.Cleanup() +// equalSlice is comparing two slices for equality. +func equalSlice(a, b []string) bool { + if a == nil && b == nil { + return true + } - ctx := newTestContext(h) - sm, err := ctx.SourceManager() - h.Must(err) - defer sm.Release() + if a == nil || b == nil { + return false + } - g := newGlideImporter(ctx.Err, true, sm) - g.yaml = glideYaml{ - Imports: []glidePackage{{Name: ""}}, + if len(a) != len(b) { + return false } - _, _, err = g.convert(testGlideProjectRoot) - if err == nil { - t.Fatal("Expected conversion to fail because the package name is empty") + for i := range a { + if a[i] != b[i] { + return false + } } + + return true } diff --git a/cmd/dep/godep_importer_test.go b/cmd/dep/godep_importer_test.go index c46d6fffc1..5b83b05325 100644 --- a/cmd/dep/godep_importer_test.go +++ b/cmd/dep/godep_importer_test.go @@ -18,6 +18,180 @@ import ( const testGodepProjectRoot = "github.com/golang/notexist" +func TestGodepConfig_Convert(t *testing.T) { + testCases := map[string]struct { + json godepJSON + wantConvertErr bool + matchPairedVersion bool + projectRoot gps.ProjectRoot + wantConstraint string + wantRevision gps.Revision + wantVersion string + wantLockCount int + }{ + "convert project": { + json: godepJSON{ + Imports: []godepPackage{ + { + ImportPath: "github.com/sdboyer/deptest", + // This revision has 2 versions attached to it, v1.0.0 & v0.8.0. + Rev: "ff2948a2ac8f538c4ecd55962e919d1e13e74baf", + Comment: "v0.8.0", + }, + }, + }, + matchPairedVersion: true, + projectRoot: gps.ProjectRoot("github.com/sdboyer/deptest"), + wantConstraint: "^0.8.0", + wantRevision: gps.Revision("ff2948a2ac8f538c4ecd55962e919d1e13e74baf"), + wantVersion: "v0.8.0", + wantLockCount: 1, + }, + "with semver suffix": { + json: godepJSON{ + Imports: []godepPackage{ + { + ImportPath: "github.com/sdboyer/deptest", + Rev: "ff2948a2ac8f538c4ecd55962e919d1e13e74baf", + Comment: "v1.12.0-12-g2fd980e", + }, + }, + }, + projectRoot: gps.ProjectRoot("github.com/sdboyer/deptest"), + matchPairedVersion: false, + wantConstraint: "^1.12.0-12-g2fd980e", + wantLockCount: 1, + wantVersion: "v1.0.0", + }, + "empty comment": { + json: godepJSON{ + Imports: []godepPackage{ + { + ImportPath: "github.com/sdboyer/deptest", + // This revision has 2 versions attached to it, v1.0.0 & v0.8.0. + Rev: "ff2948a2ac8f538c4ecd55962e919d1e13e74baf", + }, + }, + }, + projectRoot: gps.ProjectRoot("github.com/sdboyer/deptest"), + matchPairedVersion: true, + wantConstraint: "^1.0.0", + wantRevision: gps.Revision("ff2948a2ac8f538c4ecd55962e919d1e13e74baf"), + wantVersion: "v1.0.0", + wantLockCount: 1, + }, + "bad input - empty package name": { + json: godepJSON{ + Imports: []godepPackage{{ImportPath: ""}}, + }, + wantConvertErr: true, + }, + "bad input - empty revision": { + json: godepJSON{ + Imports: []godepPackage{ + { + ImportPath: "github.com/sdboyer/deptest", + }, + }, + }, + wantConvertErr: true, + }, + "sub-packages": { + json: godepJSON{ + Imports: []godepPackage{ + { + ImportPath: "github.com/sdboyer/deptest", + // This revision has 2 versions attached to it, v1.0.0 & v0.8.0. + Rev: "ff2948a2ac8f538c4ecd55962e919d1e13e74baf", + }, + { + ImportPath: "github.com/sdboyer/deptest/foo", + // This revision has 2 versions attached to it, v1.0.0 & v0.8.0. + Rev: "ff2948a2ac8f538c4ecd55962e919d1e13e74baf", + }, + }, + }, + projectRoot: gps.ProjectRoot("github.com/sdboyer/deptest"), + wantLockCount: 1, + wantConstraint: "^1.0.0", + wantVersion: "v1.0.0", + }, + } + + h := test.NewHelper(t) + defer h.Cleanup() + + ctx := newTestContext(h) + sm, err := ctx.SourceManager() + h.Must(err) + defer sm.Release() + + for name, testCase := range testCases { + t.Run(name, func(t *testing.T) { + g := newGodepImporter(discardLogger, true, sm) + g.json = testCase.json + + manifest, lock, err := g.convert(testCase.projectRoot) + if err != nil { + if testCase.wantConvertErr { + return + } + + t.Fatal(err) + } + + if len(lock.P) != testCase.wantLockCount { + t.Fatalf("Expected lock to have %d project(s), got %d", + testCase.wantLockCount, + len(lock.P)) + } + + d, ok := manifest.Constraints[testCase.projectRoot] + if !ok { + t.Fatalf("Expected the manifest to have a dependency for '%s' but got none", + testCase.projectRoot) + } + + v := d.Constraint.String() + if v != testCase.wantConstraint { + t.Fatalf("Expected manifest constraint to be %s, got %s", testCase.wantConstraint, v) + } + + p := lock.P[0] + if p.Ident().ProjectRoot != testCase.projectRoot { + t.Fatalf("Expected the lock to have a project for '%s' but got '%s'", + testCase.projectRoot, + p.Ident().ProjectRoot) + } + + lv := p.Version() + lpv, ok := lv.(gps.PairedVersion) + + if !ok { + if testCase.matchPairedVersion { + t.Fatalf("Expected locked version to be PairedVersion but got %T", lv) + } + + return + } + + ver := lpv.String() + if ver != testCase.wantVersion { + t.Fatalf("Expected locked version to be '%s', got %s", testCase.wantVersion, ver) + } + + if testCase.wantRevision != "" { + rev := lpv.Revision() + if rev != testCase.wantRevision { + t.Fatalf("Expected locked revision to be '%s', got %s", + testCase.wantRevision, + rev) + } + } + }) + } +} + func TestGodepConfig_Import(t *testing.T) { h := test.NewHelper(t) defer h.Cleanup() @@ -62,7 +236,7 @@ func TestGodepConfig_Import(t *testing.T) { t.Fatalf("%+v", errors.Wrapf(err, "Unable to write updated golden file %s", goldenFile)) } } else { - t.Fatalf("expected %s, got %s", want, got) + t.Fatalf("want %s, got %s", want, got) } } } @@ -103,246 +277,6 @@ func TestGodepConfig_JsonLoad(t *testing.T) { } } -func TestGodepConfig_ConvertProject(t *testing.T) { - h := test.NewHelper(t) - defer h.Cleanup() - - ctx := newTestContext(h) - sm, err := ctx.SourceManager() - h.Must(err) - defer sm.Release() - - g := newGodepImporter(discardLogger, true, sm) - g.json = godepJSON{ - Imports: []godepPackage{ - { - ImportPath: "github.com/sdboyer/deptest", - // This revision has 2 versions attached to it, v1.0.0 & v0.8.0. - Rev: "ff2948a2ac8f538c4ecd55962e919d1e13e74baf", - Comment: "v0.8.0", - }, - }, - } - - manifest, lock, err := g.convert("") - if err != nil { - t.Fatal(err) - } - - d, ok := manifest.Constraints["github.com/sdboyer/deptest"] - if !ok { - t.Fatal("Expected the manifest to have a dependency for 'github.com/sdboyer/deptest' but got none") - } - - v := d.Constraint.String() - if v != "^0.8.0" { - t.Fatalf("Expected manifest constraint to be ^0.8.0, got %s", v) - } - - p := lock.P[0] - if p.Ident().ProjectRoot != "github.com/sdboyer/deptest" { - t.Fatalf("Expected the lock to have a project for 'github.com/sdboyer/deptest' but got '%s'", p.Ident().ProjectRoot) - } - - lv := p.Version() - lpv, ok := lv.(gps.PairedVersion) - if !ok { - t.Fatalf("Expected locked version to be PairedVersion but got %T", lv) - } - - rev := lpv.Revision() - if rev != "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" { - t.Fatalf("Expected locked revision to be 'ff2948a2ac8f538c4ecd55962e919d1e13e74baf', got %s", rev) - } - - ver := lpv.String() - if ver != "v0.8.0" { - t.Fatalf("Expected locked version to be 'v0.8.0', got %s", ver) - } -} - -func TestGodepConfig_ConvertProject_WithSemverSuffix(t *testing.T) { - h := test.NewHelper(t) - defer h.Cleanup() - - ctx := newTestContext(h) - sm, err := ctx.SourceManager() - h.Must(err) - defer sm.Release() - - g := newGodepImporter(discardLogger, true, sm) - g.json = godepJSON{ - Imports: []godepPackage{ - { - ImportPath: "github.com/sdboyer/deptest", - Rev: "ff2948a2ac8f538c4ecd55962e919d1e13e74baf", - Comment: "v1.12.0-12-g2fd980e", - }, - }, - } - - manifest, lock, err := g.convert("") - if err != nil { - t.Fatal(err) - } - - d, ok := manifest.Constraints["github.com/sdboyer/deptest"] - if !ok { - t.Fatal("Expected the manifest to have a dependency for 'github.com/sdboyer/deptest' but got none") - } - - v := d.Constraint.String() - if v != "^1.12.0-12-g2fd980e" { - t.Fatalf("Expected manifest constraint to be ^1.12.0-12-g2fd980e, got %s", v) - } - - p := lock.P[0] - if p.Ident().ProjectRoot != "github.com/sdboyer/deptest" { - t.Fatalf("Expected the lock to have a project for 'github.com/sdboyer/deptest' but got '%s'", p.Ident().ProjectRoot) - } -} - -func TestGodepConfig_ConvertProject_EmptyComment(t *testing.T) { - h := test.NewHelper(t) - defer h.Cleanup() - h.TempDir("src") - - ctx := newTestContext(h) - sm, err := ctx.SourceManager() - h.Must(err) - defer sm.Release() - - g := newGodepImporter(discardLogger, true, sm) - g.json = godepJSON{ - Imports: []godepPackage{ - { - ImportPath: "github.com/sdboyer/deptest", - // This revision has 2 versions attached to it, v1.0.0 & v0.8.0. - Rev: "ff2948a2ac8f538c4ecd55962e919d1e13e74baf", - }, - }, - } - - manifest, lock, err := g.convert("") - if err != nil { - t.Fatal(err) - } - - d, ok := manifest.Constraints["github.com/sdboyer/deptest"] - if !ok { - t.Fatal("Expected the manifest to have a dependency for 'github.com/sdboyer/deptest' but got none") - } - - v := d.Constraint.String() - if v != "^1.0.0" { - t.Fatalf("Expected manifest constraint to be ^1.0.0, got %s", v) - } - - p := lock.P[0] - if p.Ident().ProjectRoot != "github.com/sdboyer/deptest" { - t.Fatalf("Expected the lock to have a project for 'github.com/sdboyer/deptest' but got '%s'", p.Ident().ProjectRoot) - } - - lv := p.Version() - lpv, ok := lv.(gps.PairedVersion) - if !ok { - t.Fatalf("Expected locked version to be PairedVersion but got %T", lv) - } - - rev := lpv.Revision() - if rev != "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" { - t.Fatalf("Expected locked revision to be 'ff2948a2ac8f538c4ecd55962e919d1e13e74baf', got %s", rev) - } - - ver := lpv.String() - if ver != "v1.0.0" { - t.Fatalf("Expected locked version to be 'v1.0.0', got %s", ver) - } -} - -func TestGodepConfig_Convert_BadInput_EmptyPackageName(t *testing.T) { - g := newGodepImporter(discardLogger, true, nil) - g.json = godepJSON{ - Imports: []godepPackage{{ImportPath: ""}}, - } - - _, _, err := g.convert("") - if err == nil { - t.Fatal("Expected conversion to fail because the ImportPath is empty") - } -} - -func TestGodepConfig_Convert_BadInput_EmptyRev(t *testing.T) { - h := test.NewHelper(t) - defer h.Cleanup() - h.TempDir("src") - - ctx := newTestContext(h) - sm, err := ctx.SourceManager() - h.Must(err) - defer sm.Release() - - g := newGodepImporter(discardLogger, true, sm) - g.json = godepJSON{ - Imports: []godepPackage{ - { - ImportPath: "github.com/sdboyer/deptest", - }, - }, - } - - _, _, err = g.convert("") - if err == nil { - t.Fatal("Expected conversion to fail because the Rev is empty") - } -} - -func TestGodepConfig_Convert_SubPackages(t *testing.T) { - h := test.NewHelper(t) - defer h.Cleanup() - h.TempDir("src") - - ctx := newTestContext(h) - sm, err := ctx.SourceManager() - h.Must(err) - defer sm.Release() - - g := newGodepImporter(discardLogger, true, sm) - g.json = godepJSON{ - Imports: []godepPackage{ - { - ImportPath: "github.com/sdboyer/deptest", - Rev: "ff2948a2ac8f538c4ecd55962e919d1e13e74baf", - }, - { - ImportPath: "github.com/sdboyer/deptest/foo", - Rev: "ff2948a2ac8f538c4ecd55962e919d1e13e74baf", - }, - }, - } - - manifest, lock, err := g.convert("") - if err != nil { - t.Fatal(err) - } - - if _, present := manifest.Constraints["github.com/sdboyer/deptest"]; !present { - t.Fatal("Expected the manifest to have a dependency for 'github.com/sdboyer/deptest'") - } - - if _, present := manifest.Constraints["github.com/sdboyer/deptest/foo"]; present { - t.Fatal("Expected the manifest to not have a dependency for 'github.com/sdboyer/deptest/foo'") - } - - if len(lock.P) != 1 { - t.Fatalf("Expected lock to have 1 project, got %v", len(lock.P)) - } - - if string(lock.P[0].Ident().ProjectRoot) != "github.com/sdboyer/deptest" { - t.Fatal("Expected lock to have 'github.com/sdboyer/deptest'") - } -} - func TestGodepConfig_ProjectExistsInLock(t *testing.T) { lock := &dep.Lock{} pi := gps.ProjectIdentifier{ProjectRoot: gps.ProjectRoot("github.com/sdboyer/deptest")} @@ -367,14 +301,14 @@ func TestGodepConfig_ProjectExistsInLock(t *testing.T) { result := projectExistsInLock(lock, c.importPath) if result != c.want { - t.Fatalf("projectExistsInLock result is not as expected: \n\t(GOT) %v \n\t(WNT) %v", result, c.want) + t.Fatalf("projectExistsInLock result is not as want: \n\t(GOT) %v \n\t(WNT) %v", result, c.want) } } } -// Compares two slices of godepPackage and checks if they are equal. +// equalImports compares two slices of godepPackage and checks if they are +// equal. func equalImports(a, b []godepPackage) bool { - if a == nil && b == nil { return true }