From 770c54f8cd4cf6e1bca5c5a9eda6de185f8fc012 Mon Sep 17 00:00:00 2001 From: Aaron Dettmann Date: Fri, 6 Mar 2020 22:44:29 +0100 Subject: [PATCH] Add test to make sure aircraft database works --- docs/TODO.md | 1 - run_pytest.sh | 2 +- src/bin/_pytornado_exe.py | 2 +- .../database/{aircraft => }/tools.py | 7 +++- tests/integration/cli/test_basic.py | 41 +++++++++++++++++++ 5 files changed, 49 insertions(+), 4 deletions(-) rename src/lib/pytornado/database/{aircraft => }/tools.py (94%) diff --git a/docs/TODO.md b/docs/TODO.md index 1124100..5eb6c94 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -1,7 +1,6 @@ # TODO ## JSON aircraft database -* Add tests (make sure all aircraft can be run) * Add "comment": "xyz" in JSON file and use as description for `print_available_aircraft()` * Find/add more relevant example aircraft diff --git a/run_pytest.sh b/run_pytest.sh index 97f52b1..a758a3d 100755 --- a/run_pytest.sh +++ b/run_pytest.sh @@ -1,3 +1,3 @@ #!/usr/bin/env bash -pytest -v --cov=pytornado --cov-report=html tests/ +pytest -vs --cov=pytornado --cov-report=html tests/ diff --git a/src/bin/_pytornado_exe.py b/src/bin/_pytornado_exe.py index 069bc69..1c8625c 100755 --- a/src/bin/_pytornado_exe.py +++ b/src/bin/_pytornado_exe.py @@ -30,7 +30,7 @@ from commonlibs.logger.logger import truncate_filepath from pytornado.__version__ import __version__ -import pytornado.database.aircraft.tools as dbtools +import pytornado.database.tools as dbtools import pytornado.stdfun.run as stdrun import pytornado.stdfun.setup as project_setup diff --git a/src/lib/pytornado/database/aircraft/tools.py b/src/lib/pytornado/database/tools.py similarity index 94% rename from src/lib/pytornado/database/aircraft/tools.py rename to src/lib/pytornado/database/tools.py index f8320c2..692c876 100644 --- a/src/lib/pytornado/database/aircraft/tools.py +++ b/src/lib/pytornado/database/tools.py @@ -33,6 +33,8 @@ logger = logging.getLogger(__name__) +PATH_AIRCRAFT_DB = 'aircraft' + def get_aircraft_db_path(): """ @@ -42,7 +44,10 @@ def get_aircraft_db_path(): :path_aircraft_db: (str) absolute path """ - path_aircraft_db = os.path.abspath(os.path.dirname(__file__)) + path_aircraft_db = os.path.join( + os.path.abspath(os.path.dirname(__file__)), + PATH_AIRCRAFT_DB + ) return path_aircraft_db diff --git a/tests/integration/cli/test_basic.py b/tests/integration/cli/test_basic.py index 4d5667a..9f7c825 100755 --- a/tests/integration/cli/test_basic.py +++ b/tests/integration/cli/test_basic.py @@ -6,6 +6,7 @@ import shutil from pathlib import Path +import pytornado.database.tools as dbtools def which(program): """ @@ -80,3 +81,43 @@ def test_basic_usage(): assert results_dir.is_dir() is False shutil.rmtree(project_dir, ignore_errors=True) + + +def test_database(): + """ + Test that all aircraft in the database can be loaded and run + """ + + # Paths + project_dir = Path('pytornado') + shutil.rmtree(project_dir, ignore_errors=True) + + # ------ Iterate through all aircraft in database ----- + for aircraft in dbtools.list_aircraft_names(): + print(f"Testing aircraft '{aircraft}'") + os.system(f"pytornado -v --mdb {aircraft}") + assert project_dir.is_dir() + + settings_file = Path(os.path.join(project_dir, 'settings', f'{aircraft}.json')) + results_dir = Path(os.path.join(project_dir, '_results')) + plot_dir = Path(os.path.join(project_dir, '_plots')) + + # ------ Make sure it runs ----- + with open(settings_file, "r") as fp: + settings = json.load(fp) + settings['plot']['results']['show'] = False + settings['plot']['results']['save'] = True + with open(settings_file, "w") as fp: + json.dump(settings, fp) + os.system(f"pytornado -v --clean --run {settings_file}") + os.system(f"pytornado -v --run {settings_file}") + assert plot_dir.is_dir() + assert results_dir.is_dir() + + # ------ Test the cleaning ----- + os.system(f"pytornado --clean-only --run {settings_file}") + assert settings_file.is_file() is True + assert plot_dir.is_dir() is False + assert results_dir.is_dir() is False + + shutil.rmtree(project_dir, ignore_errors=True)