diff --git a/.circleci/config.yml b/.circleci/config.yml index 54201c5..93aec1a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -6,5 +6,5 @@ jobs: steps: - checkout - setup_remote_docker - - run: docker build -f ./docker/Dockerfile.testing -t local/pspy-testing:latest . + - run: docker build -f ./docker/Dockerfile.testing -v `pwd`/.git:/go/src/github.com/dominicbreuker/pspy/.git -t local/pspy-testing:latest . - run: docker run -it local/pspy-testing:latest diff --git a/Makefile b/Makefile index 1dc3edf..3e6c17e 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ TEST_DOCKERFILE = $(PROJECT_DIR)/docker/Dockerfile.testing test: docker build -f $(TEST_DOCKERFILE) -t $(TEST_IMAGE) . - docker run -it --rm $(TEST_IMAGE) + docker run -it --rm -v $(PROJECT_DIR)/.git:/go/src/github.com/dominicbreuker/pspy/.git $(TEST_IMAGE) dev-build: docker build -f $(DEV_DOCKERFILE) -t $(DEV_IMAGE) . diff --git a/docker/Dockerfile.testing b/docker/Dockerfile.testing index 9748c29..b6820f1 100644 --- a/docker/Dockerfile.testing +++ b/docker/Dockerfile.testing @@ -3,6 +3,7 @@ FROM golang:1.10-stretch RUN apt-get update && apt-get -y install cron python3 sudo procps ### Test and build ### + # copy source code COPY main.go /go/src/github.com/dominicbreuker/pspy/main.go COPY cmd /go/src/github.com/dominicbreuker/pspy/cmd @@ -27,7 +28,7 @@ RUN useradd -ms /bin/bash myuser && \ adduser myuser sudo && \ echo 'myuser ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers USER myuser - +RUN sudo chown -R myuser:myuser /go/* # drop into bash shell COPY docker/entrypoint-testing.sh /entrypoint.sh diff --git a/docker/entrypoint-testing.sh b/docker/entrypoint-testing.sh index 30a8508..c01e577 100644 --- a/docker/entrypoint-testing.sh +++ b/docker/entrypoint-testing.sh @@ -1,5 +1,40 @@ #!/bin/bash +### test covereage + +if [ -z ${CC_TEST_REPORTER_ID+x} ]; then + echo "[+] skipping test coverage" +else + echo "[+] reporting test coverage" + curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter + chmod +x ./cc-test-reporter + + # git config --global user.email "dummy@example.com" + # git config --global user.name "Mr Robot" + # git init + # git add . + # git commit -m 'commit that makes cc test reporter happy' + + ./cc-test-reporter before-build + + for pkg in $(go list ./... | grep -v main); do + echo "doing $pkg" + go test -coverprofile=$(echo $pkg | tr / -).cover $pkg + done + echo "mode: set" > c.out + grep -h -v "^mode:" ./*.cover >> c.out + rm -f *.cover + + echo "reporting now" + ./cc-test-reporter after-build + + rm c.out + + rm ./cc-test-reporter +fi + +### integration test + sudo cron -f & sleep 1 sudo ps | grep cron 1>/dev/null