#!/bin/bash VERSION=$(grep -Eo '[0-9]+\.[0-9]+\.[0-9]+' kosmorrolib/version.py) PYTHON_BIN=$(command -v python) PIP_BIN=$(command -v pip) if python3 --version > /dev/null; then PYTHON_BIN=$(command -v python3) PIP_BIN=$(command -v pip3) fi failures='' function fail() { failures="$failures\n\n - $1\n\n$2" } function run() { eval "$1" &> /tmp/output.txt return $? } function canRun() { if [[ "$1" != "" && "$1" != "$ENVIRONMENT" ]]; then return 1 fi return 0 } # Asserts that command $1 has finished with sucess # $1: the command to run function assertSuccess() { if ! canRun "$2"; then echo -n 'I' return fi run "$1" returned=$? if [ $returned -ne 0 ]; then fail "Failed asserting that command '$1' finishes with success, returned status $returned." "$(cat /tmp/output.txt)" echo -n 'F' return fi echo -n '.' } # Asserts that command $1 has finished with sucess # $1: the command to run function assertFailure() { if ! canRun "$2"; then echo -n 'I' return fi run "$1" returned=$? if [ $returned -eq 0 ]; then fail "Failed asserting that command '$1' finishes with failure." "$(cat /tmp/output.txt)" echo -n 'F' return fi echo -n '.' } echo echo "==== RUNNING E2E TESTS ====" echo # Create the package and install it assertSuccess "make build" assertSuccess "$PIP_BIN install dist/kosmorro-$VERSION.tar.gz" "CI" assertSuccess kosmorro assertSuccess "kosmorro -h" assertSuccess "kosmorro -d 2020-01-27" assertFailure "kosmorro -d yolo-yo-lo" assertFailure "kosmorro -d 2020-13-32" assertFailure "kosmorro --date=1789-05-05" assertFailure "kosmorro --date=3000-01-01" assertSuccess "kosmorro --date='+3y 5m3d'" assertSuccess "kosmorro --date='-1y3d'" assertFailure "kosmorro --date='+3d4m" assertFailure "kosmorro -date='3y'" assertSuccess "kosmorro --latitude=50.5876 --longitude=3.0624" assertSuccess "kosmorro --latitude=50.5876 --longitude=3.0624 -d 2020-01-27" assertSuccess "kosmorro --latitude=50.5876 --longitude=3.0624 -d 2020-01-27 --timezone=1" assertSuccess "kosmorro --latitude=50.5876 --longitude=3.0624 -d 2020-01-27 --timezone=-1" assertSuccess "kosmorro --latitude=50.5876 --longitude=3.0624 -d 2020-01-27 --format=json" assertFailure "kosmorro --latitude=50.5876 --longitude=3.0624 -d 2020-01-27 --format=pdf" # Environment variables assertSuccess "LATITUDE=50.5876 LONGITUDE=3.0624 TIMEZONE=1 kosmorro -d 2020-01-27" assertSuccess "LATITUDE=50.5876 LONGITUDE=3.0624 TIMEZONE=-1 kosmorro -d 2020-01-27" # Missing dependencies, should fail assertFailure "kosmorro --latitude=50.5876 --longitude=3.0624 -d 2020-01-27 --format=pdf -o /tmp/document.pdf" assertSuccess "sudo apt-get install -y texlive texlive-latex-extra" "CI" # Dependencies installed, should not fail assertSuccess "kosmorro --latitude=50.5876 --longitude=3.0624 -d 2020-01-27 --format=pdf -o /tmp/document.pdf" assertSuccess "kosmorro --latitude=50.5876 --longitude=3.0624 -d 2020-01-27 --format=pdf -o /tmp/document.pdf --no-graph" # man page assertSuccess "man --pager=cat kosmorro" if [ "$failures" != "" ]; then echo -e "\n$failures" exit 2 fi echo -e "\n\n==== TESTS RAN SUCCESSFULLY 👍 ===="