|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
# create a function to be called everytime the process exit
|
|
|
|
abort () {
|
|
|
|
rm exp.log job.log job.sh submitted expected
|
|
|
|
}
|
|
|
|
|
|
|
|
trap 'abort' EXIT
|
|
|
|
|
|
|
|
|
|
|
|
set -euo pipefail
|
|
|
|
IFS='
|
|
|
|
'
|
|
|
|
script_dirS=$(cd -P "$(dirname "$BASH_SOURCE")" &>/dev/null && pwd)
|
|
|
|
|
|
|
|
SUBMITTED='student/job-regist.sh'
|
|
|
|
EXPECTED='solutions/job-regist.sh'
|
|
|
|
|
|
|
|
create_random_job () {
|
|
|
|
echo "sleep $((1 + $RANDOM % 10))" > job.sh
|
|
|
|
}
|
|
|
|
|
|
|
|
wait_test_case () {
|
|
|
|
while [ -n "$(jobs | grep -i running)" ]; do
|
|
|
|
echo -n "."
|
|
|
|
sleep 1
|
|
|
|
done
|
|
|
|
echo
|
|
|
|
}
|
|
|
|
|
|
|
|
# test cases
|
|
|
|
one_process () {
|
|
|
|
create_random_job
|
|
|
|
bash $script_dirS/$1 job.sh
|
|
|
|
}
|
|
|
|
|
|
|
|
wrong_numb_arguments () {
|
|
|
|
bash $script_dirS/$1
|
|
|
|
}
|
|
|
|
|
|
|
|
# end of test cases
|
|
|
|
|
|
|
|
challenge () {
|
|
|
|
echo "testing $1 case"
|
|
|
|
$1 $SUBMITTED > submitted &
|
|
|
|
$1 $EXPECTED > expected &
|
|
|
|
|
|
|
|
wait_test_case
|
|
|
|
|
|
|
|
diff <(cat exp.log) <(cat job.log)
|
|
|
|
diff <(cat submitted) <(cat expected)
|
|
|
|
}
|
|
|
|
|
|
|
|
challenge one_process
|
|
|
|
challenge wrong_numb_arguments
|