mirror of
https://github.com/correl/elm.git
synced 2024-11-21 19:18:42 +00:00
1ebbaae152
This is a bit gross, but I think optimizing for the end users is important enough to justify the dance.
63 lines
1.9 KiB
Bash
Executable file
63 lines
1.9 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
# FORMAT
|
|
|
|
echo '-------------------------------------------------------'
|
|
echo "Checking Formatting"
|
|
|
|
if [ ! -f "bin/elm-format" ] || [[ ! $(bin/elm-format --help | grep "elm-format-0.18 0.6.1-alpha") ]]; then
|
|
echo "Installing local copy of elm-format"
|
|
bin/install-elm-format
|
|
fi
|
|
|
|
bin/elm-format --yes --validate exercises/**/*.example.elm exercises/**/tests/Tests.elm
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo "*******************************************************************"
|
|
echo "*******************************************************************"
|
|
echo "** elm-format failed **"
|
|
echo "** perhaps some of your changes are not formatted? **"
|
|
echo "** Please run elm-format before pushing. **"
|
|
echo "*******************************************************************"
|
|
echo "*******************************************************************"
|
|
exit 1
|
|
else
|
|
echo "Formatting looks good!"
|
|
fi
|
|
|
|
# TEST
|
|
|
|
declare -i TEST_RESULT=0
|
|
FAILED_EXERCISES=''
|
|
|
|
mkdir -p build/tests
|
|
|
|
for example_file in exercises/**/*.example.elm
|
|
do
|
|
# clean up generated code from last run
|
|
rm -rf build/tests/elm-stuff/generated-code/
|
|
|
|
exercise_dir=$(dirname $example_file)
|
|
exercise_name=$(basename $example_file .example.elm)
|
|
cp "$exercise_dir/$exercise_name.example.elm" "build/$exercise_name.elm"
|
|
cp "$exercise_dir/tests/elm-package.json" build/tests/
|
|
cat "$exercise_dir/tests/Tests.elm" | sed 's/skip <|//g' > build/tests/Tests.elm
|
|
|
|
echo '-------------------------------------------------------'
|
|
echo "Testing $exercise_name"
|
|
|
|
|
|
npm test -- build/tests/Tests.elm
|
|
|
|
# capture result from last command (elm-test)
|
|
if [ $? -ne 0 ]; then
|
|
TEST_RESULT=1
|
|
FAILED_EXERCISES+="$exercise_name\n"
|
|
fi
|
|
done
|
|
|
|
if [ $TEST_RESULT -ne 0 ]; then
|
|
echo "The following exercises failed"
|
|
printf $FAILED_EXERCISES
|
|
exit $TEST_RESULT
|
|
fi
|