diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000000..5331fea2ad --- /dev/null +++ b/.drone.yml @@ -0,0 +1,47 @@ +--- +kind: pipeline +name: unit-tests + +steps: + - name: run-tests + image: signalwire/freeswitch-public-base + pull: true + commands: + - ./bootstrap.sh -j + - echo "applications/mod_test" >> modules.conf + - ./configure + - echo "#!/bin/bash\nmake -j`nproc --all` |& tee ./unit-tests-build-result.txt\nexitstatus=\${PIPESTATUS[0]}\necho \$exitstatus > ./build-status.txt\nmake install\n" > build.sh + - chmod +x build.sh + - ./build.sh + - cd tests/unit + - ./run-tests.sh + - mkdir logs && (mv log_run-tests_*.html logs || true) + - echo 0 > run-tests-status.txt + - ./collect-test-logs.sh && exit 0 || echo 'Some tests failed' + - echo 1 > run-tests-status.txt + - cd logs && ls -la + + - name: notify + image: signalwire/unit-tests-notify + pull: true + environment: + GITHUB_CI_APP_PEM: + from_secret: github_ci_app_pem + SSH_KEY: + from_secret: ssh_key + SLACK_WEBHOOK_URL: + from_secret: slack_webhook_url + commands: + - /root/notify.sh + +trigger: + branch: + - master + event: + - pull_request + - push +--- +kind: signature +hmac: a34718dd1e2b9468a845962219ff05cac0c922ddf90d885af557a937a9e412e0 + +... diff --git a/tests/unit/collect-test-logs.sh b/tests/unit/collect-test-logs.sh new file mode 100755 index 0000000000..a46102af72 --- /dev/null +++ b/tests/unit/collect-test-logs.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +echo "Collecting test logs" +LOG_DIR=./logs +html="

There are failed unit-tests:

" +html+="" +logs=$(find $LOG_DIR -type f -iname "*.html" -print) +logs_found=0 +for name in $logs +do + logname=$(basename $name) + testname=$(echo $logname | awk -F 'log_run-tests_' '{print $2}' | awk -F '.html' '{print $1}') + html+="" + logs_found=1 +done + +if [ $logs_found -ne 0 ]; then + html+="

Unit tests
$testname
" + echo $html > $LOG_DIR/artifacts.html + exit 1 +fi + +exit 0 diff --git a/tests/unit/run-tests.sh b/tests/unit/run-tests.sh new file mode 100755 index 0000000000..55c41e203d --- /dev/null +++ b/tests/unit/run-tests.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +TESTS=$(make -f - 2>/dev/null <(ansi2html > $logfilename) ; + exitstatus=${PIPESTATUS[0]} ; + if [ "0" -eq $exitstatus ] ; then + rm $logfilename ; + else + echo "*** ./$i exit status is $exitstatus" ; + echo "*** $logfilename was saved" ; + fi ; + echo "----------------" ; +done