diff --git a/sh/tests/better-cat_test.sh b/sh/tests/better-cat_test.sh new file mode 100644 index 000000000..6d2b90909 --- /dev/null +++ b/sh/tests/better-cat_test.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash + +# Unofficial Bash Strict Mode +set -euo pipefail +IFS=' +' +script_dir=$(cd -P "$(dirname "$BASH_SOURCE")" &>/dev/null && pwd) + +rm -rf better-cat-files +mkdir better-cat-files +cd better-cat-files + +for i in {1..3}; do + echo "This is line $i of file2" >> "file2.txt" +done + +for i in {1..10}; do + echo "This is line $i of file3" >> "file3.txt" + echo "This is line $i of commented" >> "commented.txt" +done + +echo "This is the content of file1" > "file1.txt" +echo "# commented" > "commented.txt" + +challenge() { + submitted=$(bash "$script_dir"/student/better-cat.sh "$@") + expected=$(bash "$script_dir"/solutions/better-cat.sh "$@") + diff <(echo "$submitted") <(echo "$expected") +} + +challenge "file1.txt" +challenge "file1.txt" "file2.txt" "file3.txt" +challenge *.txt +challenge +challenge -c "commented.txt" +challenge -l "file1.txt" +challenge -r "file1.txt" +challenge -cl "commented.txt" +# add test for file that doesn't exist + +cd .. +rm -rf better-cat-files