Files
cs220/scripts/grade.sh
2023-08-27 09:39:31 +09:00

115 lines
3.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
set -uo pipefail
IFS=$'\n\t'
# Imports library.
BASEDIR=$(dirname "$0")
source $BASEDIR/grade-utils.sh
RUNNER="cargo"
# Lints.
run_linters || exit 1
# Executes test for each runner.
echo "Running with $RUNNER..."
if [ $# != 1 ]
then
echo "==============================="
echo "Invalid number. $# arguments given."
echo "Usage: ./grade.sh <test_number>"
echo "Example: ./grade.sh 1"
exit 1
fi
TEST_NAME=$(printf "TEST%02d" $1)
case $TEST_NAME in
TEST01)
TESTS=(
"assignments::assignment01::small_exercises_grade::test"
)
;;
TEST02)
TESTS=(
"assignments::assignment02::small_exercises_grade::test"
"assignments::assignment02::vec_and_mat_grade::test"
)
;;
TEST03)
TESTS=(
"assignments::assignment03::custom_operators_grade::test"
"assignments::assignment03::parse_shell_grade::test"
"assignments::assignment03::small_exercises_grade::test"
)
;;
TEST04)
TESTS=(
"assignments::assignment04::grade::test"
)
;;
TEST06)
TESTS=(
"assignments::assignment06::semiring_grade::test"
"assignments::assignment06::symbolic_differentiation_grade::test"
)
;;
TEST07)
TESTS=(
"assignments::assignment07::generator_grade::test"
"assignments::assignment07::my_itertools_grade::test"
"assignments::assignment07::small_exercises_grade::test"
"assignments::assignment07::transform_grade::test"
)
;;
TEST08)
TESTS=(
"assignments::assignment08::church_grade::test"
"assignments::assignment08::small_exercises_grade::test"
)
;;
TEST09)
TESTS=(
"assignments::assignment09::bigint_grade::test"
"assignments::assignment09::small_exercises_grade::test"
)
;;
TEST10)
TESTS=(
"assignments::assignment10::labyrinth_grade::test"
"assignments::assignment10::small_exercises_grade::test"
)
;;
TEST11)
TESTS=(
"assignments::assignment11::graph_grade::test_graph"
"assignments::assignment11::linked_list_grade::test_linked_list"
"assignments::assignment11::mock_storage_grade::test_mock_storage"
"assignments::assignment11::tv_room_grade::test_tv_room"
)
;;
TEST12)
TESTS=(
"assignments::assignment12::card_grade"
"assignments::assignment12::demux_grade::test_demux"
"assignments::assignment12::funnel_grade::test_funnel"
"assignments::assignment12::small_exercises_grade::test_pingpong"
)
;;
TEST13)
TESTS=(
"assignments::assignment13::small_exercises_grade::test"
)
;;
*)
echo_err "Invalid test name: $TEST_NAME"
exit 1
;;
esac
# Runs tests.
SCORE=$(run_tests)
NUM_TESTS=${#TESTS[@]}
echo Your score: ${SCORE}/${NUM_TESTS}