aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2017-03-24 17:52:42 +0800
committerGitHub <noreply@github.com>2017-03-24 17:52:42 +0800
commit37e252587a3429ab71cbb3ace7dca09733fa6c7c (patch)
treeb73049695e8064ae54b048358f949966e0e5361f
parentbb7dca275c44fe9d176e629b3440adf92d26a150 (diff)
parent69ac6cc70e4f2e712be91be2795ef79bce3f0e89 (diff)
downloaddexon-37e252587a3429ab71cbb3ace7dca09733fa6c7c.tar
dexon-37e252587a3429ab71cbb3ace7dca09733fa6c7c.tar.gz
dexon-37e252587a3429ab71cbb3ace7dca09733fa6c7c.tar.bz2
dexon-37e252587a3429ab71cbb3ace7dca09733fa6c7c.tar.lz
dexon-37e252587a3429ab71cbb3ace7dca09733fa6c7c.tar.xz
dexon-37e252587a3429ab71cbb3ace7dca09733fa6c7c.tar.zst
dexon-37e252587a3429ab71cbb3ace7dca09733fa6c7c.zip
Merge pull request #3813 from fjl/build-fixes-2
build: unify vendor skipping, always run go vet
-rw-r--r--.travis.yml8
-rw-r--r--appveyor.yml2
-rw-r--r--build/ci.go36
-rw-r--r--internal/build/util.go28
-rw-r--r--log/handler.go7
5 files changed, 45 insertions, 36 deletions
diff --git a/.travis.yml b/.travis.yml
index 4bef48a0d..d3b0d427c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -12,8 +12,10 @@ matrix:
- sudo modprobe fuse
- 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
- # These are the latest Go versions, only run go vet and misspell on these
+ # These are the latest Go versions.
- os: linux
dist: trusty
sudo: required
@@ -24,7 +26,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 +36,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 27589fc7f..622417580 100644
--- a/build/ci.go
+++ b/build/ci.go
@@ -24,7 +24,7 @@ Usage: go run ci.go <command> <command flags/arguments>
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
@@ -173,19 +173,7 @@ func doInstall(cmdline []string) {
if flag.NArg() > 0 {
packages = flag.Args()
}
-
- // Resolve ./... manually and remove vendor/bazil/fuse (fuse is not in windows)
- out, err := goTool("list", "./...").CombinedOutput()
- if err != nil {
- log.Fatalf("package listing failed: %v\n%s", err, string(out))
- }
- packages = []string{}
- for _, line := range strings.Split(string(out), "\n") {
- if !strings.Contains(line, "vendor") {
- packages = append(packages, strings.TrimSpace(line))
- }
- }
-
+ packages = build.ExpandPackagesNoVendor(packages)
if *arch == "" || *arch == runtime.GOARCH {
goinstall := goTool("install", buildFlags(env)...)
@@ -274,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")
)
@@ -284,23 +271,10 @@ func doTest(cmdline []string) {
if len(flag.CommandLine.Args()) > 0 {
packages = flag.CommandLine.Args()
}
- if len(packages) == 1 && packages[0] == "./..." {
- // Resolve ./... manually since go vet will fail on vendored stuff
- out, err := goTool("list", "./...").CombinedOutput()
- if err != nil {
- log.Fatalf("package listing failed: %v\n%s", err, string(out))
- }
- packages = []string{}
- for _, line := range strings.Split(string(out), "\n") {
- if !strings.Contains(line, "vendor") {
- packages = append(packages, strings.TrimSpace(line))
- }
- }
- }
+ 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/internal/build/util.go b/internal/build/util.go
index 4df7b9138..44f6760b9 100644
--- a/internal/build/util.go
+++ b/internal/build/util.go
@@ -26,6 +26,7 @@ import (
"os"
"os/exec"
"path/filepath"
+ "runtime"
"strings"
"text/template"
)
@@ -136,3 +137,30 @@ func CopyFile(dst, src string, mode os.FileMode) {
log.Fatal(err)
}
}
+
+// ExpandPackagesNoVendor expands a cmd/go import path pattern, skipping
+// vendored packages.
+func ExpandPackagesNoVendor(patterns []string) []string {
+ expand := false
+ for _, pkg := range patterns {
+ if strings.Contains(pkg, "...") {
+ expand = true
+ }
+ }
+ if expand {
+ args := append([]string{"list"}, patterns...)
+ cmd := exec.Command(filepath.Join(runtime.GOROOT(), "bin", "go"), args...)
+ out, err := cmd.CombinedOutput()
+ if err != nil {
+ log.Fatalf("package listing failed: %v\n%s", err, string(out))
+ }
+ var packages []string
+ for _, line := range strings.Split(string(out), "\n") {
+ if !strings.Contains(line, "/vendor/") {
+ packages = append(packages, strings.TrimSpace(line))
+ }
+ }
+ return packages
+ }
+ return patterns
+}
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.