Super basic testing framework

This commit is contained in:
Brian Picciano 2023-08-30 18:16:19 +02:00
parent 3d6ed8604a
commit e66f67da4a
4 changed files with 38 additions and 0 deletions

View File

@ -169,4 +169,10 @@ in rec {
mv Isle-* "$out"/bin/isle
'';
};
tests = pkgs.writeShellScript "isle-tests" ''
export PATH=$PATH:${appImage}/bin
test_dir=${./tests}
exec $SHELL $test_dir/entrypoint.sh
'';
}

3
test.sh Executable file
View File

@ -0,0 +1,3 @@
#!/usr/bin/env sh
$(nix-build --no-out-link -A tests)

2
tests/00-version.sh Normal file
View File

@ -0,0 +1,2 @@
version="$(isle version)"
test "$(echo "$version" | wc -l)" -gt 0

27
tests/entrypoint.sh Normal file
View File

@ -0,0 +1,27 @@
set -e
# cd into script's directory
cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null
tmp="$(mktemp --tmpdir -d isle-tests.XXXXXX)"
trap 'rm -rf $tmp' EXIT
export TMPDIR="$tmp"
echo "tmp dir is $TMPDIR"
echo -e '\nrunning all tests...\n'
for file in $(find . -type f -name '*.sh' | grep -v entrypoint.sh | sort -n); do
echo "running test $file"
if ! $SHELL -e -x "$file" >"$tmp/$file.log" 2>&1; then
echo "TEST FAILED"
echo "output of test is as follows"
echo "------------------------------"
cat "$tmp/$file.log"
echo "------------------------------"
exit 1
fi
done
echo -e '\ntests succeeded!'