Fixed gocyclo warnings and added pre-commit hook

This commit is contained in:
Oleg Atamanenko
2018-06-09 23:18:40 -04:00
parent 2b05d39067
commit 5c8d82aed0
4 changed files with 103 additions and 88 deletions

View File

@@ -12,6 +12,7 @@ before_install:
- go get -u golang.org/x/tools/cmd/goimports - go get -u golang.org/x/tools/cmd/goimports
- go get -u github.com/onsi/ginkgo/ginkgo - go get -u github.com/onsi/ginkgo/ginkgo
- go get -u github.com/monopole/mdrip - go get -u github.com/monopole/mdrip
- go get -u github.com/fzipp/gocyclo
# Install must be set to prevent default `go get` to run. # Install must be set to prevent default `go get` to run.
# The dependencies have already been vendored by `dep` so # The dependencies have already been vendored by `dep` so

View File

@@ -31,6 +31,11 @@ function testGoFmt {
diff <(echo -n) <(go_dirs | xargs -0 gofmt -s -d -l) diff <(echo -n) <(go_dirs | xargs -0 gofmt -s -d -l)
} }
function testGoCyclo {
diff <(echo -n) <(go_dirs | xargs -0 gocyclo -over 15)
}
function testGoImports { function testGoImports {
diff -u <(echo -n) <(go_dirs | xargs -0 goimports -l) diff -u <(echo -n) <(go_dirs | xargs -0 goimports -l)
} }
@@ -50,6 +55,7 @@ function testExamples {
runTest testGoFmt runTest testGoFmt
runTest testGoImports runTest testGoImports
runTest testGoVet runTest testGoVet
runTest testGoCyclo
runTest testGoTest runTest testGoTest
runTest testExamples runTest testExamples

View File

@@ -104,49 +104,51 @@ func TestBuild(t *testing.T) {
} }
for _, testcaseName := range testcases.List() { for _, testcaseName := range testcases.List() {
t.Run(testcaseName, func(t *testing.T) { t.Run(testcaseName, func(t *testing.T) { runBuildTestCase(t, testcaseName, updateKustomizeExpected, fs) })
name := testcaseName }
testcase := buildTestCase{}
testcaseDir := filepath.Join("testdata", "testcase-"+name) }
testcaseData, err := ioutil.ReadFile(filepath.Join(testcaseDir, "test.yaml"))
if err != nil { func runBuildTestCase(t *testing.T, testcaseName string, updateKustomizeExpected bool, fs fs.FileSystem) {
t.Fatalf("%s: %v", name, err) name := testcaseName
} testcase := buildTestCase{}
if err := yaml.Unmarshal(testcaseData, &testcase); err != nil { testcaseDir := filepath.Join("testdata", "testcase-"+name)
t.Fatalf("%s: %v", name, err) testcaseData, err := ioutil.ReadFile(filepath.Join(testcaseDir, "test.yaml"))
} if err != nil {
t.Fatalf("%s: %v", name, err)
ops := &buildOptions{ }
kustomizationPath: testcase.Filename, if err := yaml.Unmarshal(testcaseData, &testcase); err != nil {
} t.Fatalf("%s: %v", name, err)
buf := bytes.NewBuffer([]byte{}) }
err = ops.RunBuild(buf, os.Stderr, fs)
switch { ops := &buildOptions{
case err != nil && len(testcase.ExpectedError) == 0: kustomizationPath: testcase.Filename,
t.Errorf("unexpected error: %v", err) }
case err != nil && len(testcase.ExpectedError) != 0: buf := bytes.NewBuffer([]byte{})
if !strings.Contains(err.Error(), testcase.ExpectedError) { err = ops.RunBuild(buf, os.Stderr, fs)
t.Errorf("expected error to contain %q but got: %v", testcase.ExpectedError, err) switch {
} case err != nil && len(testcase.ExpectedError) == 0:
return t.Errorf("unexpected error: %v", err)
case err == nil && len(testcase.ExpectedError) != 0: case err != nil && len(testcase.ExpectedError) != 0:
t.Errorf("unexpected no error") if !strings.Contains(err.Error(), testcase.ExpectedError) {
} t.Errorf("expected error to contain %q but got: %v", testcase.ExpectedError, err)
}
actualBytes := buf.Bytes() return
if !updateKustomizeExpected { case err == nil && len(testcase.ExpectedError) != 0:
expectedBytes, err := ioutil.ReadFile(testcase.ExpectedStdout) t.Errorf("unexpected no error")
if err != nil { }
t.Errorf("unexpected error: %v", err)
} actualBytes := buf.Bytes()
if !reflect.DeepEqual(actualBytes, expectedBytes) { if !updateKustomizeExpected {
t.Errorf("%s\ndoesn't equal expected:\n%s\n", actualBytes, expectedBytes) expectedBytes, err := ioutil.ReadFile(testcase.ExpectedStdout)
} if err != nil {
} else { t.Errorf("unexpected error: %v", err)
ioutil.WriteFile(testcase.ExpectedStdout, actualBytes, 0644) }
} if !reflect.DeepEqual(actualBytes, expectedBytes) {
t.Errorf("%s\ndoesn't equal expected:\n%s\n", actualBytes, expectedBytes)
}) }
} else {
ioutil.WriteFile(testcase.ExpectedStdout, actualBytes, 0644)
} }
} }

View File

@@ -74,51 +74,57 @@ func TestDiff(t *testing.T) {
for _, testcaseName := range testcases.List() { for _, testcaseName := range testcases.List() {
t.Run(testcaseName, func(t *testing.T) { t.Run(testcaseName, func(t *testing.T) {
name := testcaseName runDiffTestCase(t, testcaseName, updateKustomizeExpected, fs,
testcase := DiffTestCase{} noopDir, transformedDir, timestamp)
testcaseDir := filepath.Join("testdata", "testcase-"+name)
testcaseData, err := ioutil.ReadFile(filepath.Join(testcaseDir, "test.yaml"))
if err != nil {
t.Fatalf("%s: %v", name, err)
}
if err := yaml.Unmarshal(testcaseData, &testcase); err != nil {
t.Fatalf("%s: %v", name, err)
}
diffOps := &diffOptions{
kustomizationPath: testcase.Filename,
}
buf := bytes.NewBuffer([]byte{})
err = diffOps.RunDiff(buf, os.Stderr, fs)
switch {
case err != nil && len(testcase.ExpectedError) == 0:
t.Errorf("unexpected error: %v", err)
case err != nil && len(testcase.ExpectedError) != 0:
if !strings.Contains(err.Error(), testcase.ExpectedError) {
t.Errorf("expected error to contain %q but got: %v", testcase.ExpectedError, err)
}
return
case err == nil && len(testcase.ExpectedError) != 0:
t.Errorf("unexpected no error")
}
actualString := string(buf.Bytes())
actualString = noopDir.ReplaceAllString(actualString, "/tmp/noop/")
actualString = transformedDir.ReplaceAllString(actualString, "/tmp/transformed/")
actualString = timestamp.ReplaceAllString(actualString, "YYYY-MM-DD HH:MM:SS")
actualBytes := []byte(actualString)
if !updateKustomizeExpected {
expectedBytes, err := ioutil.ReadFile(testcase.ExpectedDiff)
if err != nil {
t.Errorf("unexpected error: %v", err)
}
if !reflect.DeepEqual(actualBytes, expectedBytes) {
t.Errorf("%s\ndoesn't equal expected:\n%s\n", actualBytes, expectedBytes)
}
} else {
ioutil.WriteFile(testcase.ExpectedDiff, actualBytes, 0644)
}
}) })
} }
} }
func runDiffTestCase(t *testing.T, testcaseName string, updateKustomizeExpected bool, fs fs.FileSystem,
noopDir, transformedDir, timestamp *regexp.Regexp) {
name := testcaseName
testcase := DiffTestCase{}
testcaseDir := filepath.Join("testdata", "testcase-"+name)
testcaseData, err := ioutil.ReadFile(filepath.Join(testcaseDir, "test.yaml"))
if err != nil {
t.Fatalf("%s: %v", name, err)
}
if err := yaml.Unmarshal(testcaseData, &testcase); err != nil {
t.Fatalf("%s: %v", name, err)
}
diffOps := &diffOptions{
kustomizationPath: testcase.Filename,
}
buf := bytes.NewBuffer([]byte{})
err = diffOps.RunDiff(buf, os.Stderr, fs)
switch {
case err != nil && len(testcase.ExpectedError) == 0:
t.Errorf("unexpected error: %v", err)
case err != nil && len(testcase.ExpectedError) != 0:
if !strings.Contains(err.Error(), testcase.ExpectedError) {
t.Errorf("expected error to contain %q but got: %v", testcase.ExpectedError, err)
}
return
case err == nil && len(testcase.ExpectedError) != 0:
t.Errorf("unexpected no error")
}
actualString := string(buf.Bytes())
actualString = noopDir.ReplaceAllString(actualString, "/tmp/noop/")
actualString = transformedDir.ReplaceAllString(actualString, "/tmp/transformed/")
actualString = timestamp.ReplaceAllString(actualString, "YYYY-MM-DD HH:MM:SS")
actualBytes := []byte(actualString)
if !updateKustomizeExpected {
expectedBytes, err := ioutil.ReadFile(testcase.ExpectedDiff)
if err != nil {
t.Errorf("unexpected error: %v", err)
}
if !reflect.DeepEqual(actualBytes, expectedBytes) {
t.Errorf("%s\ndoesn't equal expected:\n%s\n", actualBytes, expectedBytes)
}
} else {
ioutil.WriteFile(testcase.ExpectedDiff, actualBytes, 0644)
}
}