diff --git a/scripts/grade-utils.sh b/scripts/grade-utils.sh index 5de09c7..5ac48fa 100755 --- a/scripts/grade-utils.sh +++ b/scripts/grade-utils.sh @@ -76,19 +76,19 @@ _run_tests_with() { exit 1 fi - local FAILED=0 - local NUM_TESTS=$(echo $TESTS | wc -w) + local PASSED=0 + # local NUM_TESTS=$(echo $TESTS | wc -w) for TEST in ${TESTS[@]}; do local TEST_CMD="$CARGO test $* --lib -- $TEST" timeout ${TIMEOUT:-20s} bash -c "$TEST_CMD 2> /dev/null" 1>&2 case $? in - 0) ;; - 124) echo_err "Test timed out: $TEST_CMD"; FAILED=$((FAILED + 1));; - *) echo_err "Test failed: $TEST_CMD"; FAILED=$((FAILED + 1));; + 0) PASSED=$((PASSED + 1));; + 124) echo_err "Test timed out: $TEST_CMD";; + *) echo_err "Test failed: $TEST_CMD";; esac done - echo $((NUM_TESTS - FAILED)) + echo $PASSED } # example: run_tests diff --git a/scripts/grade.sh b/scripts/grade.sh index 675714a..eacee07 100755 --- a/scripts/grade.sh +++ b/scripts/grade.sh @@ -6,23 +6,100 @@ IFS=$'\n\t' # Imports library. BASEDIR=$(dirname "$0") -source $BASEDIR/test_cases.sh source $BASEDIR/grade-utils.sh RUNNER="cargo" # Lints. -run_linters || exit 0 +run_linters || exit 1 # Executes test for each runner. echo "Running with $RUNNER..." -echo "Below lines will show only failed tests." TEST_NAME=$(printf "TEST%02d" $1) -TESTS=$(get_test_cases $TEST_NAME) +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) echo Your score: $SCORE - -exit $SCORE diff --git a/scripts/test_cases.sh b/scripts/test_cases.sh deleted file mode 100644 index f49986f..0000000 --- a/scripts/test_cases.sh +++ /dev/null @@ -1,114 +0,0 @@ -#!/usr/bin/env bash - -TEST01=( - "assignments::assignment01::small_exercises_grade::test" -) - -TEST02=( - "assignments::assignment02::small_exercises_grade::test" - "assignments::assignment02::vec_and_mat_grade::test" -) - -TEST03=( - "assignments::assignment03::custom_operators_grade::test" - "assignments::assignment03::parse_shell_grade::test::test_shell" - "assignments::assignment03::small_exercises_grade::test" -) - -TEST04=( - "assignments::assignment04::grade::test" -) - -TEST06=( - "assignments::assignment06::semiring_grade::test" - "assignments::assignment06::symbolic_differentiation_grade::test" -) - -TEST07=( - "assignments::assignment07::generator_grade::test" - "assignments::assignment07::my_itertools_grade::test" - "assignments::assignment07::small_exercises_grade::test" - "assignments::assignment07::transform_grade::test" -) - -TEST08=( - "assignments::assignment08::church_grade::test" - "assignments::assignment08::small_exercises_grade::test" -) - -TEST09=( - "assignments::assignment09::bigint_grade::test" - "assignments::assignment09::small_exercises_grade::test" -) - -TEST10=( - "assignments::assignment10::labyrinth_grade::test" - "assignments::assignment10::small_exercises_grade::test" -) - -TEST11=( - "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=( - "assignments::assignment12::card_grade" - "assignments::assignment12::demux_grade::test_demux" - "assignments::assignment12::funnel_grade::test_funnel" - "assignments::assignment12::small_exercises_grade::test_pingpong" -) - -TEST13=( - "assignments::assignment13::small_exercises_grade::test" -) - -get_test_cases() { - local TEST_NAME=$1 - local TEST_CASES=() - case $TEST_NAME in - TEST01) - TEST_CASES=("${TEST01[@]}") - ;; - TEST02) - TEST_CASES=("${TEST02[@]}") - ;; - TEST03) - TEST_CASES=("${TEST03[@]}") - ;; - TEST04) - TEST_CASES=("${TEST04[@]}") - ;; - TEST06) - TEST_CASES=("${TEST06[@]}") - ;; - TEST07) - TEST_CASES=("${TEST07[@]}") - ;; - TEST08) - TEST_CASES=("${TEST08[@]}") - ;; - TEST09) - TEST_CASES=("${TEST09[@]}") - ;; - TEST10) - TEST_CASES=("${TEST10[@]}") - ;; - TEST11) - TEST_CASES=("${TEST11[@]}") - ;; - TEST12) - TEST_CASES=("${TEST12[@]}") - ;; - TEST13) - TEST_CASES=("${TEST13[@]}") - ;; - *) - echo_err "Invalid test name: $TEST_NAME" - exit 1 - ;; - esac - echo "${TEST_CASES[@]}" -} -export -f get_test_cases