From bcc0b089711f676fcd1c5d64fa0cfe13a8acf937 Mon Sep 17 00:00:00 2001 From: Sebastian Dahlgren Date: Tue, 25 Jul 2017 20:45:48 +0530 Subject: [PATCH 01/12] Make the godep importer tests table based --- cmd/dep/godep_importer_test.go | 431 +++++++++++++++------------------ internal/gps/identifier.go | 5 + internal/gps/version.go | 5 + 3 files changed, 199 insertions(+), 242 deletions(-) diff --git a/cmd/dep/godep_importer_test.go b/cmd/dep/godep_importer_test.go index c46d6fffc1..a164324cfc 100644 --- a/cmd/dep/godep_importer_test.go +++ b/cmd/dep/godep_importer_test.go @@ -18,6 +18,188 @@ import ( const testGodepProjectRoot = "github.com/golang/notexist" +func TestGoDepConfig_Convert(t *testing.T) { + testCases := map[string]struct { + json godepJSON + expectConvertErr bool + matchPairedVersion bool + projectRoot gps.ProjectRoot + notExpectedProjectRoot *gps.ProjectRoot + expectedConstraint string + expectedRevision *gps.Revision + expectedVersion string + expectedLockCount *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"), + expectedConstraint: "^0.8.0", + expectedRevision: gps.RevisionPtr(gps.Revision("ff2948a2ac8f538c4ecd55962e919d1e13e74baf")), + expectedVersion: "v0.8.0", + }, + "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, + expectedConstraint: ">=1.12.0, <=12.0.0-g2fd980e", + }, + "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, + expectedConstraint: "^1.0.0", + expectedRevision: gps.RevisionPtr(gps.Revision("ff2948a2ac8f538c4ecd55962e919d1e13e74baf")), + expectedVersion: "v1.0.0", + }, + "bad input - empty package name": { + json: godepJSON{ + Imports: []godepPackage{{ImportPath: ""}}, + }, + expectConvertErr: true, + }, + "bad input - empty revision": { + json: godepJSON{ + Imports: []godepPackage{ + { + ImportPath: "github.com/sdboyer/deptest", + }, + }, + }, + expectConvertErr: 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"), + notExpectedProjectRoot: gps.ProjectRootPtr(gps.ProjectRoot("github.com/sdboyer/deptest/foo")), + expectedLockCount: intPtr(1), + expectedConstraint: "^1.0.0", + expectedVersion: "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.Logf("Running test case: %s", name) + + g := newGodepImporter(discardLogger, true, sm) + g.json = testCase.json + + manifest, lock, err := g.convert(testCase.projectRoot) + if err != nil { + if testCase.expectConvertErr { + continue + } + + t.Fatal(err) + } + + if testCase.expectedLockCount != nil { + if len(lock.P) != *testCase.expectedLockCount { + t.Fatalf("Expected lock to have %d project(s), got %d", + *testCase.expectedLockCount, + 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.expectedConstraint { + t.Fatalf("Expected manifest constraint to be %s, got %s", testCase.expectedConstraint, v) + } + + if testCase.notExpectedProjectRoot != nil { + _, ok := manifest.Constraints[*testCase.notExpectedProjectRoot] + if ok { + t.Fatalf("Expected the manifest to not have a dependency for '%s' but got none", + *testCase.notExpectedProjectRoot) + } + } + + 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) + } + + continue + } + + ver := lpv.String() + if ver != testCase.expectedVersion { + t.Fatalf("Expected locked version to be '%s', got %s", testCase.expectedVersion, ver) + } + + if testCase.expectedRevision != nil { + rev := lpv.Revision() + if rev != *testCase.expectedRevision { + t.Fatalf("Expected locked revision to be '%s', got %s", + *testCase.expectedRevision, + rev) + } + } + } +} + func TestGodepConfig_Import(t *testing.T) { h := test.NewHelper(t) defer h.Cleanup() @@ -103,246 +285,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")} @@ -372,9 +314,9 @@ func TestGodepConfig_ProjectExistsInLock(t *testing.T) { } } -// 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 } @@ -395,3 +337,8 @@ func equalImports(a, b []godepPackage) bool { return true } + +// intPtr takes a int value and returns a pointer. +func intPtr(i int) *int { + return &i +} diff --git a/internal/gps/identifier.go b/internal/gps/identifier.go index de24e88c34..fe30a7be41 100644 --- a/internal/gps/identifier.go +++ b/internal/gps/identifier.go @@ -40,6 +40,11 @@ import ( // the type system when a path-ish string must have particular semantics. type ProjectRoot string +// ProjectRootPtr takes a ProjectRoot value and returns a pointer. +func ProjectRootPtr(p ProjectRoot) *ProjectRoot { + return &p +} + // A ProjectIdentifier provides the name and source location of a dependency. It // is related to, but differs in two keys ways from, an plain import path. // diff --git a/internal/gps/version.go b/internal/gps/version.go index 0462892826..9e3aae271b 100644 --- a/internal/gps/version.go +++ b/internal/gps/version.go @@ -198,6 +198,11 @@ func (r Revision) identical(c Constraint) bool { return r == r2 } +// RevisionPtr takes a revision value and return it's pointer. +func RevisionPtr(r Revision) *Revision { + return &r +} + type branchVersion struct { name string isDefault bool From 8626836c20ed57d2dd30143f30b98d500f4f46b0 Mon Sep 17 00:00:00 2001 From: Sebastian Dahlgren Date: Wed, 26 Jul 2017 06:24:16 +0530 Subject: [PATCH 02/12] Make glide importer tests table based --- cmd/dep/glide_importer_test.go | 461 ++++++++++++++++----------------- 1 file changed, 224 insertions(+), 237 deletions(-) diff --git a/cmd/dep/glide_importer_test.go b/cmd/dep/glide_importer_test.go index bb138ce308..458a14575d 100644 --- a/cmd/dep/glide_importer_test.go +++ b/cmd/dep/glide_importer_test.go @@ -34,6 +34,214 @@ func newTestContext(h *test.Helper) *dep.Ctx { } } +func TestGlideConfig_Convert(t *testing.T) { + testCases := map[string]struct { + yaml glideYaml + lock *glideLock + expectConvertErr bool + matchPairedVersion bool + projectRoot gps.ProjectRoot + sourceRepo string + notExpectedProjectRoot *gps.ProjectRoot + expectedConstraint string + expectedRevision *gps.Revision + expectedVersion string + expectedLockCount int + expectedIgnoreCount int + expectedIgnoredPackages []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", + sourceRepo: "https://github.com/sdboyer/deptest.git", + matchPairedVersion: true, + expectedConstraint: "^1.0.0", + expectedLockCount: 1, + expectedRevision: gps.RevisionPtr(gps.Revision("ff2948a2ac8f538c4ecd55962e919d1e13e74baf")), + expectedVersion: "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", + expectedLockCount: 1, + expectedConstraint: "^1.0.0", + expectedVersion: "v1.0.0", + }, + "with ignored package": { + yaml: glideYaml{ + Ignores: []string{"github.com/sdboyer/deptest"}, + }, + projectRoot: "github.com/sdboyer/deptest", + expectedIgnoreCount: 1, + expectedIgnoredPackages: []string{"github.com/sdboyer/deptest"}, + }, + "with exclude dir": { + yaml: glideYaml{ + ExcludeDirs: []string{"samples"}, + }, + projectRoot: testGlideProjectRoot, + expectedIgnoreCount: 1, + expectedIgnoredPackages: []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, + expectedIgnoreCount: 1, + expectedIgnoredPackages: []string{"github.com/golang/notexist/samples"}, + }, + "bad input, empty package name": { + yaml: glideYaml{ + Imports: []glidePackage{{Name: ""}}, + }, + projectRoot: testGlideProjectRoot, + expectConvertErr: 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.Logf("Running test case: %s", name) + + 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.expectConvertErr { + continue + } + + t.Fatal(err) + } + + // Lock checks + if lock != nil && len(lock.P) != testCase.expectedLockCount { + t.Fatalf("Expected lock to have %d project(s), got %d", + testCase.expectedLockCount, + len(lock.P)) + } + + // Ignored projects checks + if len(manifest.Ignored) != testCase.expectedIgnoreCount { + t.Fatalf("Expected manifest to have %d ignored project(s), got %d", + testCase.expectedIgnoreCount, + len(manifest.Ignored)) + } + + if !equalSlice(manifest.Ignored, testCase.expectedIgnoredPackages) { + t.Fatalf("Expected manifest to have ignore %s, got %s", + strings.Join(testCase.expectedIgnoredPackages, ", "), + strings.Join(manifest.Ignored, ", ")) + } + + // Constraints checks below. Skip if there is no expected constraint. + if testCase.expectedConstraint == "" { + continue + } + + 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.expectedConstraint { + t.Fatalf("Expected manifest constraint to be %s, got %s", testCase.expectedConstraint, v) + } + + if testCase.notExpectedProjectRoot != nil { + _, ok := manifest.Constraints[*testCase.notExpectedProjectRoot] + if ok { + t.Fatalf("Expected the manifest to not have a dependency for '%s' but got none", + *testCase.notExpectedProjectRoot) + } + } + + 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.sourceRepo { + t.Fatalf("Expected locked source to be %s, got '%s'", testCase.sourceRepo, 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) + } + + continue + } + + ver := lpv.String() + if ver != testCase.expectedVersion { + t.Fatalf("Expected locked version to be '%s', got %s", testCase.expectedVersion, ver) + } + + if testCase.expectedRevision != nil { + rev := lpv.Revision() + if rev != *testCase.expectedRevision { + t.Fatalf("Expected locked revision to be '%s', got %s", *testCase.expectedRevision, + rev) + } + } + } +} + func TestGlideConfig_Import(t *testing.T) { h := test.NewHelper(t) defer h.Cleanup() @@ -112,230 +320,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 +361,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 } From 7f3932a234cb64d9b58bf404a98cab0876702e8e Mon Sep 17 00:00:00 2001 From: Sebastian Dahlgren Date: Wed, 26 Jul 2017 06:32:45 +0530 Subject: [PATCH 03/12] fixup! Make the godep importer tests table based --- cmd/dep/godep_importer_test.go | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/cmd/dep/godep_importer_test.go b/cmd/dep/godep_importer_test.go index a164324cfc..3c220a3282 100644 --- a/cmd/dep/godep_importer_test.go +++ b/cmd/dep/godep_importer_test.go @@ -28,7 +28,7 @@ func TestGoDepConfig_Convert(t *testing.T) { expectedConstraint string expectedRevision *gps.Revision expectedVersion string - expectedLockCount *int + expectedLockCount int }{ "convert project": { json: godepJSON{ @@ -46,6 +46,7 @@ func TestGoDepConfig_Convert(t *testing.T) { expectedConstraint: "^0.8.0", expectedRevision: gps.RevisionPtr(gps.Revision("ff2948a2ac8f538c4ecd55962e919d1e13e74baf")), expectedVersion: "v0.8.0", + expectedLockCount: 1, }, "with semver suffix": { json: godepJSON{ @@ -60,6 +61,7 @@ func TestGoDepConfig_Convert(t *testing.T) { projectRoot: gps.ProjectRoot("github.com/sdboyer/deptest"), matchPairedVersion: false, expectedConstraint: ">=1.12.0, <=12.0.0-g2fd980e", + expectedLockCount: 1, }, "empty comment": { json: godepJSON{ @@ -76,6 +78,7 @@ func TestGoDepConfig_Convert(t *testing.T) { expectedConstraint: "^1.0.0", expectedRevision: gps.RevisionPtr(gps.Revision("ff2948a2ac8f538c4ecd55962e919d1e13e74baf")), expectedVersion: "v1.0.0", + expectedLockCount: 1, }, "bad input - empty package name": { json: godepJSON{ @@ -110,7 +113,7 @@ func TestGoDepConfig_Convert(t *testing.T) { }, projectRoot: gps.ProjectRoot("github.com/sdboyer/deptest"), notExpectedProjectRoot: gps.ProjectRootPtr(gps.ProjectRoot("github.com/sdboyer/deptest/foo")), - expectedLockCount: intPtr(1), + expectedLockCount: 1, expectedConstraint: "^1.0.0", expectedVersion: "v1.0.0", }, @@ -139,12 +142,10 @@ func TestGoDepConfig_Convert(t *testing.T) { t.Fatal(err) } - if testCase.expectedLockCount != nil { - if len(lock.P) != *testCase.expectedLockCount { - t.Fatalf("Expected lock to have %d project(s), got %d", - *testCase.expectedLockCount, - len(lock.P)) - } + if len(lock.P) != testCase.expectedLockCount { + t.Fatalf("Expected lock to have %d project(s), got %d", + testCase.expectedLockCount, + len(lock.P)) } d, ok := manifest.Constraints[testCase.projectRoot] @@ -337,8 +338,3 @@ func equalImports(a, b []godepPackage) bool { return true } - -// intPtr takes a int value and returns a pointer. -func intPtr(i int) *int { - return &i -} From 75c187ece1edff47802af7f3273f4c069d294491 Mon Sep 17 00:00:00 2001 From: Sebastian Dahlgren Date: Wed, 26 Jul 2017 07:56:50 +0530 Subject: [PATCH 04/12] fixup! Make glide importer tests table based --- cmd/dep/glide_importer_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/dep/glide_importer_test.go b/cmd/dep/glide_importer_test.go index 458a14575d..e64bac3ebb 100644 --- a/cmd/dep/glide_importer_test.go +++ b/cmd/dep/glide_importer_test.go @@ -160,14 +160,14 @@ func TestGlideConfig_Convert(t *testing.T) { t.Fatal(err) } - // Lock checks + // Lock checks. if lock != nil && len(lock.P) != testCase.expectedLockCount { t.Fatalf("Expected lock to have %d project(s), got %d", testCase.expectedLockCount, len(lock.P)) } - // Ignored projects checks + // Ignored projects checks. if len(manifest.Ignored) != testCase.expectedIgnoreCount { t.Fatalf("Expected manifest to have %d ignored project(s), got %d", testCase.expectedIgnoreCount, From c31aedafcc3b9e614dd2a6a9f39c3d6c4ae3a312 Mon Sep 17 00:00:00 2001 From: Sebastian Dahlgren Date: Thu, 27 Jul 2017 08:21:58 +0530 Subject: [PATCH 05/12] fixup! Make the godep importer tests table based --- cmd/dep/godep_importer_test.go | 110 ++++++++++++++++----------------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/cmd/dep/godep_importer_test.go b/cmd/dep/godep_importer_test.go index 3c220a3282..6d5a959434 100644 --- a/cmd/dep/godep_importer_test.go +++ b/cmd/dep/godep_importer_test.go @@ -18,7 +18,7 @@ import ( const testGodepProjectRoot = "github.com/golang/notexist" -func TestGoDepConfig_Convert(t *testing.T) { +func TestGodepConfig_Convert(t *testing.T) { testCases := map[string]struct { json godepJSON expectConvertErr bool @@ -128,76 +128,76 @@ func TestGoDepConfig_Convert(t *testing.T) { defer sm.Release() for name, testCase := range testCases { - t.Logf("Running test case: %s", name) + t.Run(name, func(t *testing.T) { + g := newGodepImporter(discardLogger, true, sm) + g.json = testCase.json - g := newGodepImporter(discardLogger, true, sm) - g.json = testCase.json + manifest, lock, err := g.convert(testCase.projectRoot) + if err != nil { + if testCase.expectConvertErr { + return + } - manifest, lock, err := g.convert(testCase.projectRoot) - if err != nil { - if testCase.expectConvertErr { - continue + t.Fatal(err) } - t.Fatal(err) - } + if len(lock.P) != testCase.expectedLockCount { + t.Fatalf("Expected lock to have %d project(s), got %d", + testCase.expectedLockCount, + len(lock.P)) + } - if len(lock.P) != testCase.expectedLockCount { - t.Fatalf("Expected lock to have %d project(s), got %d", - testCase.expectedLockCount, - 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) + } - 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.expectedConstraint { + t.Fatalf("Expected manifest constraint to be %s, got %s", testCase.expectedConstraint, v) + } - v := d.Constraint.String() - if v != testCase.expectedConstraint { - t.Fatalf("Expected manifest constraint to be %s, got %s", testCase.expectedConstraint, v) - } + if testCase.notExpectedProjectRoot != nil { + _, ok := manifest.Constraints[*testCase.notExpectedProjectRoot] + if ok { + t.Fatalf("Expected the manifest to not have a dependency for '%s' but got none", + *testCase.notExpectedProjectRoot) + } + } - if testCase.notExpectedProjectRoot != nil { - _, ok := manifest.Constraints[*testCase.notExpectedProjectRoot] - if ok { - t.Fatalf("Expected the manifest to not have a dependency for '%s' but got none", - *testCase.notExpectedProjectRoot) + 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) } - } - 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) - 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) + } - if !ok { - if testCase.matchPairedVersion { - t.Fatalf("Expected locked version to be PairedVersion but got %T", lv) + return } - continue - } - - ver := lpv.String() - if ver != testCase.expectedVersion { - t.Fatalf("Expected locked version to be '%s', got %s", testCase.expectedVersion, ver) - } + ver := lpv.String() + if ver != testCase.expectedVersion { + t.Fatalf("Expected locked version to be '%s', got %s", testCase.expectedVersion, ver) + } - if testCase.expectedRevision != nil { - rev := lpv.Revision() - if rev != *testCase.expectedRevision { - t.Fatalf("Expected locked revision to be '%s', got %s", - *testCase.expectedRevision, - rev) + if testCase.expectedRevision != nil { + rev := lpv.Revision() + if rev != *testCase.expectedRevision { + t.Fatalf("Expected locked revision to be '%s', got %s", + *testCase.expectedRevision, + rev) + } } - } + }) } } From 807f8cd16517f7f892d85423de007e0dbf1e717f Mon Sep 17 00:00:00 2001 From: Sebastian Dahlgren Date: Thu, 27 Jul 2017 08:22:12 +0530 Subject: [PATCH 06/12] fixup! Make glide importer tests table based --- cmd/dep/glide_importer_test.go | 152 ++++++++++++++++----------------- 1 file changed, 76 insertions(+), 76 deletions(-) diff --git a/cmd/dep/glide_importer_test.go b/cmd/dep/glide_importer_test.go index e64bac3ebb..e7c044e298 100644 --- a/cmd/dep/glide_importer_test.go +++ b/cmd/dep/glide_importer_test.go @@ -142,103 +142,103 @@ func TestGlideConfig_Convert(t *testing.T) { defer sm.Release() for name, testCase := range testCases { - t.Logf("Running test case: %s", name) + t.Run(name, func(t *testing.T) { + g := newGlideImporter(discardLogger, true, sm) + g.yaml = testCase.yaml - g := newGlideImporter(discardLogger, true, sm) - g.yaml = testCase.yaml + if testCase.lock != nil { + g.lock = testCase.lock + } - if testCase.lock != nil { - g.lock = testCase.lock - } + manifest, lock, err := g.convert(testCase.projectRoot) + if err != nil { + if testCase.expectConvertErr { + return + } - manifest, lock, err := g.convert(testCase.projectRoot) - if err != nil { - if testCase.expectConvertErr { - continue + t.Fatal(err) } - t.Fatal(err) - } - - // Lock checks. - if lock != nil && len(lock.P) != testCase.expectedLockCount { - t.Fatalf("Expected lock to have %d project(s), got %d", - testCase.expectedLockCount, - len(lock.P)) - } + // Lock checks. + if lock != nil && len(lock.P) != testCase.expectedLockCount { + t.Fatalf("Expected lock to have %d project(s), got %d", + testCase.expectedLockCount, + len(lock.P)) + } - // Ignored projects checks. - if len(manifest.Ignored) != testCase.expectedIgnoreCount { - t.Fatalf("Expected manifest to have %d ignored project(s), got %d", - testCase.expectedIgnoreCount, - len(manifest.Ignored)) - } + // Ignored projects checks. + if len(manifest.Ignored) != testCase.expectedIgnoreCount { + t.Fatalf("Expected manifest to have %d ignored project(s), got %d", + testCase.expectedIgnoreCount, + len(manifest.Ignored)) + } - if !equalSlice(manifest.Ignored, testCase.expectedIgnoredPackages) { - t.Fatalf("Expected manifest to have ignore %s, got %s", - strings.Join(testCase.expectedIgnoredPackages, ", "), - strings.Join(manifest.Ignored, ", ")) - } + if !equalSlice(manifest.Ignored, testCase.expectedIgnoredPackages) { + t.Fatalf("Expected manifest to have ignore %s, got %s", + strings.Join(testCase.expectedIgnoredPackages, ", "), + strings.Join(manifest.Ignored, ", ")) + } - // Constraints checks below. Skip if there is no expected constraint. - if testCase.expectedConstraint == "" { - continue - } + // Constraints checks below. Skip if there is no expected constraint. + if testCase.expectedConstraint == "" { + 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) - } + 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.expectedConstraint { - t.Fatalf("Expected manifest constraint to be %s, got %s", testCase.expectedConstraint, v) - } + v := d.Constraint.String() + if v != testCase.expectedConstraint { + t.Fatalf("Expected manifest constraint to be %s, got %s", testCase.expectedConstraint, v) + } - if testCase.notExpectedProjectRoot != nil { - _, ok := manifest.Constraints[*testCase.notExpectedProjectRoot] - if ok { - t.Fatalf("Expected the manifest to not have a dependency for '%s' but got none", - *testCase.notExpectedProjectRoot) + if testCase.notExpectedProjectRoot != nil { + _, ok := manifest.Constraints[*testCase.notExpectedProjectRoot] + if ok { + t.Fatalf("Expected the manifest to not have a dependency for '%s' but got none", + *testCase.notExpectedProjectRoot) + } } - } - p := lock.P[0] + 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().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.sourceRepo { - t.Fatalf("Expected locked source to be %s, got '%s'", testCase.sourceRepo, p.Ident().Source) - } + if p.Ident().Source != testCase.sourceRepo { + t.Fatalf("Expected locked source to be %s, got '%s'", testCase.sourceRepo, p.Ident().Source) + } - lv := p.Version() - lpv, ok := lv.(gps.PairedVersion) + 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) - } + if !ok { + if testCase.matchPairedVersion { + t.Fatalf("Expected locked version to be PairedVersion but got %T", lv) + } - continue - } + return + } - ver := lpv.String() - if ver != testCase.expectedVersion { - t.Fatalf("Expected locked version to be '%s', got %s", testCase.expectedVersion, ver) - } + ver := lpv.String() + if ver != testCase.expectedVersion { + t.Fatalf("Expected locked version to be '%s', got %s", testCase.expectedVersion, ver) + } - if testCase.expectedRevision != nil { - rev := lpv.Revision() - if rev != *testCase.expectedRevision { - t.Fatalf("Expected locked revision to be '%s', got %s", *testCase.expectedRevision, - rev) + if testCase.expectedRevision != nil { + rev := lpv.Revision() + if rev != *testCase.expectedRevision { + t.Fatalf("Expected locked revision to be '%s', got %s", *testCase.expectedRevision, + rev) + } } - } + }) } } From e03b18b16f82e3516d8b8f8a6198d4b116abfcda Mon Sep 17 00:00:00 2001 From: Sebastian Dahlgren Date: Sat, 29 Jul 2017 06:49:24 +0200 Subject: [PATCH 07/12] fixup! Make the godep importer tests table based --- cmd/dep/godep_importer_test.go | 94 +++++++++++++++++++--------------- internal/gps/identifier.go | 5 -- internal/gps/version.go | 5 -- 3 files changed, 52 insertions(+), 52 deletions(-) diff --git a/cmd/dep/godep_importer_test.go b/cmd/dep/godep_importer_test.go index 6d5a959434..8d8fd9d1cf 100644 --- a/cmd/dep/godep_importer_test.go +++ b/cmd/dep/godep_importer_test.go @@ -20,15 +20,15 @@ const testGodepProjectRoot = "github.com/golang/notexist" func TestGodepConfig_Convert(t *testing.T) { testCases := map[string]struct { - json godepJSON - expectConvertErr bool - matchPairedVersion bool - projectRoot gps.ProjectRoot - notExpectedProjectRoot *gps.ProjectRoot - expectedConstraint string - expectedRevision *gps.Revision - expectedVersion string - expectedLockCount int + json godepJSON + wantConvertErr bool + matchPairedVersion bool + projectRoot gps.ProjectRoot + notWantedProjectRoot *gps.ProjectRoot + wantConstraint string + wantRevision *gps.Revision + wantVersion string + wantLockCount int }{ "convert project": { json: godepJSON{ @@ -43,10 +43,10 @@ func TestGodepConfig_Convert(t *testing.T) { }, matchPairedVersion: true, projectRoot: gps.ProjectRoot("github.com/sdboyer/deptest"), - expectedConstraint: "^0.8.0", - expectedRevision: gps.RevisionPtr(gps.Revision("ff2948a2ac8f538c4ecd55962e919d1e13e74baf")), - expectedVersion: "v0.8.0", - expectedLockCount: 1, + wantConstraint: "^0.8.0", + wantRevision: revisionPtr(gps.Revision("ff2948a2ac8f538c4ecd55962e919d1e13e74baf")), + wantVersion: "v0.8.0", + wantLockCount: 1, }, "with semver suffix": { json: godepJSON{ @@ -60,8 +60,8 @@ func TestGodepConfig_Convert(t *testing.T) { }, projectRoot: gps.ProjectRoot("github.com/sdboyer/deptest"), matchPairedVersion: false, - expectedConstraint: ">=1.12.0, <=12.0.0-g2fd980e", - expectedLockCount: 1, + wantConstraint: ">=1.12.0, <=12.0.0-g2fd980e", + wantLockCount: 1, }, "empty comment": { json: godepJSON{ @@ -75,16 +75,16 @@ func TestGodepConfig_Convert(t *testing.T) { }, projectRoot: gps.ProjectRoot("github.com/sdboyer/deptest"), matchPairedVersion: true, - expectedConstraint: "^1.0.0", - expectedRevision: gps.RevisionPtr(gps.Revision("ff2948a2ac8f538c4ecd55962e919d1e13e74baf")), - expectedVersion: "v1.0.0", - expectedLockCount: 1, + wantConstraint: "^1.0.0", + wantRevision: revisionPtr(gps.Revision("ff2948a2ac8f538c4ecd55962e919d1e13e74baf")), + wantVersion: "v1.0.0", + wantLockCount: 1, }, "bad input - empty package name": { json: godepJSON{ Imports: []godepPackage{{ImportPath: ""}}, }, - expectConvertErr: true, + wantConvertErr: true, }, "bad input - empty revision": { json: godepJSON{ @@ -94,7 +94,7 @@ func TestGodepConfig_Convert(t *testing.T) { }, }, }, - expectConvertErr: true, + wantConvertErr: true, }, "sub-packages": { json: godepJSON{ @@ -111,11 +111,11 @@ func TestGodepConfig_Convert(t *testing.T) { }, }, }, - projectRoot: gps.ProjectRoot("github.com/sdboyer/deptest"), - notExpectedProjectRoot: gps.ProjectRootPtr(gps.ProjectRoot("github.com/sdboyer/deptest/foo")), - expectedLockCount: 1, - expectedConstraint: "^1.0.0", - expectedVersion: "v1.0.0", + projectRoot: gps.ProjectRoot("github.com/sdboyer/deptest"), + notWantedProjectRoot: projectRootPtr(gps.ProjectRoot("github.com/sdboyer/deptest/foo")), + wantLockCount: 1, + wantConstraint: "^1.0.0", + wantVersion: "v1.0.0", }, } @@ -134,16 +134,16 @@ func TestGodepConfig_Convert(t *testing.T) { manifest, lock, err := g.convert(testCase.projectRoot) if err != nil { - if testCase.expectConvertErr { + if testCase.wantConvertErr { return } t.Fatal(err) } - if len(lock.P) != testCase.expectedLockCount { + if len(lock.P) != testCase.wantLockCount { t.Fatalf("Expected lock to have %d project(s), got %d", - testCase.expectedLockCount, + testCase.wantLockCount, len(lock.P)) } @@ -154,15 +154,15 @@ func TestGodepConfig_Convert(t *testing.T) { } v := d.Constraint.String() - if v != testCase.expectedConstraint { - t.Fatalf("Expected manifest constraint to be %s, got %s", testCase.expectedConstraint, v) + if v != testCase.wantConstraint { + t.Fatalf("Expected manifest constraint to be %s, got %s", testCase.wantConstraint, v) } - if testCase.notExpectedProjectRoot != nil { - _, ok := manifest.Constraints[*testCase.notExpectedProjectRoot] + if testCase.notWantedProjectRoot != nil { + _, ok := manifest.Constraints[*testCase.notWantedProjectRoot] if ok { t.Fatalf("Expected the manifest to not have a dependency for '%s' but got none", - *testCase.notExpectedProjectRoot) + *testCase.notWantedProjectRoot) } } @@ -185,15 +185,15 @@ func TestGodepConfig_Convert(t *testing.T) { } ver := lpv.String() - if ver != testCase.expectedVersion { - t.Fatalf("Expected locked version to be '%s', got %s", testCase.expectedVersion, ver) + if ver != testCase.wantVersion { + t.Fatalf("Expected locked version to be '%s', got %s", testCase.wantVersion, ver) } - if testCase.expectedRevision != nil { + if testCase.wantRevision != nil { rev := lpv.Revision() - if rev != *testCase.expectedRevision { + if rev != *testCase.wantRevision { t.Fatalf("Expected locked revision to be '%s', got %s", - *testCase.expectedRevision, + *testCase.wantRevision, rev) } } @@ -236,7 +236,7 @@ func TestGodepConfig_Import(t *testing.T) { t.Fatal("Expected the lock to be generated") } - goldenFile := "godep/expected_import_output.txt" + goldenFile := "godep/want_import_output.txt" got := verboseOutput.String() want := h.GetTestFileString(goldenFile) if want != got { @@ -245,7 +245,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) } } } @@ -310,7 +310,7 @@ 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) } } } @@ -338,3 +338,13 @@ func equalImports(a, b []godepPackage) bool { return true } + +// projectRootPtr takes a ProjectRoot value and returns a pointer. +func projectRootPtr(p gps.ProjectRoot) *gps.ProjectRoot { + return &p +} + +// revisionPtr takes a revision value and return it's pointer. +func revisionPtr(r gps.Revision) *gps.Revision { + return &r +} diff --git a/internal/gps/identifier.go b/internal/gps/identifier.go index fe30a7be41..de24e88c34 100644 --- a/internal/gps/identifier.go +++ b/internal/gps/identifier.go @@ -40,11 +40,6 @@ import ( // the type system when a path-ish string must have particular semantics. type ProjectRoot string -// ProjectRootPtr takes a ProjectRoot value and returns a pointer. -func ProjectRootPtr(p ProjectRoot) *ProjectRoot { - return &p -} - // A ProjectIdentifier provides the name and source location of a dependency. It // is related to, but differs in two keys ways from, an plain import path. // diff --git a/internal/gps/version.go b/internal/gps/version.go index 9e3aae271b..0462892826 100644 --- a/internal/gps/version.go +++ b/internal/gps/version.go @@ -198,11 +198,6 @@ func (r Revision) identical(c Constraint) bool { return r == r2 } -// RevisionPtr takes a revision value and return it's pointer. -func RevisionPtr(r Revision) *Revision { - return &r -} - type branchVersion struct { name string isDefault bool From 7c46b99141b67042f88be5852be391fad4399e58 Mon Sep 17 00:00:00 2001 From: Sebastian Dahlgren Date: Sat, 29 Jul 2017 06:49:35 +0200 Subject: [PATCH 08/12] fixup! Make glide importer tests table based --- cmd/dep/glide_importer_test.go | 105 +++++++++++++++------------------ 1 file changed, 48 insertions(+), 57 deletions(-) diff --git a/cmd/dep/glide_importer_test.go b/cmd/dep/glide_importer_test.go index e7c044e298..4e752674b1 100644 --- a/cmd/dep/glide_importer_test.go +++ b/cmd/dep/glide_importer_test.go @@ -36,19 +36,18 @@ func newTestContext(h *test.Helper) *dep.Ctx { func TestGlideConfig_Convert(t *testing.T) { testCases := map[string]struct { - yaml glideYaml - lock *glideLock - expectConvertErr bool - matchPairedVersion bool - projectRoot gps.ProjectRoot - sourceRepo string - notExpectedProjectRoot *gps.ProjectRoot - expectedConstraint string - expectedRevision *gps.Revision - expectedVersion string - expectedLockCount int - expectedIgnoreCount int - expectedIgnoredPackages []string + yaml glideYaml + lock *glideLock + wantConvertErr bool + matchPairedVersion bool + projectRoot gps.ProjectRoot + sourceRepo string + wantConstraint string + wantRevision *gps.Revision + wantVersion string + wantLockCount int + wantIgnoreCount int + wantIgnoredPackages []string }{ "project": { yaml: glideYaml{ @@ -72,10 +71,10 @@ func TestGlideConfig_Convert(t *testing.T) { projectRoot: "github.com/sdboyer/deptest", sourceRepo: "https://github.com/sdboyer/deptest.git", matchPairedVersion: true, - expectedConstraint: "^1.0.0", - expectedLockCount: 1, - expectedRevision: gps.RevisionPtr(gps.Revision("ff2948a2ac8f538c4ecd55962e919d1e13e74baf")), - expectedVersion: "v1.0.0", + wantConstraint: "^1.0.0", + wantLockCount: 1, + wantRevision: revisionPtr(gps.Revision("ff2948a2ac8f538c4ecd55962e919d1e13e74baf")), + wantVersion: "v1.0.0", }, "test project": { yaml: glideYaml{ @@ -94,42 +93,42 @@ func TestGlideConfig_Convert(t *testing.T) { }, }, }, - projectRoot: "github.com/sdboyer/deptest", - expectedLockCount: 1, - expectedConstraint: "^1.0.0", - expectedVersion: "v1.0.0", + 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", - expectedIgnoreCount: 1, - expectedIgnoredPackages: []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, - expectedIgnoreCount: 1, - expectedIgnoredPackages: []string{"github.com/golang/notexist/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, - expectedIgnoreCount: 1, - expectedIgnoredPackages: []string{"github.com/golang/notexist/samples"}, + projectRoot: testGlideProjectRoot, + wantIgnoreCount: 1, + wantIgnoredPackages: []string{"github.com/golang/notexist/samples"}, }, "bad input, empty package name": { yaml: glideYaml{ Imports: []glidePackage{{Name: ""}}, }, - projectRoot: testGlideProjectRoot, - expectConvertErr: true, + projectRoot: testGlideProjectRoot, + wantConvertErr: true, }, } @@ -152,7 +151,7 @@ func TestGlideConfig_Convert(t *testing.T) { manifest, lock, err := g.convert(testCase.projectRoot) if err != nil { - if testCase.expectConvertErr { + if testCase.wantConvertErr { return } @@ -160,27 +159,27 @@ func TestGlideConfig_Convert(t *testing.T) { } // Lock checks. - if lock != nil && len(lock.P) != testCase.expectedLockCount { + if lock != nil && len(lock.P) != testCase.wantLockCount { t.Fatalf("Expected lock to have %d project(s), got %d", - testCase.expectedLockCount, + testCase.wantLockCount, len(lock.P)) } // Ignored projects checks. - if len(manifest.Ignored) != testCase.expectedIgnoreCount { + if len(manifest.Ignored) != testCase.wantIgnoreCount { t.Fatalf("Expected manifest to have %d ignored project(s), got %d", - testCase.expectedIgnoreCount, + testCase.wantIgnoreCount, len(manifest.Ignored)) } - if !equalSlice(manifest.Ignored, testCase.expectedIgnoredPackages) { + if !equalSlice(manifest.Ignored, testCase.wantIgnoredPackages) { t.Fatalf("Expected manifest to have ignore %s, got %s", - strings.Join(testCase.expectedIgnoredPackages, ", "), + strings.Join(testCase.wantIgnoredPackages, ", "), strings.Join(manifest.Ignored, ", ")) } - // Constraints checks below. Skip if there is no expected constraint. - if testCase.expectedConstraint == "" { + // Constraints checks below. Skip if there is no want constraint. + if testCase.wantConstraint == "" { return } @@ -191,16 +190,8 @@ func TestGlideConfig_Convert(t *testing.T) { } v := d.Constraint.String() - if v != testCase.expectedConstraint { - t.Fatalf("Expected manifest constraint to be %s, got %s", testCase.expectedConstraint, v) - } - - if testCase.notExpectedProjectRoot != nil { - _, ok := manifest.Constraints[*testCase.notExpectedProjectRoot] - if ok { - t.Fatalf("Expected the manifest to not have a dependency for '%s' but got none", - *testCase.notExpectedProjectRoot) - } + if v != testCase.wantConstraint { + t.Fatalf("Expected manifest constraint to be %s, got %s", testCase.wantConstraint, v) } p := lock.P[0] @@ -227,14 +218,14 @@ func TestGlideConfig_Convert(t *testing.T) { } ver := lpv.String() - if ver != testCase.expectedVersion { - t.Fatalf("Expected locked version to be '%s', got %s", testCase.expectedVersion, ver) + if ver != testCase.wantVersion { + t.Fatalf("Expected locked version to be '%s', got %s", testCase.wantVersion, ver) } - if testCase.expectedRevision != nil { + if testCase.wantRevision != nil { rev := lpv.Revision() - if rev != *testCase.expectedRevision { - t.Fatalf("Expected locked revision to be '%s', got %s", *testCase.expectedRevision, + if rev != *testCase.wantRevision { + t.Fatalf("Expected locked revision to be '%s', got %s", *testCase.wantRevision, rev) } } @@ -285,7 +276,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) } } } From cb7eb9a7e06f34163bd9f036e697ffd78f362298 Mon Sep 17 00:00:00 2001 From: Sebastian Dahlgren Date: Sun, 30 Jul 2017 09:31:32 +0200 Subject: [PATCH 09/12] fixup! Make the godep importer tests table based --- cmd/dep/godep_importer_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/dep/godep_importer_test.go b/cmd/dep/godep_importer_test.go index 8d8fd9d1cf..dd72f6ad29 100644 --- a/cmd/dep/godep_importer_test.go +++ b/cmd/dep/godep_importer_test.go @@ -236,7 +236,7 @@ func TestGodepConfig_Import(t *testing.T) { t.Fatal("Expected the lock to be generated") } - goldenFile := "godep/want_import_output.txt" + goldenFile := "godep/expected_import_output.txt" got := verboseOutput.String() want := h.GetTestFileString(goldenFile) if want != got { From cf94ba9ca2986af7b9b7956e30ec7b422b95e122 Mon Sep 17 00:00:00 2001 From: Sebastian Dahlgren Date: Wed, 9 Aug 2017 20:24:29 +0200 Subject: [PATCH 10/12] fixup! Make the godep importer tests table based --- cmd/dep/godep_importer_test.go | 54 +++++++++++----------------------- 1 file changed, 17 insertions(+), 37 deletions(-) diff --git a/cmd/dep/godep_importer_test.go b/cmd/dep/godep_importer_test.go index dd72f6ad29..106a8b7fcf 100644 --- a/cmd/dep/godep_importer_test.go +++ b/cmd/dep/godep_importer_test.go @@ -20,15 +20,14 @@ 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 - notWantedProjectRoot *gps.ProjectRoot - wantConstraint string - wantRevision *gps.Revision - wantVersion string - wantLockCount int + json godepJSON + wantConvertErr bool + matchPairedVersion bool + projectRoot gps.ProjectRoot + wantConstraint string + wantRevision gps.Revision + wantVersion string + wantLockCount int }{ "convert project": { json: godepJSON{ @@ -44,7 +43,7 @@ func TestGodepConfig_Convert(t *testing.T) { matchPairedVersion: true, projectRoot: gps.ProjectRoot("github.com/sdboyer/deptest"), wantConstraint: "^0.8.0", - wantRevision: revisionPtr(gps.Revision("ff2948a2ac8f538c4ecd55962e919d1e13e74baf")), + wantRevision: gps.Revision("ff2948a2ac8f538c4ecd55962e919d1e13e74baf"), wantVersion: "v0.8.0", wantLockCount: 1, }, @@ -76,7 +75,7 @@ func TestGodepConfig_Convert(t *testing.T) { projectRoot: gps.ProjectRoot("github.com/sdboyer/deptest"), matchPairedVersion: true, wantConstraint: "^1.0.0", - wantRevision: revisionPtr(gps.Revision("ff2948a2ac8f538c4ecd55962e919d1e13e74baf")), + wantRevision: gps.Revision("ff2948a2ac8f538c4ecd55962e919d1e13e74baf"), wantVersion: "v1.0.0", wantLockCount: 1, }, @@ -111,11 +110,10 @@ func TestGodepConfig_Convert(t *testing.T) { }, }, }, - projectRoot: gps.ProjectRoot("github.com/sdboyer/deptest"), - notWantedProjectRoot: projectRootPtr(gps.ProjectRoot("github.com/sdboyer/deptest/foo")), - wantLockCount: 1, - wantConstraint: "^1.0.0", - wantVersion: "v1.0.0", + projectRoot: gps.ProjectRoot("github.com/sdboyer/deptest"), + wantLockCount: 1, + wantConstraint: "^1.0.0", + wantVersion: "v1.0.0", }, } @@ -158,14 +156,6 @@ func TestGodepConfig_Convert(t *testing.T) { t.Fatalf("Expected manifest constraint to be %s, got %s", testCase.wantConstraint, v) } - if testCase.notWantedProjectRoot != nil { - _, ok := manifest.Constraints[*testCase.notWantedProjectRoot] - if ok { - t.Fatalf("Expected the manifest to not have a dependency for '%s' but got none", - *testCase.notWantedProjectRoot) - } - } - p := lock.P[0] if p.Ident().ProjectRoot != testCase.projectRoot { t.Fatalf("Expected the lock to have a project for '%s' but got '%s'", @@ -189,11 +179,11 @@ func TestGodepConfig_Convert(t *testing.T) { t.Fatalf("Expected locked version to be '%s', got %s", testCase.wantVersion, ver) } - if testCase.wantRevision != nil { + if testCase.wantRevision != "" { rev := lpv.Revision() - if rev != *testCase.wantRevision { + if rev != testCase.wantRevision { t.Fatalf("Expected locked revision to be '%s', got %s", - *testCase.wantRevision, + testCase.wantRevision, rev) } } @@ -338,13 +328,3 @@ func equalImports(a, b []godepPackage) bool { return true } - -// projectRootPtr takes a ProjectRoot value and returns a pointer. -func projectRootPtr(p gps.ProjectRoot) *gps.ProjectRoot { - return &p -} - -// revisionPtr takes a revision value and return it's pointer. -func revisionPtr(r gps.Revision) *gps.Revision { - return &r -} From cbc07aa8b7f251ecb7db0e987ea48ae9e56dabe4 Mon Sep 17 00:00:00 2001 From: Sebastian Dahlgren Date: Wed, 9 Aug 2017 20:24:44 +0200 Subject: [PATCH 11/12] fixup! Make glide importer tests table based --- cmd/dep/glide_importer_test.go | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/cmd/dep/glide_importer_test.go b/cmd/dep/glide_importer_test.go index 4e752674b1..630b7814b7 100644 --- a/cmd/dep/glide_importer_test.go +++ b/cmd/dep/glide_importer_test.go @@ -41,9 +41,9 @@ func TestGlideConfig_Convert(t *testing.T) { wantConvertErr bool matchPairedVersion bool projectRoot gps.ProjectRoot - sourceRepo string + wantSourceRepo string wantConstraint string - wantRevision *gps.Revision + wantRevision gps.Revision wantVersion string wantLockCount int wantIgnoreCount int @@ -69,11 +69,11 @@ func TestGlideConfig_Convert(t *testing.T) { }, }, projectRoot: "github.com/sdboyer/deptest", - sourceRepo: "https://github.com/sdboyer/deptest.git", + wantSourceRepo: "https://github.com/sdboyer/deptest.git", matchPairedVersion: true, wantConstraint: "^1.0.0", wantLockCount: 1, - wantRevision: revisionPtr(gps.Revision("ff2948a2ac8f538c4ecd55962e919d1e13e74baf")), + wantRevision: gps.Revision("ff2948a2ac8f538c4ecd55962e919d1e13e74baf"), wantVersion: "v1.0.0", }, "test project": { @@ -202,8 +202,8 @@ func TestGlideConfig_Convert(t *testing.T) { p.Ident().ProjectRoot) } - if p.Ident().Source != testCase.sourceRepo { - t.Fatalf("Expected locked source to be %s, got '%s'", testCase.sourceRepo, p.Ident().Source) + if p.Ident().Source != testCase.wantSourceRepo { + t.Fatalf("Expected locked source to be %s, got '%s'", testCase.wantSourceRepo, p.Ident().Source) } lv := p.Version() @@ -222,10 +222,11 @@ func TestGlideConfig_Convert(t *testing.T) { t.Fatalf("Expected locked version to be '%s', got %s", testCase.wantVersion, ver) } - if testCase.wantRevision != nil { + if testCase.wantRevision != "" { rev := lpv.Revision() - if rev != *testCase.wantRevision { - t.Fatalf("Expected locked revision to be '%s', got %s", *testCase.wantRevision, + if rev != testCase.wantRevision { + t.Fatalf("Expected locked revision to be '%s', got %s", + testCase.wantRevision, rev) } } From 1df5ee59e6bde788ca8217d73d7e1912ee342c7c Mon Sep 17 00:00:00 2001 From: Sebastian Dahlgren Date: Wed, 9 Aug 2017 20:46:11 +0200 Subject: [PATCH 12/12] fixup! Make the godep importer tests table based --- cmd/dep/godep_importer_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmd/dep/godep_importer_test.go b/cmd/dep/godep_importer_test.go index 106a8b7fcf..5b83b05325 100644 --- a/cmd/dep/godep_importer_test.go +++ b/cmd/dep/godep_importer_test.go @@ -59,8 +59,9 @@ func TestGodepConfig_Convert(t *testing.T) { }, projectRoot: gps.ProjectRoot("github.com/sdboyer/deptest"), matchPairedVersion: false, - wantConstraint: ">=1.12.0, <=12.0.0-g2fd980e", + wantConstraint: "^1.12.0-12-g2fd980e", wantLockCount: 1, + wantVersion: "v1.0.0", }, "empty comment": { json: godepJSON{