-
Notifications
You must be signed in to change notification settings - Fork 198
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #249 from alexzielenski/make-gen-fix
Add verify-examples.sh and switch from makefiles to go test and go generate
- Loading branch information
Showing
11 changed files
with
197 additions
and
89 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
//go:generate go run k8s.io/gengo/examples/deepcopy-gen -i k8s.io/gengo/examples/deepcopy-gen/output_tests/... -O zz_generated --go-header-file=../../../boilerplate/boilerplate.go.txt -o . --trim-path-prefix=k8s.io/gengo/examples/deepcopy-gen/output_tests | ||
package output_tests |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
// Ignore this file to prevent zz_generated for this package | ||
//go:build !ignore_autogenerated | ||
|
||
//go:generate go run k8s.io/gengo/examples/defaulter-gen -i k8s.io/gengo/examples/defaulter-gen/output_tests/... -O zz_generated --go-header-file=../../../boilerplate/boilerplate.go.txt -o . --trim-path-prefix=k8s.io/gengo/examples/defaulter-gen/output_tests | ||
package output_tests_test | ||
|
||
import ( | ||
// For go-generate | ||
_ "k8s.io/gengo/examples/defaulter-gen/generators" | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,132 @@ | ||
package main_test | ||
|
||
import ( | ||
"bytes" | ||
"context" | ||
"os/exec" | ||
"path" | ||
"runtime" | ||
"strings" | ||
"testing" | ||
) | ||
|
||
const pkgName string = "k8s.io/gengo/examples/import-boss" | ||
|
||
func runImportBoss(inputPackages ...string) error { | ||
for i, v := range inputPackages { | ||
inputPackages[i] = pkg(v) | ||
} | ||
|
||
_, filename, _, _ := runtime.Caller(1) | ||
dir := path.Dir(filename) | ||
cmd := exec.CommandContext(context.Background(), | ||
"go", "run", pkgName, "--logtostderr", "--v=4", | ||
"-i", strings.Join(inputPackages, ","), | ||
"-o", ".", | ||
"--trim-path-prefix", pkgName, | ||
) | ||
cmd.Dir = dir | ||
|
||
errBuf := &bytes.Buffer{} | ||
outBuf := &bytes.Buffer{} | ||
cmd.Stderr = errBuf | ||
cmd.Stdout = outBuf | ||
|
||
err := cmd.Run() | ||
print(errBuf.String()) | ||
print(outBuf.String()) | ||
return err | ||
} | ||
|
||
func pkg(name string) string { | ||
return pkgName + "/tests/" + name | ||
} | ||
|
||
type importBossTestCase struct { | ||
packageName string | ||
expectError bool | ||
} | ||
|
||
func TestRules(t *testing.T) { | ||
cases := []importBossTestCase{ | ||
{ | ||
packageName: "a", | ||
expectError: false, | ||
}, | ||
{ | ||
packageName: "b", | ||
expectError: true, | ||
}, | ||
{ | ||
packageName: "c", | ||
expectError: false, | ||
}, | ||
{ | ||
packageName: "nested", | ||
expectError: true, | ||
}, | ||
{ | ||
packageName: "nested/nested", | ||
expectError: false, | ||
}, | ||
{ | ||
packageName: "nested/nested/nested", | ||
expectError: true, | ||
}, | ||
{ | ||
packageName: "nested/nested/nested/inherit", | ||
expectError: true, | ||
}, | ||
} | ||
|
||
for _, v := range cases { | ||
t.Run(v.packageName, func(t *testing.T) { | ||
err := runImportBoss("rules/" + v.packageName) | ||
if err != nil != v.expectError { | ||
t.Errorf("expected error: %v, returned error: %v", v.expectError, err != nil) | ||
} | ||
}) | ||
} | ||
} | ||
|
||
func TestInverse(t *testing.T) { | ||
libPackages := []string{ | ||
"inverse/lib", | ||
"inverse/lib/nonprod", | ||
"inverse/lib/private", | ||
"inverse/lib/public", | ||
} | ||
|
||
cases := []importBossTestCase{ | ||
|
||
{ | ||
packageName: "a", | ||
expectError: false, | ||
}, | ||
{ | ||
packageName: "b", | ||
expectError: true, | ||
}, | ||
{ | ||
packageName: "c", | ||
expectError: false, | ||
}, | ||
{ | ||
packageName: "d", | ||
expectError: true, | ||
}, | ||
{ | ||
packageName: "lib/quarantine", | ||
expectError: true, | ||
}, | ||
} | ||
|
||
for _, v := range cases { | ||
t.Run(v.packageName, func(t *testing.T) { | ||
err := runImportBoss(append([]string{"inverse/" + v.packageName}, libPackages...)...) | ||
if err != nil != v.expectError { | ||
t.Errorf("expected error: %v, returned error: %v", v.expectError, err != nil) | ||
} | ||
}) | ||
} | ||
} |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
#!/usr/bin/env bash | ||
|
||
# hack/verify-examples.sh | ||
# Pre-submit script to verify: | ||
# 1.) committed generated code matches source | ||
# 2.) code generation tests pass | ||
|
||
# Exit immediately if any command fails | ||
set -e | ||
|
||
# Silence pushd/popd | ||
pushd () { | ||
command pushd "$@" > /dev/null | ||
} | ||
|
||
popd () { | ||
command popd "$@" > /dev/null | ||
} | ||
|
||
# Ensure all files are committed | ||
if ! git diff --quiet HEAD; then | ||
echo "FAIL: git client is not clean" | ||
exit 1 | ||
fi | ||
|
||
echo "Removing generated code" | ||
|
||
# Defaulter-gen and deepcopy-gen both generate types of this format | ||
find ./examples -name "zz_generated.go" -type f -delete | ||
|
||
# Delete set-gen tests | ||
find ./examples/set-gen/sets -type f -maxdepth 1 -not -name "set_test.go" -not -name "doc.go" -delete | ||
|
||
# Generate set-gen first since others depend on it | ||
echo "Generating example output..." | ||
go generate ./examples/set-gen/... | ||
go generate ./examples/... | ||
pushd ./examples/defaulter-gen/_output_tests; go generate ./...; popd | ||
|
||
# If there are any differences with committed files, fail | ||
if ! git diff --quiet HEAD; then | ||
echo "FAIL: output files changed" | ||
git diff | ||
exit 1 | ||
fi | ||
|
||
echo "Running tests..." | ||
go test ./examples/... | ||
pushd ./examples/defaulter-gen/_output_tests; go test ./...; popd |