From 21d3a40f3b07d17ce96a2a000567a9533af50854 Mon Sep 17 00:00:00 2001 From: Adam Reese Date: Fri, 8 Mar 2019 11:45:42 -0800 Subject: [PATCH] feat(tests): replace gometalinter with golangci-lint Signed-off-by: Adam Reese --- .golangci.yml | 27 ++++++++++++++++++ Makefile | 16 +++++++---- pkg/helm/option.go | 4 --- pkg/plugin/plugin.go | 2 +- pkg/registry/reference.go | 2 +- pkg/releaseutil/kind_sorter.go | 8 ------ scripts/validate-go.sh | 51 ---------------------------------- 7 files changed, 39 insertions(+), 71 deletions(-) create mode 100644 .golangci.yml delete mode 100755 scripts/validate-go.sh diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 000000000..3961e05ad --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,27 @@ +run: + deadline: 2m + +linters: + disable-all: true + enable: + - deadcode + - dupl + - gofmt + - goimports + - golint + - gosimple + - govet + - ineffassign + - misspell + - nakedret + - structcheck + - unused + - varcheck + +linters-settings: + gofmt: + simplify: true + goimports: + local-prefixes: k8s.io/helm + dupl: + threshold: 400 diff --git a/Makefile b/Makefile index 2adc21b3e..ca9410310 100644 --- a/Makefile +++ b/Makefile @@ -3,10 +3,11 @@ DIST_DIRS := find * -type d -exec TARGETS := darwin/amd64 linux/amd64 linux/386 linux/arm linux/arm64 linux/ppc64le windows/amd64 BINNAME ?= helm -GOPATH = $(shell go env GOPATH) -DEP = $(GOPATH)/bin/dep -GOX = $(GOPATH)/bin/gox -GOIMPORTS = $(GOPATH)/bin/goimports +GOPATH = $(shell go env GOPATH) +DEP = $(GOPATH)/bin/dep +GOX = $(GOPATH)/bin/gox +GOIMPORTS = $(GOPATH)/bin/goimports +GOLANGCI_LINT = $(GOPATH)/bin/golangci-lint # go option PKG := ./... @@ -70,8 +71,8 @@ test-unit: vendor HELM_HOME=/no_such_dir go test $(GOFLAGS) -run $(TESTS) $(PKG) $(TESTFLAGS) .PHONY: test-style -test-style: vendor - @scripts/validate-go.sh +test-style: vendor $(GOLANGCI_LINT) + $(GOLANGCI_LINT) run @scripts/validate-license.sh .PHONY: verify-docs @@ -98,6 +99,9 @@ $(DEP): $(GOX): go get -u github.com/mitchellh/gox +$(GOLANGCI_LINT): + go get -u github.com/golangci/golangci-lint/cmd/golangci-lint + $(GOIMPORTS): go get -u golang.org/x/tools/cmd/goimports diff --git a/pkg/helm/option.go b/pkg/helm/option.go index 49e4e36ad..5115a61c9 100644 --- a/pkg/helm/option.go +++ b/pkg/helm/option.go @@ -40,16 +40,12 @@ type options struct { force bool // if set, skip running hooks disableHooks bool - // release list options are applied directly to the list releases request - listReq hapi.ListReleasesRequest // release install options are applied directly to the install release request instReq hapi.InstallReleaseRequest // release update options are applied directly to the update release request updateReq hapi.UpdateReleaseRequest // release uninstall options are applied directly to the uninstall release request uninstallReq hapi.UninstallReleaseRequest - // release get status options are applied directly to the get release status request - statusReq hapi.GetReleaseStatusRequest // release get content options are applied directly to the get release content request contentReq hapi.GetReleaseContentRequest // release rollback options are applied directly to the rollback release request diff --git a/pkg/plugin/plugin.go b/pkg/plugin/plugin.go index a05c4ae8e..60efcb573 100644 --- a/pkg/plugin/plugin.go +++ b/pkg/plugin/plugin.go @@ -141,7 +141,7 @@ func (p *Plugin) PrepareCommand(extraArgs []string) (string, []string, error) { if platCmdLen == 0 || parts == nil { parts = strings.Split(os.ExpandEnv(p.Metadata.Command), " ") } - if parts == nil || len(parts) == 0 || parts[0] == "" { + if len(parts) == 0 || parts[0] == "" { return "", nil, fmt.Errorf("No plugin command is applicable") } diff --git a/pkg/registry/reference.go b/pkg/registry/reference.go index 51888c45a..b62790368 100644 --- a/pkg/registry/reference.go +++ b/pkg/registry/reference.go @@ -25,7 +25,7 @@ import ( ) var ( - validPortRegEx = regexp.MustCompile("^([1-9]\\d{0,3}|0|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$") // adapted from https://stackoverflow.com/a/12968117 + validPortRegEx = regexp.MustCompile(`^([1-9]\d{0,3}|0|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$`) // adapted from https://stackoverflow.com/a/12968117 errEmptyRepo = errors.New("parsed repo was empty") errTooManyColons = errors.New("ref may only contain a single colon character (:) unless specifying a port number") ) diff --git a/pkg/releaseutil/kind_sorter.go b/pkg/releaseutil/kind_sorter.go index cbb3e4c22..6870d6f83 100644 --- a/pkg/releaseutil/kind_sorter.go +++ b/pkg/releaseutil/kind_sorter.go @@ -136,11 +136,3 @@ func (k *kindSorter) Less(i, j int) bool { // sort different kinds return first < second } - -// SortByKind sorts manifests in InstallOrder -func SortByKind(manifests []Manifest) []Manifest { - ordering := InstallOrder - ks := newKindSorter(manifests, ordering) - sort.Sort(ks) - return ks.manifests -} diff --git a/scripts/validate-go.sh b/scripts/validate-go.sh deleted file mode 100755 index b0a6e2fbd..000000000 --- a/scripts/validate-go.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env bash - -# Copyright The Helm Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -set -euo pipefail - -exit_code=0 - -if ! hash gometalinter.v1 2>/dev/null ; then - go get -u gopkg.in/alecthomas/gometalinter.v1 - gometalinter.v1 --install -fi - -echo -echo "==> Running static validations <==" -# Run linters that should return errors -gometalinter.v1 \ - --disable-all \ - --enable deadcode \ - --severity deadcode:error \ - --enable gofmt \ - --enable ineffassign \ - --enable misspell \ - --enable vet \ - --tests \ - --vendor \ - --deadline 60s \ - ./... || exit_code=1 - -echo -echo "==> Running linters <==" -# Run linters that should return warnings -gometalinter.v1 \ - --disable-all \ - --enable golint \ - --vendor \ - --deadline 60s \ - ./... || : - -exit $exit_code