diff --git a/Makefile b/Makefile index 5ab0a4a81..fa57ef9fd 100644 --- a/Makefile +++ b/Makefile @@ -47,16 +47,20 @@ lint: install-tools cd kustomize; $(MYGOBIN)/golangci-lint run ./... cd pluginator; $(MYGOBIN)/golangci-lint run ./... -.PHONY: unit-tests-api -unit-tests-api: +.PHONY: unit-test-api +unit-test-api: cd api; go test ./... -.PHONY: unit-tests-kustomize -unit-tests-kustomize: +.PHONY: unit-test-plugins +unit-test-plugins: + ./hack/runPluginUnitTests.sh + +.PHONY: unit-test-kustomize +unit-test-kustomize: cd kustomize; go test ./... -.PHONY: unit-tests -unit-tests: unit-tests-api unit-tests-kustomize +.PHONY: unit-test-all +unit-test-all: unit-test-api unit-test-kustomize unit-test-plugins # linux only. $(MYGOBIN)/kubeval: diff --git a/hack/runPluginUnitTests.sh b/hack/runPluginUnitTests.sh new file mode 100755 index 000000000..80a77bcc1 --- /dev/null +++ b/hack/runPluginUnitTests.sh @@ -0,0 +1,74 @@ +#!/usr/bin/env bash +# Copyright 2019 The Kubernetes Authors. +# SPDX-License-Identifier: Apache-2.0 + +# TODO: get rid of this script, make individual targets +# in the makefile. + +# Run this script with no arguments from the repo root +# to test all the plugins. + +# Want this to keep going even if one test fails, +# to see how many pass, so do not errexit. +set -o nounset +# set -o errexit +set -o pipefail + +rcAccumulator=0 + +function onLinuxAndNotOnTravis { + [[ ("linux" == "$(go env GOOS)") && (-z ${TRAVIS+x}) ]] && return + false +} + +function runTest { + local file=$1 + local code=0 + if grep -q "// +build notravis" "$file"; then + if onLinuxAndNotOnTravis; then + go test -v -tags=notravis $file + code=$? + else + # TODO: make work for non-linux + echo "Not on linux or on travis; skipping $file" + fi + else + go test -v $file + code=$? + fi + rcAccumulator=$((rcAccumulator || $code)) + if [ $code -ne 0 ]; then + echo "Failure in $d" + fi +} + +function scanDir { + pushd $1 >& /dev/null + echo "Testing $1" + for t in $(find . -name '*_test.go'); do + runTest $t + done + popd >& /dev/null +} + +if onLinuxAndNotOnTravis; then + # Some of these tests have special deps. + make $(go env GOPATH)/bin/helm + make $(go env GOPATH)/bin/kubeval +fi + +for goMod in $(find ./plugin -name 'go.mod'); do + d=$(dirname "${goMod}") + if [[ "$d" == "./plugin/someteam.example.com/v1/gogetter" ]]; then + echo "Skipping broken $d" + else + scanDir $d + fi +done + +if [ $rcAccumulator -ne 0 ]; then + echo "FAILURE; exit code $rcAccumulator" + exit 1 +fi + + diff --git a/plugin/someteam.example.com/v1/bashedconfigmap/go.sum b/plugin/someteam.example.com/v1/bashedconfigmap/go.sum index be8e92150..a831da330 100644 --- a/plugin/someteam.example.com/v1/bashedconfigmap/go.sum +++ b/plugin/someteam.example.com/v1/bashedconfigmap/go.sum @@ -33,6 +33,7 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633 h1:H2pdYOb3KQ1/YsqVWoWNLQO+fusocsw354rqGTZtAgw= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.6+incompatible h1:tfrHha8zJ01ywiOEC1miGY8st1/igzWB8OmvPgoYX7w= github.com/emicklei/go-restful v2.9.6+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= @@ -117,6 +118,7 @@ github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d h1:7XGaL1e6bYS1yIonGp9761ExpPPV1ui0SAC59Yube9k= github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.3.0 h1:CcQijm0XKekKjP/YCz28LXVSpgguuB+nCxaSjCe09y0= github.com/googleapis/gnostic v0.3.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= @@ -337,6 +339,7 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/inf.v0 v0.9.0 h1:3zYtXIO92bvsdS3ggAdA8Gb4Azj0YU+TVY1uGYNFA8o= gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= diff --git a/travis/pre-commit.sh b/travis/pre-commit.sh index edbe98d7c..70139e7d2 100755 --- a/travis/pre-commit.sh +++ b/travis/pre-commit.sh @@ -35,28 +35,7 @@ function runLint { } function runUnitTests { - make unit-tests - - # TODO: make work for non-linux - if [[ (-z ${TRAVIS+x}) && ("linux" == "$(go env GOOS)") ]]; then - echo " " - echo "On linux, and not on travis, so running the notravis Go tests." - echo " " - - # Requires helm. - make $(go env GOPATH)/bin/helm - (cd api; go test -v sigs.k8s.io/kustomize/api/internal/target \ - -run TestChartInflatorPlugin -tags=notravis) - (cd plugin/someteam.example.com/v1/chartinflator; - go test -v . -run TestChartInflator -tags=notravis) - - # Requires kubeval. - make $(go env GOPATH)/bin/kubeval - (cd plugin/someteam.example.com/v1/validator; - go test -v . -run TestValidatorHappy -tags=notravis) - (cd plugin/someteam.example.com/v1/validator; - go test -v . -run TestValidatorUnHappy -tags=notravis) - fi + make unit-test-all } function testExamplesAgainstLatestKustomizeRelease {