From f9ac8b1e29cff099ab7356963c411efdb4788d00 Mon Sep 17 00:00:00 2001 From: Matthew Gordon Date: Tue, 5 Mar 2024 13:59:28 -0400 Subject: [PATCH] Separate db tests from unit tests --- dev.py | 8 +++++++ scripts/run.py | 54 ++++++++++++++++++++++++++++---------------- src/db/migrations.rs | 2 ++ 3 files changed, 45 insertions(+), 19 deletions(-) diff --git a/dev.py b/dev.py index 8695519..bfe7efe 100644 --- a/dev.py +++ b/dev.py @@ -32,12 +32,20 @@ def unit_tests(args): import_run().unit_tests(args) +def database_tests(args): + import_run().database_tests(args) + + parser = argparse.ArgumentParser() subparsers = parser.add_subparsers(required=True) run_parser = subparsers.add_parser( 'run', help='Run a test instance of locality' ) run_parser.set_defaults(func=run) +run_parser = subparsers.add_parser( + 'dbtest', help='Run database tests' +) +run_parser.set_defaults(func=database_tests) run_parser = subparsers.add_parser( 'unittest', help='Run unit tests' ) diff --git a/scripts/run.py b/scripts/run.py index 1f19ad3..0fa7956 100644 --- a/scripts/run.py +++ b/scripts/run.py @@ -8,7 +8,33 @@ from .postgres_container import PostgresContainer ROOT_DIR = None -def cargo(*args): +def cargo(*args, env=None): + global ROOT_DIR + if env is None: + env = { + 'LOCALITY_DATABASE_URL': "", + 'LOCALITY_TEST_DATABASE_URL': "", + 'LOCALITY_STATIC_FILE_PATH': os.path.join( + ROOT_DIR, + 'static'), + 'LOCALITY_HMAC_SECRET': 'iknf4390-8guvmr3' + } + env = os.environ.copy() | env + cargo_bin = shutil.which('cargo') + locality_process = subprocess.Popen( + [cargo_bin] + list(args), env=env, cwd=ROOT_DIR + ) + try: + while locality_process.poll() is None: + time.sleep(0.5) + except KeyboardInterrupt: + pass + finally: + if locality_process.poll() is None: + locality_process.terminate() + + +def cargo_with_db(*args): global ROOT_DIR with PostgresContainer() as postgres: locality_env = { @@ -19,26 +45,16 @@ def cargo(*args): 'static'), 'LOCALITY_HMAC_SECRET': 'iknf4390-8guvmr3' } - locality_env = os.environ.copy() | locality_env - - cargo_bin = shutil.which('cargo') - locality_process = subprocess.Popen( - [cargo_bin, *args], env=locality_env, cwd=ROOT_DIR - ) - - try: - while locality_process.poll() is None: - time.sleep(0.5) - except KeyboardInterrupt: - pass - finally: - if locality_process.poll() is None: - locality_process.terminate() + cargo(env=locality_env, *args) -def run(args): - cargo('run') +def run(*args): + cargo_with_db('run') -def unit_tests(args): +def database_tests(*args): + cargo_with_db("test", "db::migrations::test", "--", "--include-ignored") + + +def unit_tests(*args): cargo("test") diff --git a/src/db/migrations.rs b/src/db/migrations.rs index 1784614..0b916a5 100644 --- a/src/db/migrations.rs +++ b/src/db/migrations.rs @@ -220,6 +220,7 @@ mod tests { PostgresDatabase::new(&url).unwrap() } + #[ignore] #[test] fn migrations_have_sequential_versions() { for i in 0..MIGRATIONS.len() { @@ -227,6 +228,7 @@ mod tests { } } + #[ignore] #[tokio::test] async fn migrate_up_and_down_all() { let db = test_db().await;