casebench
test cases straight onto the board.
git clone https://owenrusk.dev/casebench.git
commit 9049b37506a3b5fa1e6e4fac6c08ed6c750e14c4 parent 04d64ce901e58eaed82b59d9428f3a1cb9d3a649 author Owen Rusk <owen@papermothgames.com> date 2026-06-09 15:34:27 -0500
lock: default rest from CASEBENCH_REST
| casebench/cli.py | +3 | -3 |
| tests/test_lock.py | +7 | -0 |
diff --git a/casebench/cli.py b/casebench/cli.py index b619993..d58316a 100644 --- a/casebench/cli.py +++ b/casebench/cli.py @@ -35,8 +35,8 @@ def parser() -> argparse.ArgumentParser: locker.add_argument("--answer", action="append", help="one per line of the lock; asked for if left out") locker.add_argument( "--rest",- default="3/60",- help="tries/minutes: after that many wrong tries in a row, take nothing for that long (default: 3/60)",+ help="tries/minutes: after that many wrong tries in a row, take nothing for that long" + " (default: $CASEBENCH_REST, or 3/60)", ) locker.add_argument("--text", default="locked.", help="what the lock says (default: locked.)") boards(locker) @@ -131,7 +131,7 @@ def run_note(store: Store, args: argparse.Namespace) -> None: def run_lock(store: Store, args: argparse.Namespace) -> None:- rest = lock.parse_rest(args.rest)+ rest = lock.parse_rest(args.rest or os.environ.get("CASEBENCH_REST", "3/60")) players = targets(store, args) for who in players: on_board(store, who, args.case) diff --git a/tests/test_lock.py b/tests/test_lock.py index cb01704..6777d45 100644 --- a/tests/test_lock.py +++ b/tests/test_lock.py @@ -1,5 +1,7 @@ +import os import unittest from datetime import UTC, datetime, timedelta +from unittest import mock from casebench import lock from casebench.memstore import MemStore @@ -110,6 +112,11 @@ class LockCommandTest(unittest.TestCase): self.assertEqual(code, 0) self.assertIsNotNone(self.store.get_lock(self.owen, "case-x")) + def test_rest_from_the_environment(self): + with mock.patch.dict(os.environ, {"CASEBENCH_REST": "2/15"}): + run(self.store, "lock", "test-lost-umbrella", "--answer", "a", "--player", "owen") + self.assertEqual(self.store.get_lock(self.owen, "test-lost-umbrella").rest, lock.Rest(2, 15)) + def test_bad_rest(self): code, _, err = run(self.store, "lock", "test-lost-umbrella", "--answer", "a", "--rest", "three", "--player", "owen") self.assertEqual(code, 1)