diff --git a/tests.mk b/tests.mk index 5c1931e54..1c2cb01a9 100644 --- a/tests.mk +++ b/tests.mk @@ -61,7 +61,11 @@ lint: unit-tests: @echo running unit tests... +ifndef UNIT_TEST_BATCH @$(QUIET) bats tests/unit +else + @$(QUIET) ./tests/ci/unit_test_runner.sh $$UNIT_TEST_BATCH +endif deploy-test-clojure: @echo deploying config app... diff --git a/tests/ci/parallel_runner.sh b/tests/ci/parallel_runner.sh index 68e1038ff..612ec0809 100755 --- a/tests/ci/parallel_runner.sh +++ b/tests/ci/parallel_runner.sh @@ -2,16 +2,21 @@ case "$CIRCLE_NODE_INDEX" in 0) - echo "=====> make unit-tests" - sudo -E make -e unit-tests + echo "=====> make unit-tests (1/2)" + sudo -E UNIT_TEST_BATCH=1 make -e unit-tests ;; 1) + echo "=====> make unit-tests (2/2)" + sudo -E UNIT_TEST_BATCH=2 make -e unit-tests + ;; + + 2) echo "=====> make deploy-tests (buildstep release)" sudo -E make -e deploy-tests ;; - 2) + 3) echo "=====> make deploy-tests (buildstep master)" docker rmi -f progrium/buildstep && \ sudo -E BUILD_STACK=true make -e stack && \ diff --git a/tests/ci/unit_test_runner.sh b/tests/ci/unit_test_runner.sh new file mode 100755 index 000000000..ebf5df679 --- /dev/null +++ b/tests/ci/unit_test_runner.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +is_number() { + local NUMBER=$1; local NUM_RE='^[0-9]+$' + if [[ $NUMBER =~ $NUM_RE ]];then + return 0 + else + return 1 + fi +} + +usage() { + echo "usage: $0 1|2" + exit 0 +} + +BATCH_NUM="$1" +is_number $BATCH_NUM || usage + +TESTS=( $(find $(dirname $0)/../unit -maxdepth 1 -name "*.bats") ) +HALF_TESTS=$(( ${#TESTS[@]} / 2 )) +FIRST_HALF=${TESTS[@]:0:${HALF_TESTS}} +LAST_HALF=${TESTS[@]:${HALF_TESTS}:${#TESTS[@]}} + +case "$BATCH_NUM" in + 1) + bats $FIRST_HALF + ;; + + 2) + bats $LAST_HALF + ;; + + *) + usage + ;; +esac