summaryrefslogtreecommitdiff
path: root/lambda-calcul/haskell/test.sh
diff options
context:
space:
mode:
authorArnaud Bailly <arnaud@pankzsoft.com>2025-11-05 17:03:38 +0100
committerArnaud Bailly <arnaud@pankzsoft.com>2025-11-05 17:03:38 +0100
commit300a61340ff1744ea3241c9744c80ce2215df74c (patch)
treef1fe485124acc28ef78f547b682388c8bde250dd /lambda-calcul/haskell/test.sh
parentf08fa03af4f6cf38e664d74c6a0a4a3e65746fb2 (diff)
downloadlambda-nantes-300a61340ff1744ea3241c9744c80ce2215df74c.tar.gz
better logging when loading challenges
Diffstat (limited to 'lambda-calcul/haskell/test.sh')
-rwxr-xr-xlambda-calcul/haskell/test.sh32
1 files changed, 32 insertions, 0 deletions
diff --git a/lambda-calcul/haskell/test.sh b/lambda-calcul/haskell/test.sh
new file mode 100755
index 0000000..1b78960
--- /dev/null
+++ b/lambda-calcul/haskell/test.sh
@@ -0,0 +1,32 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+HOST=${1:-https://lambda.pankzsoft.net}
+
+ALICE=$(curl -s -X POST -H 'content-type: application/json' $HOST/api/register -d '"alice"' | jq -r)
+echo "registered alice with token '$ALICE'"
+sleep 2
+
+for i in $(seq 1 14); do
+ GRADE=$(curl -s -X GET -H 'content-type: application/json' "$HOST/api/score?token=$ALICE" | jq -r .grade)
+ echo "alice's grade is $GRADE"
+ sleep 1
+
+ CHAL=$(curl -s -X GET -H 'content-type: application/json' "$HOST/api/challenge?token=$ALICE" | jq -r .expr)
+ echo "alice's challenge is '$CHAL'"
+ sleep 1
+
+ ANSWER=$(echo "$CHAL" | cabal run)
+ echo "alice's answer is '$ANSWER'"
+
+ RESULT=$(curl -s -X POST -H 'content-type: application/json' "$HOST/api/challenge?token=$ALICE" -d "\"$ANSWER\"")
+
+ if [ "$RESULT" != "[]" ]; then
+ echo "Failed challenge: $RESULT"
+ fi
+done
+
+SCORE=$(curl -s -X DELETE -H 'content-type: application/json' "$HOST/api/register?token=$ALICE")
+
+echo "Unregistered alice: $SCORE"