diff --git a/.golangci.toml b/.golangci.toml new file mode 100644 index 0000000..9776f20 --- /dev/null +++ b/.golangci.toml @@ -0,0 +1,39 @@ +[run] + deadline = "2m" + skip-files = [] + +[linters-settings] + + [linters-settings.govet] + check-shadowing = true + + [linters-settings.gocyclo] + min-complexity = 12.0 + + [linters-settings.maligned] + suggest-new = true + + [linters-settings.goconst] + min-len = 3.0 + min-occurrences = 3.0 + + [linters-settings.misspell] + locale = "US" + +[linters] + enable-all = true + disable = [ + "maligned", + "lll", + "gas", + "dupl", + "prealloc", + "gochecknoglobals", + "gochecknoinits", + ] + +[issues] + exclude-use-default = false + max-per-linter = 0 + max-same-issues = 0 + exclude = [] diff --git a/.travis.yml b/.travis.yml index 3e0e861..a04236e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,10 @@ cache: directories: - $GOPATH/pkg/mod +branches: + only: + - master + notifications: email: on_success: never @@ -15,6 +19,11 @@ notifications: env: - GO111MODULE=on +before_install: + # Install linters and misspell + - curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | bash -s -- -b $GOPATH/bin ${GOLANGCI_LINT_VERSION} + - golangci-lint --version + install: - go mod tidy - git diff --exit-code go.mod @@ -22,5 +31,5 @@ install: - go mod download script: - - make build + - make - make image diff --git a/Makefile b/Makefile index 2b93505..34b6081 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,15 @@ -.PHONY: default build image +.PHONY: default build image check -default: build +default: check test build + +test: + go test -v -cover ./... build: CGO_ENABLED=0 go build -a --installsuffix cgo --ldflags="-s" -o whoami image: docker build -t containous/whoami . + +check: + golangci-lint run diff --git a/app.go b/app.go index f8d9511..d52124e 100644 --- a/app.go +++ b/app.go @@ -19,6 +19,7 @@ import ( "github.com/gorilla/websocket" ) +// Units const ( _ = iota KB int64 = 1 << (10 * iota) @@ -110,13 +111,13 @@ func dataHandler(w http.ResponseWriter, r *http.Request) { unit := queryParams.Get("unit") switch strings.ToLower(unit) { case "kb": - size = size * KB + size *= KB case "mb": - size = size * MB + size *= MB case "gb": - size = size * GB + size *= GB case "tb": - size = size * TB + size *= TB } attachment, err := strconv.ParseBool(queryParams.Get("attachment")) @@ -248,7 +249,7 @@ func healthHandler(w http.ResponseWriter, req *http.Request) { func fillContent(length int64) io.ReadSeeker { charset := "-ABCDEFGHIJKLMNOPQRSTUVWXYZ" - b := make([]byte, length, length) + b := make([]byte, length) for i := range b { b[i] = charset[i%len(charset)]