docker/entrypoint-testing.sh
#!/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
go test -coverprofile=$(echo $pkg | tr / -).cover $pkg
done
echo "mode: set" > c.out
grep -h -v "^mode:" ./*.cover >> c.out
rm -f *.cover
./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
echo "[+] cron started"
echo "[+] Running as user `id`"
echo "[+] Executing test"
# exec /bin/bash
rm /home/myuser/log.txt
bin/pspy > /home/myuser/log.txt &
for i in `seq 1 25`; do
echo "Waiting for cron job detection..."
sleep 5;
QUERY_RESULT=$(grep ' | passwd myuser' /home/myuser/log.txt | grep -v grep)
if [ "'$QUERY_RESULT'" != "''" ]; then
echo "Cron job execution detected!"
echo "Complete log of pspy (may contain commands run in this test):"
cat /home/myuser/log.txt
exit 0
fi
done
echo "Failed to detect cron job..."
exit 1