Skip to content
This repository was archived by the owner on Sep 9, 2020. It is now read-only.

make importers error tolerant #1474

Merged
merged 6 commits into from
Jan 11, 2018
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
update importer tests
  • Loading branch information
sudo-suhas committed Jan 5, 2018
commit e5a6715e5fa77f9454f93aefba03e971c378194e
6 changes: 3 additions & 3 deletions internal/importers/base/importer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -405,10 +405,10 @@ func TestBaseImporter_ImportProjects(t *testing.T) {
name := name
tc := tc
t.Run(name, func(t *testing.T) {
err := tc.Execute(t, func(logger *log.Logger, sm gps.SourceManager) (*dep.Manifest, *dep.Lock, error) {
err := tc.Execute(t, func(logger *log.Logger, sm gps.SourceManager) (*dep.Manifest, *dep.Lock) {
i := NewImporter(logger, true, sm)
convertErr := i.ImportPackages(tc.projects, tc.DefaultConstraintFromLock)
return i.Manifest, i.Lock, convertErr
i.ImportPackages(tc.projects, tc.DefaultConstraintFromLock)
return i.Manifest, i.Lock
})
if err != nil {
t.Fatalf("%#v", err)
Expand Down
4 changes: 2 additions & 2 deletions internal/importers/glide/importer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ func TestGlideConfig_Convert(t *testing.T) {
},
glideLock{},
importertest.TestCase{
WantConvertErr: true,
WantWarning: "Warning: Invalid glide configuration: Name is required",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is exactly how we should test these changes. 👍

},
},
"warn unused os field": {
Expand Down Expand Up @@ -160,7 +160,7 @@ func TestGlideConfig_Convert(t *testing.T) {
name := name
testCase := testCase
t.Run(name, func(t *testing.T) {
err := testCase.Execute(t, func(logger *log.Logger, sm gps.SourceManager) (*dep.Manifest, *dep.Lock, error) {
err := testCase.Execute(t, func(logger *log.Logger, sm gps.SourceManager) (*dep.Manifest, *dep.Lock) {
g := NewImporter(logger, true, sm)
g.glideConfig = testCase.yaml
g.glideLock = testCase.lock
Expand Down
9 changes: 6 additions & 3 deletions internal/importers/glock/importer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,16 @@ func TestGlockConfig_Convert(t *testing.T) {
},
"missing package name": {
importertest.TestCase{
WantConvertErr: true,
WantWarning: "Warning: Invalid glock configuration, import path is required",
},
[]glockPackage{{importPath: ""}},
},
"missing revision": {
importertest.TestCase{
WantConvertErr: true,
WantWarning: fmt.Sprintf(
"Warning: Invalid glock configuration, revision not found for import path %q",
importertest.Project,
),
},
[]glockPackage{{importPath: importertest.Project}},
},
Expand All @@ -54,7 +57,7 @@ func TestGlockConfig_Convert(t *testing.T) {
name := name
testCase := testCase
t.Run(name, func(t *testing.T) {
err := testCase.Execute(t, func(logger *log.Logger, sm gps.SourceManager) (*dep.Manifest, *dep.Lock, error) {
err := testCase.Execute(t, func(logger *log.Logger, sm gps.SourceManager) (*dep.Manifest, *dep.Lock) {
g := NewImporter(logger, true, sm)
g.packages = testCase.packages
return g.convert(importertest.RootProject)
Expand Down
10 changes: 7 additions & 3 deletions internal/importers/godep/importer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ package godep

import (
"bytes"
"fmt"
"log"
"path/filepath"
"testing"
Expand Down Expand Up @@ -55,15 +56,18 @@ func TestGodepConfig_Convert(t *testing.T) {
},
"missing package name": {
importertest.TestCase{
WantConvertErr: true,
WantWarning: "Warning: Invalid godep configuration, ImportPath is required",
},
godepJSON{
Imports: []godepPackage{{ImportPath: ""}},
},
},
"missing revision": {
importertest.TestCase{
WantConvertErr: true,
WantWarning: fmt.Sprintf(
"Warning: Invalid godep configuration, Rev not found for ImportPath %q",
importertest.Project,
),
},
godepJSON{
Imports: []godepPackage{
Expand All @@ -79,7 +83,7 @@ func TestGodepConfig_Convert(t *testing.T) {
name := name
testCase := testCase
t.Run(name, func(t *testing.T) {
err := testCase.Execute(t, func(logger *log.Logger, sm gps.SourceManager) (*dep.Manifest, *dep.Lock, error) {
err := testCase.Execute(t, func(logger *log.Logger, sm gps.SourceManager) (*dep.Manifest, *dep.Lock) {
g := NewImporter(logger, true, sm)
g.json = testCase.json
return g.convert(importertest.RootProject)
Expand Down
10 changes: 7 additions & 3 deletions internal/importers/govend/importer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ package govend

import (
"bytes"
"fmt"
"log"
"path/filepath"
"testing"
Expand Down Expand Up @@ -46,7 +47,7 @@ func TestGovendConfig_Convert(t *testing.T) {
},
},
importertest.TestCase{
WantConvertErr: true,
WantWarning: "Warning: Invalid govend configuration, path is required",
},
},

Expand All @@ -59,7 +60,10 @@ func TestGovendConfig_Convert(t *testing.T) {
},
},
importertest.TestCase{
WantConvertErr: true,
WantWarning: fmt.Sprintf(
"Warning: Invalid govend configuration, rev not found for Path %q",
importertest.Project,
),
},
},
}
Expand All @@ -68,7 +72,7 @@ func TestGovendConfig_Convert(t *testing.T) {
name := name
testCase := testCase
t.Run(name, func(t *testing.T) {
err := testCase.Execute(t, func(logger *log.Logger, sm gps.SourceManager) (*dep.Manifest, *dep.Lock, error) {
err := testCase.Execute(t, func(logger *log.Logger, sm gps.SourceManager) (*dep.Manifest, *dep.Lock) {
g := NewImporter(logger, true, sm)
g.yaml = testCase.yaml
return g.convert(importertest.RootProject)
Expand Down
4 changes: 2 additions & 2 deletions internal/importers/govendor/importer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ func TestGovendorConfig_Convert(t *testing.T) {
},
},
importertest.TestCase{
WantConvertErr: true,
WantWarning: "Warning: Invalid govendor configuration, Path is required",
},
},
"missing package revision doesn't cause an error": {
Expand All @@ -142,7 +142,7 @@ func TestGovendorConfig_Convert(t *testing.T) {
name := name
testCase := testCase
t.Run(name, func(t *testing.T) {
err := testCase.Execute(t, func(logger *log.Logger, sm gps.SourceManager) (*dep.Manifest, *dep.Lock, error) {
err := testCase.Execute(t, func(logger *log.Logger, sm gps.SourceManager) (*dep.Manifest, *dep.Lock) {
g := NewImporter(logger, true, sm)
g.file = testCase.file
return g.convert(importertest.RootProject)
Expand Down
10 changes: 7 additions & 3 deletions internal/importers/gvt/importer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ package gvt

import (
"bytes"
"fmt"
"log"
"path/filepath"
"testing"
Expand Down Expand Up @@ -89,15 +90,18 @@ func TestGvtConfig_Convert(t *testing.T) {
},
"missing package name": {
importertest.TestCase{
WantConvertErr: true,
WantWarning: "Warning: Invalid gvt configuration, ImportPath is required",
},
gvtManifest{
Deps: []gvtPkg{{ImportPath: ""}},
},
},
"missing revision": {
importertest.TestCase{
WantConvertErr: true,
WantWarning: fmt.Sprintf(
"Warning: Invalid gvt configuration, Revision not found for ImportPath %q",
importertest.Project,
),
},
gvtManifest{
Deps: []gvtPkg{
Expand All @@ -113,7 +117,7 @@ func TestGvtConfig_Convert(t *testing.T) {
name := name
testCase := testCase
t.Run(name, func(t *testing.T) {
err := testCase.Execute(t, func(logger *log.Logger, sm gps.SourceManager) (*dep.Manifest, *dep.Lock, error) {
err := testCase.Execute(t, func(logger *log.Logger, sm gps.SourceManager) (*dep.Manifest, *dep.Lock) {
g := NewImporter(logger, true, sm)
g.gvtConfig = testCase.gvtConfig
return g.convert(importertest.RootProject)
Expand Down
20 changes: 4 additions & 16 deletions internal/importers/importertest/testcase.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import (
// of an importer converting from an external config format to dep's.
type TestCase struct {
DefaultConstraintFromLock bool
WantConvertErr bool
WantSourceRepo string
WantConstraint string
WantRevision gps.Revision
Expand All @@ -45,7 +44,7 @@ func NewTestContext(h *test.Helper) *dep.Ctx {
}

// Execute and validate the test case.
func (tc TestCase) Execute(t *testing.T, convert func(logger *log.Logger, sm gps.SourceManager) (*dep.Manifest, *dep.Lock, error)) error {
func (tc TestCase) Execute(t *testing.T, convert func(logger *log.Logger, sm gps.SourceManager) (*dep.Manifest, *dep.Lock)) error {
h := test.NewHelper(t)
defer h.Cleanup()
// Disable parallel tests until we can resolve this error on the Windows builds:
Expand All @@ -61,23 +60,12 @@ func (tc TestCase) Execute(t *testing.T, convert func(logger *log.Logger, sm gps
output := &bytes.Buffer{}
ctx.Err = log.New(output, "", 0)

manifest, lock, convertErr := convert(ctx.Err, sm)
return tc.validate(manifest, lock, convertErr, output)
manifest, lock := convert(ctx.Err, sm)
return tc.validate(manifest, lock, output)
}

// validate returns an error if any of the testcase validations failed.
func (tc TestCase) validate(manifest *dep.Manifest, lock *dep.Lock, convertErr error, output *bytes.Buffer) error {
if tc.WantConvertErr {
if convertErr == nil {
return errors.New("Expected the conversion to fail, but it did not return an error")
}
return nil
}

if convertErr != nil {
return errors.Wrap(convertErr, "Expected the conversion to pass, but it returned an error")
}

func (tc TestCase) validate(manifest *dep.Manifest, lock *dep.Lock, output *bytes.Buffer) error {
if !equalSlice(manifest.Ignored, tc.WantIgnored) {
return errors.Errorf("unexpected set of ignored projects: \n\t(GOT) %#v \n\t(WNT) %#v",
manifest.Ignored, tc.WantIgnored)
Expand Down
10 changes: 7 additions & 3 deletions internal/importers/vndr/importer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ package vndr

import (
"bytes"
"fmt"
"log"
"path/filepath"
"reflect"
Expand Down Expand Up @@ -41,15 +42,18 @@ func TestVndrConfig_Convert(t *testing.T) {
reference: importertest.V1Tag,
}},
importertest.TestCase{
WantConvertErr: true,
WantWarning: "Warning: Invalid vndr configuration, import path is required",
},
},
"missing reference": {
[]vndrPackage{{
importPath: importertest.Project,
}},
importertest.TestCase{
WantConvertErr: true,
WantWarning: fmt.Sprintf(
"Warning: Invalid vndr configuration, reference not found for import path %q",
importertest.Project,
),
},
},
}
Expand All @@ -58,7 +62,7 @@ func TestVndrConfig_Convert(t *testing.T) {
name := name
testCase := testCase
t.Run(name, func(t *testing.T) {
err := testCase.Execute(t, func(logger *log.Logger, sm gps.SourceManager) (*dep.Manifest, *dep.Lock, error) {
err := testCase.Execute(t, func(logger *log.Logger, sm gps.SourceManager) (*dep.Manifest, *dep.Lock) {
g := NewImporter(logger, true, sm)
g.packages = testCase.packages
return g.convert(importertest.RootProject)
Expand Down