Add unit-tests automation to Drone CI
This commit is contained in:
parent
724868fa08
commit
0bd676db32
|
@ -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
|
||||
|
||||
...
|
|
@ -0,0 +1,23 @@
|
|||
#!/bin/bash
|
||||
|
||||
echo "Collecting test logs"
|
||||
LOG_DIR=./logs
|
||||
html="<html><h3>There are failed unit-tests:</h3><table>"
|
||||
html+="<tr align=\"left\"><th><br>Unit tests</th></tr>"
|
||||
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+="<tr align=\"left\"><td><a href="$logname">$testname</a></td></tr>"
|
||||
logs_found=1
|
||||
done
|
||||
|
||||
if [ $logs_found -ne 0 ]; then
|
||||
html+="</table></html>"
|
||||
echo $html > $LOG_DIR/artifacts.html
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
|
@ -0,0 +1,27 @@
|
|||
#!/bin/bash
|
||||
|
||||
TESTS=$(make -f - 2>/dev/null <<EOF
|
||||
include Makefile
|
||||
all:
|
||||
@echo \$(TESTS)
|
||||
EOF
|
||||
)
|
||||
|
||||
echo "-----------------------------------------------------------------";
|
||||
echo "Starting tests";
|
||||
echo "Tests found: ${TESTS}";
|
||||
echo "-----------------------------------------------------------------";
|
||||
for i in $TESTS
|
||||
do
|
||||
echo "Testing $i" ;
|
||||
logfilename="log_run-tests_$i.html";
|
||||
./$i | tee >(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
|
Loading…
Reference in New Issue