diff --git a/Makefile b/Makefile index 3320659709..b9180d4e02 100644 --- a/Makefile +++ b/Makefile @@ -12,20 +12,11 @@ clean: # the "-tags daemon" part is temporary .PHONY: test test: - go test -tags daemon -v $(shell go list ./... | grep -v /vendor/) + ./scripts/test/unit $(shell go list ./... | grep -v /vendor/) .PHONY: test-coverage test-coverage: - for pkg in $(shell go list ./... | grep -v /vendor/); do \ - go test -tags daemon -v -cover -parallel 8 -coverprofile=profile.out -covermode=atomic $${pkg} || exit 1; \ - if test -f profile.out; then \ - cat profile.out >> coverage.txt && rm profile.out; \ - fi; \ - done - -.PHONY: codecov -codecov: - $(shell curl -s https://codecov.io/bash | bash) + ./scripts/test/unit-with-coverage .PHONY: lint lint: diff --git a/circle.yml b/circle.yml index be160473e1..dabc4c5aad 100644 --- a/circle.yml +++ b/circle.yml @@ -29,13 +29,16 @@ jobs: docker run --name cross cli-builder make cross docker cp cross:/go/src/github.com/docker/cli/build /work/build - run: - name: "Unit Test" + name: "Unit Test with Coverage" command: | if [ "$CIRCLE_NODE_INDEX" != "2" ]; then exit; fi dockerfile=dockerfiles/Dockerfile.dev echo "COPY . ." >> $dockerfile docker build -f $dockerfile --tag cli-builder . - docker run cli-builder make test-coverage codecov + docker run --name test cli-builder make test-coverage + docker cp test:/go/src/github.com/docker/cli/coverage.txt coverage.txt + apk add -U bash curl + curl -s https://codecov.io/bash | bash - run: name: "Validate Vendor and Code Generation" command: | diff --git a/dockerfiles/Dockerfile.dev b/dockerfiles/Dockerfile.dev index 2886ed5e1a..a14ea25f29 100644 --- a/dockerfiles/Dockerfile.dev +++ b/dockerfiles/Dockerfile.dev @@ -1,7 +1,7 @@ FROM golang:1.8-alpine -RUN apk add -U git make bash coreutils curl +RUN apk add -U git make bash coreutils RUN go get github.com/LK4D4/vndr && \ cp /go/bin/vndr /usr/bin && \ diff --git a/scripts/test/unit b/scripts/test/unit new file mode 100755 index 0000000000..8c2f9c75df --- /dev/null +++ b/scripts/test/unit @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -eu -o pipefail + +go test -tags daemon -v $@ diff --git a/scripts/test/unit-with-coverage b/scripts/test/unit-with-coverage new file mode 100755 index 0000000000..9073e2daf6 --- /dev/null +++ b/scripts/test/unit-with-coverage @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +set -eu -o pipefail + +for pkg in $(go list ./... | grep -v /vendor/); do + ./scripts/test/unit \ + -cover \ + -coverprofile=profile.out \ + -covermode=atomic \ + ${pkg} + + if test -f profile.out; then + cat profile.out >> coverage.txt + rm profile.out + fi +done