diff --git a/run-tests.sh b/run-tests.sh index 4414f3b..f7a7a4b 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -4,6 +4,13 @@ set -e TEST_DB=${MUD_TEST_DB:-./mudserver.db.test} SERVER_PID= +# SSH returns 255 when MUD closes connection after quit — treat as success +ssh_mud() { + ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p 2222 "$@" + r=$? + [[ $r -eq 0 || $r -eq 255 ]] || exit 1 +} + cleanup() { if [ -n "${SERVER_PID:-}" ]; then kill $SERVER_PID 2>/dev/null || true @@ -17,7 +24,7 @@ SERVER_PID=$! sleep 2 # Test 1: New player creation + basic commands -ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p 2222 smoketest@localhost <<'EOF' +ssh_mud smoketest@localhost <<'EOF' 1 1 look @@ -33,7 +40,7 @@ quit EOF # Test 2: Persistence - reconnect -ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p 2222 smoketest@localhost <<'EOF' +ssh_mud smoketest@localhost <<'EOF' look stats quit @@ -47,7 +54,7 @@ EOF ./target/debug/mudtool -d "$TEST_DB" settings list # Test 4: Admin commands in-game -ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p 2222 smoketest@localhost <<'EOF' +ssh_mud smoketest@localhost <<'EOF' admin help admin list admin registration on @@ -57,14 +64,14 @@ EOF # Test 5: Registration gate ./target/debug/mudtool -d "$TEST_DB" settings set registration_open false -ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p 2222 newplayer@localhost <<'EOF' +ssh_mud newplayer@localhost <<'EOF' quit EOF # Test 6: Tick-based combat (connect and wait for ticks) ./target/debug/mudtool -d "$TEST_DB" settings set registration_open true ./target/debug/mudtool -d "$TEST_DB" players delete smoketest -ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p 2222 smoketest@localhost <<'EOF' +ssh_mud smoketest@localhost <<'EOF' 1 1 go south @@ -72,7 +79,7 @@ go south attack thief EOF sleep 8 -ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p 2222 smoketest@localhost <<'EOF' +ssh_mud smoketest@localhost <<'EOF' stats quit EOF