From df1fbe3c067bbca9be10f6fc2d09a66f82313a82 Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Thu, 23 Mar 2017 15:48:30 +0100 Subject: [PATCH] build: always run go vet This ensures 'make test' finds all errors that remote CI would find. Go 1.7 vet reports a false positive in package log, add a workaround. --- .travis.yml | 4 ++-- appveyor.yml | 2 +- build/ci.go | 7 ++----- log/handler.go | 7 ++++++- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4bef48a0d..9d85635b1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ matrix: - sudo chmod 666 /dev/fuse - sudo chown root:$USER /etc/fuse.conf - go run build/ci.go install - - go run build/ci.go test -coverage -vet -misspell + - go run build/ci.go test -coverage -misspell - os: osx go: 1.8 @@ -34,7 +34,7 @@ matrix: - brew install caskroom/cask/brew-cask - brew cask install osxfuse - go run build/ci.go install - - go run build/ci.go test -coverage -vet -misspell + - go run build/ci.go test -coverage -misspell # This builder does the Ubuntu PPA and Linux Azure uploads - os: linux diff --git a/appveyor.yml b/appveyor.yml index c15696705..c9c2e357e 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -36,4 +36,4 @@ after_build: test_script: - set CGO_ENABLED=1 - - go run build\ci.go test -vet -coverage + - go run build\ci.go test -coverage diff --git a/build/ci.go b/build/ci.go index fcdd33788..622417580 100644 --- a/build/ci.go +++ b/build/ci.go @@ -24,7 +24,7 @@ Usage: go run ci.go Available commands are: install [ -arch architecture ] [ packages... ] -- builds packages and executables - test [ -coverage ] [ -vet ] [ -misspell ] [ packages... ] -- runs the tests + test [ -coverage ] [ -misspell ] [ packages... ] -- runs the tests archive [ -arch architecture ] [ -type zip|tar ] [ -signer key-envvar ] [ -upload dest ] -- archives build artefacts importkeys -- imports signing keys from env debsrc [ -signer key-id ] [ -upload dest ] -- creates a debian source package @@ -262,7 +262,6 @@ func goToolArch(arch string, subcmd string, args ...string) *exec.Cmd { func doTest(cmdline []string) { var ( - vet = flag.Bool("vet", false, "Whether to run go vet") misspell = flag.Bool("misspell", false, "Whether to run the spell checker") coverage = flag.Bool("coverage", false, "Whether to record code coverage") ) @@ -275,9 +274,7 @@ func doTest(cmdline []string) { packages = build.ExpandPackagesNoVendor(packages) // Run analysis tools before the tests. - if *vet { - build.MustRun(goTool("vet", packages...)) - } + build.MustRun(goTool("vet", packages...)) if *misspell { spellcheck(packages) } diff --git a/log/handler.go b/log/handler.go index abb17b4c4..d5594b853 100644 --- a/log/handler.go +++ b/log/handler.go @@ -106,11 +106,16 @@ func CallerFileHandler(h Handler) Handler { // the context with key "fn". func CallerFuncHandler(h Handler) Handler { return FuncHandler(func(r *Record) error { - r.Ctx = append(r.Ctx, "fn", fmt.Sprintf("%+n", r.Call)) + r.Ctx = append(r.Ctx, "fn", formatCall("%+n", r.Call)) return h.Log(r) }) } +// This function is here to please go vet on Go < 1.8. +func formatCall(format string, c stack.Call) string { + return fmt.Sprintf(format, c) +} + // CallerStackHandler returns a Handler that adds a stack trace to the context // with key "stack". The stack trace is formated as a space separated list of // call sites inside matching []'s. The most recent call site is listed first.