From 1fbe72b52dd3d8caa725f44403ec6ba94d54f7bc Mon Sep 17 00:00:00 2001 From: James Shubin Date: Mon, 29 May 2017 14:13:03 -0400 Subject: [PATCH] test: Run go vet across whole packages not individual files The golang tooling is quite deficient, in that it makes it quite difficult to get the tools to do_the_right_thing, without ample wrapping of bash scripting. Go vet was finding issues because it didn't have the full context available. Hopefully this package level context is sufficient for now. It still lacks inter-package context though. --- test/test-govet.sh | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/test/test-govet.sh b/test/test-govet.sh index a5a25e55..4cfa9407 100755 --- a/test/test-govet.sh +++ b/test/test-govet.sh @@ -31,13 +31,25 @@ function token-coloncheck() { return 0 } -for file in `find . -maxdepth 3 -type f -name '*.go' -not -path './old/*' -not -path './tmp/*'`; do +# loop through directories in an attempt to scan each go package +for dir in `find . -maxdepth 5 -type d -not -path './old/*' -not -path './old' -not -path './tmp/*' -not -path './tmp' -not -path './.*' -not -path './vendor/*'`; do + match="$dir/*.go" + #echo "match is: $match" + if ! ls $match &>/dev/null; then + #echo "skipping: $match" + continue # no *.go files found + fi + #echo "matching: $match" if [[ -z $(echo "${GO_VERSION[2]}" | grep -E 'go1.2|go1.3|go1.4|go1.5|go1.6|go1.7|go1.8') ]]; then # workaround go vet issues by adding the new -source flag (go1.9+) - run-test go vet -source "$file" || fail_test "go vet -source did not pass" + echo run-test go vet -source "$match" || fail_test "go vet -source did not pass pkg" else - run-test go vet "$file" || fail_test "go vet did not pass" # since it doesn't output an ok message on pass + echo run-test go vet "$match" || fail_test "go vet did not pass pkg" # since it doesn't output an ok message on pass fi +done + +# loop through individual *.go files +for file in `find . -maxdepth 3 -type f -name '*.go' -not -path './old/*' -not -path './tmp/*'`; do run-test grep 'log.' "$file" | grep '\\n"' && fail_test 'no newline needed in log.Printf()' # no \n needed in log.Printf() run-test simplify-gocase "$file" run-test token-coloncheck "$file"