Spaces:
Paused
Paused
| import os | |
| import subprocess | |
| from pathlib import Path | |
| import time | |
| PROJECT_DIR = Path(__file__).resolve().parents[1] | |
| OTREE = PROJECT_DIR.parents[1] / 'venv' / 'bin' / 'otree' | |
| def run_otree_test(app: str): | |
| env = os.environ.copy() | |
| # Ensure a fresh SQLite DB per test run to avoid schema/version conflicts | |
| db_name = f"test_db_{app}_{int(time.time()*1000)}.sqlite3" | |
| env['OTREE_DATABASE_URL'] = f"sqlite:///{db_name}" | |
| # Also remove default db.sqlite3 if present | |
| default_db = PROJECT_DIR / 'db.sqlite3' | |
| if default_db.exists(): | |
| default_db.unlink() | |
| proc = subprocess.run( | |
| [str(OTREE), 'test', app], | |
| cwd=str(PROJECT_DIR), | |
| stdout=subprocess.PIPE, | |
| stderr=subprocess.STDOUT, | |
| text=True, | |
| env=env, | |
| ) | |
| if proc.returncode != 0: | |
| print(proc.stdout) | |
| assert proc.returncode == 0, f"oTree bot tests failed for {app}" | |
| def test_bots_policy_nudges_sequence(): | |
| run_otree_test('policy_nudges') | |
| def test_bots_guessing_game_demo_sequence(): | |
| run_otree_test('guessing_game_demo') | |
| def test_bots_survey_biases_sequence(): | |
| run_otree_test('survey_biases_full') | |
| def test_bots_classic_baseline_sequence(): | |
| # Reproduce navigation/rendering issues in the classic baseline sequence | |
| # (e.g., template expressions not supported by oTree's template engine). | |
| run_otree_test('classic_baseline') | |