diff --git a/test/advection_test/advection_test_reports.py b/test/advection_test/advection_test_reports.py index b255b767..e0bd8d68 100644 --- a/test/advection_test/advection_test_reports.py +++ b/test/advection_test/advection_test_reports.py @@ -10,23 +10,18 @@ Usage: python test_reports ----------------------------------------------------------------------- """ -import sys import os import unittest -import subprocess + +from test_stub import BaseTests _BUILD_DIR = os.path.join(os.path.abspath(os.environ['BUILD_DIR']), "test", "advection_test") +_DATABASE = os.path.abspath(os.path.join(_BUILD_DIR, "ccpp", "datatable.xml")) + _TEST_DIR = os.path.dirname(os.path.abspath(__file__)) _FRAMEWORK_DIR = os.path.abspath(os.path.join(_TEST_DIR, os.pardir, os.pardir)) _SCRIPTS_DIR = os.path.abspath(os.path.join(_FRAMEWORK_DIR, "scripts")) -sys.path.append(_SCRIPTS_DIR) -# pylint: disable=wrong-import-position -from ccpp_datafile import datatable_report, DatatableReport -# pylint: enable=wrong-import-position - -_DATABASE = os.path.abspath(os.path.join(_BUILD_DIR, "ccpp", "datatable.xml")) - # Check data _HOST_FILES = [os.path.join(_BUILD_DIR, "ccpp", "test_host_ccpp_cap.F90")] _SUITE_FILES = [os.path.join(_BUILD_DIR, "ccpp", "ccpp_cld_suite_cap.F90")] @@ -40,7 +35,6 @@ _PROCESS_LIST = [""] _MODULE_LIST = ["apply_constituent_tendencies", "cld_ice", "cld_liq"] _SUITE_LIST = ["cld_suite"] -_DYN_CONST_ROUTINES = ["cld_ice_dynamic_constituents", "cld_liq_dynamic_constituents"] _REQUIRED_VARS_CLD = ["ccpp_error_code", "ccpp_error_message", "horizontal_loop_begin", "horizontal_loop_end", "surface_air_pressure", "temperature", @@ -79,124 +73,44 @@ "cloud_liquid_dry_mixing_ratio", "dynamic_constituents_for_cld_ice", "dynamic_constituents_for_cld_liq"] -_SEP = "," - -class TestAdvectionDataTables(unittest.TestCase): - def test_host_files(self): - test_str = datatable_report(_DATABASE, DatatableReport("host_files"), _SEP) - self.assertSetEqual(set(_HOST_FILES), set(test_str.split(_SEP))) - - def test_suite_files(self): - test_str = datatable_report(_DATABASE, DatatableReport("suite_files"), _SEP) - self.assertSetEqual(set(_SUITE_FILES), set(test_str.split(_SEP))) - - def test_utility_files(self): - test_str = datatable_report(_DATABASE, DatatableReport("utility_files"), _SEP) - self.assertSetEqual(set(_UTILITY_FILES), set(test_str.split(_SEP))) - - def test_ccpp_files(self): - test_str = datatable_report(_DATABASE, DatatableReport("ccpp_files"), _SEP) - self.assertSetEqual(set(_CCPP_FILES), set(test_str.split(_SEP))) - - def test_process_list(self): - test_str = datatable_report(_DATABASE, DatatableReport("process_list"), _SEP) - self.assertSetEqual(set(_PROCESS_LIST), set(test_str.split(_SEP))) - - def test_module_list(self): - test_str = datatable_report(_DATABASE, DatatableReport("module_list"), _SEP) - self.assertSetEqual(set(_MODULE_LIST), set(test_str.split(_SEP))) - - def test_dependencies_list(self): - test_str = datatable_report(_DATABASE, DatatableReport("dependencies"), _SEP) - self.assertSetEqual(set(_DEPENDENCIES), set(test_str.split(_SEP))) - - def test_suite_list(self): - test_str = datatable_report(_DATABASE, DatatableReport("suite_list"), _SEP) - self.assertSetEqual(set(_SUITE_LIST), set(test_str.split(_SEP))) - -class CommandLineAdvectionDatafileRequiredFiles(unittest.TestCase): - def test_host_files(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--host-files"], - capture_output=True, - text=True) - actualOutput = {s.strip() for s in completedProcess.stdout.split(_SEP)} - self.assertSetEqual(set(_HOST_FILES), actualOutput) - - def test_suite_files(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--suite-files"], - capture_output=True, - text=True) - self.assertEqual(_SEP.join(_SUITE_FILES), completedProcess.stdout.strip()) - - def test_utility_files(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--utility-files"], - capture_output=True, - text=True) - self.assertEqual(_SEP.join(_UTILITY_FILES), completedProcess.stdout.strip()) - - def test_ccpp_files(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--ccpp-files"], - capture_output=True, - text=True) - self.assertEqual(_SEP.join(_CCPP_FILES), completedProcess.stdout.strip()) - - def test_process_list(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--process-list"], - capture_output=True, - text=True) - actualOutput = {s.strip() for s in completedProcess.stdout.split(_SEP)} - self.assertSetEqual(set(_PROCESS_LIST), actualOutput) - - def test_module_list(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--module-list"], - capture_output=True, - text=True) - self.assertEqual(_SEP.join(_MODULE_LIST), completedProcess.stdout.strip()) - - def test_dependencies(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--dependencies"], - capture_output=True, - text=True) - self.assertEqual(_SEP.join(_DEPENDENCIES), completedProcess.stdout.strip()) - - def test_suite_list(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--suite-list", "--sep=;"], - capture_output=True, - text=True) - # actualOutput = {s.strip() for s in completedProcess.stdout.split(";")} - self.assertEqual(";".join(_SUITE_LIST), completedProcess.stdout.strip()) - -class TestCldSuite(unittest.TestCase): - def test_required_variables(self): - test_str = datatable_report(_DATABASE, DatatableReport("required_variables", value="cld_suite"), _SEP) - self.assertSetEqual(set(_REQUIRED_VARS_CLD), set(test_str.split(_SEP))) - - def test_input_variables(self): - test_str = datatable_report(_DATABASE, DatatableReport("input_variables", value="cld_suite"), _SEP) - self.assertSetEqual(set(_INPUT_VARS_CLD), set(test_str.split(_SEP))) - - def test_output_variables(self): - test_str = datatable_report(_DATABASE, DatatableReport("output_variables", value="cld_suite"), _SEP) - self.assertSetEqual(set(_OUTPUT_VARS_CLD), set(test_str.split(_SEP))) - -class CommandLineCldSuite(unittest.TestCase): - def test_required_variables(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--required-variables", "cld_suite"], - capture_output=True, - text=True) - actualOutput = {s.strip() for s in completedProcess.stdout.split(_SEP)} - self.assertSetEqual(set(_REQUIRED_VARS_CLD), actualOutput) - def test_input_variables(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--input-variables", "cld_suite"], - capture_output=True, - text=True) - actualOutput = {s.strip() for s in completedProcess.stdout.split(_SEP)} - self.assertSetEqual(set(_INPUT_VARS_CLD), actualOutput) - def test_output_variables(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--output-variables", "cld_suite"], - capture_output=True, - text=True) - actualOutput = {s.strip() for s in completedProcess.stdout.split(_SEP)} - self.assertSetEqual(set(_OUTPUT_VARS_CLD), actualOutput) +class TestAdvectionHostDataTables(unittest.TestCase, BaseTests.TestHostDataTables): + database = _DATABASE + host_files = _HOST_FILES + suite_files = _SUITE_FILES + utility_files = _UTILITY_FILES + ccpp_files = _CCPP_FILES + process_list = _PROCESS_LIST + module_list = _MODULE_LIST + dependencies = _DEPENDENCIES + suite_list = _SUITE_LIST + +class CommandLineAdvectionHostDatafileRequiredFiles(unittest.TestCase, BaseTests.TestHostCommandLineDataFiles): + database = _DATABASE + host_files = _HOST_FILES + suite_files = _SUITE_FILES + utility_files = _UTILITY_FILES + ccpp_files = _CCPP_FILES + process_list = _PROCESS_LIST + module_list = _MODULE_LIST + dependencies = _DEPENDENCIES + suite_list = _SUITE_LIST + datafile_script = f"{_SCRIPTS_DIR}/ccpp_datafile.py" + + +class TestCapgenCldSuite(unittest.TestCase, BaseTests.TestSuite): + database = _DATABASE + required_vars = _REQUIRED_VARS_CLD + input_vars = _INPUT_VARS_CLD + output_vars = _OUTPUT_VARS_CLD + suite_name = "cld_suite" + + +class CommandLineCapgenDdtSuite(unittest.TestCase, BaseTests.TestSuiteCommandLine): + database = _DATABASE + required_vars = _REQUIRED_VARS_CLD + input_vars = _INPUT_VARS_CLD + output_vars = _OUTPUT_VARS_CLD + suite_name = "cld_suite" + datafile_script = f"{_SCRIPTS_DIR}/ccpp_datafile.py" \ No newline at end of file diff --git a/test/capgen_test/capgen_test_reports.py b/test/capgen_test/capgen_test_reports.py index 78ba5b85..16249482 100644 --- a/test/capgen_test/capgen_test_reports.py +++ b/test/capgen_test/capgen_test_reports.py @@ -10,25 +10,19 @@ Usage: python test_reports ----------------------------------------------------------------------- """ -import sys import os import unittest -import subprocess + +from test_stub import BaseTests _BUILD_DIR = os.path.join(os.path.abspath(os.environ['BUILD_DIR']), "test", "capgen_test") +_DATABASE = os.path.abspath(os.path.join(_BUILD_DIR, "ccpp", "datatable.xml")) _TEST_DIR = os.path.dirname(os.path.abspath(__file__)) _FRAMEWORK_DIR = os.path.abspath(os.path.join(_TEST_DIR, os.pardir, os.pardir)) _SCRIPTS_DIR = os.path.join(_FRAMEWORK_DIR, "scripts") _SRC_DIR = os.path.join(_FRAMEWORK_DIR, "src") -sys.path.append(_SCRIPTS_DIR) -# pylint: disable=wrong-import-position -from ccpp_datafile import datatable_report, DatatableReport -# pylint: enable=wrong-import-position - -_DATABASE = os.path.abspath(os.path.join(_BUILD_DIR, "ccpp", "datatable.xml")) - # Check data _HOST_FILES = [os.path.join(_BUILD_DIR, "ccpp", "test_host_ccpp_cap.F90")] _SUITE_FILES = [os.path.join(_BUILD_DIR, "ccpp", "ccpp_ddt_suite_cap.F90"), @@ -79,169 +73,66 @@ "potential_temperature_at_interface", "coefficients_for_interpolation", "surface_air_pressure", "water_vapor_specific_humidity"] -_SEP = "," - -class TestCapgenDataTables(unittest.TestCase): - def test_host_files(self): - test_str = datatable_report(_DATABASE, DatatableReport("host_files"), _SEP) - self.assertSetEqual(set(_HOST_FILES), set(test_str.split(_SEP))) - - def test_suite_files(self): - test_str = datatable_report(_DATABASE, DatatableReport("suite_files"), _SEP) - self.assertSetEqual(set(_SUITE_FILES), set(test_str.split(_SEP))) - - def test_utility_files(self): - test_str = datatable_report(_DATABASE, DatatableReport("utility_files"), _SEP) - self.assertSetEqual(set(_UTILITY_FILES), set(test_str.split(_SEP))) - - def test_ccpp_files(self): - test_str = datatable_report(_DATABASE, DatatableReport("ccpp_files"), _SEP) - self.assertSetEqual(set(_CCPP_FILES), set(test_str.split(_SEP))) - - def test_process_list(self): - test_str = datatable_report(_DATABASE, DatatableReport("process_list"), _SEP) - self.assertSetEqual(set(_PROCESS_LIST), set(test_str.split(_SEP))) - - def test_module_list(self): - test_str = datatable_report(_DATABASE, DatatableReport("module_list"), _SEP) - self.assertSetEqual(set(_MODULE_LIST), set(test_str.split(_SEP))) - - def test_dependencies_list(self): - test_str = datatable_report(_DATABASE, DatatableReport("dependencies"), _SEP) - self.assertSetEqual(set(_DEPENDENCIES), set(test_str.split(_SEP))) - - def test_suite_list(self): - test_str = datatable_report(_DATABASE, DatatableReport("suite_list"), _SEP) - self.assertSetEqual(set(_SUITE_LIST), set(test_str.split(_SEP))) - - -class TestDdtSuite(unittest.TestCase): - def test_required_variables(self): - test_str = datatable_report(_DATABASE, DatatableReport("required_variables", value="ddt_suite"), _SEP) - self.assertSetEqual(set(_REQUIRED_VARS_DDT), set(test_str.split(_SEP))) - - def test_input_variables(self): - test_str = datatable_report(_DATABASE, DatatableReport("input_variables", value="ddt_suite"), _SEP) - self.assertSetEqual(set(_INPUT_VARS_DDT), set(test_str.split(_SEP))) - - def test_output_variables(self): - test_str = datatable_report(_DATABASE, DatatableReport("output_variables", value="ddt_suite"), _SEP) - self.assertSetEqual(set(_OUTPUT_VARS_DDT), set(test_str.split(_SEP))) - - -class TestTempSuite(unittest.TestCase): - def test_required_variables(self): - test_str = datatable_report(_DATABASE, DatatableReport("required_variables", value="temp_suite"), _SEP) - self.assertSetEqual(set(_REQUIRED_VARS_TEMP + _PROT_VARS_TEMP), set(test_str.split(_SEP))) - - def test_required_variables_excluding_protected(self): - test_str = datatable_report(_DATABASE, DatatableReport("required_variables", value="temp_suite"), _SEP, exclude_protected=True) - self.assertSetEqual(set(_REQUIRED_VARS_TEMP), set(test_str.split(_SEP))) - - def test_input_variables(self): - test_str = datatable_report(_DATABASE, DatatableReport("input_variables", value="temp_suite"), _SEP) - self.assertSetEqual(set(_INPUT_VARS_TEMP + _PROT_VARS_TEMP), set(test_str.split(_SEP))) - - def test_input_variables_excluding_protected(self): - test_str = datatable_report(_DATABASE, DatatableReport("input_variables", value="temp_suite"), _SEP, exclude_protected=True) - self.assertSetEqual(set(_INPUT_VARS_TEMP), set(test_str.split(_SEP))) - - def test_output_variables(self): - test_str = datatable_report(_DATABASE, DatatableReport("output_variables", value="temp_suite"), _SEP) - self.assertSetEqual(set(_OUTPUT_VARS_TEMP), set(test_str.split(_SEP))) - - -class CommandLineCapgenDatafileRequiredFiles(unittest.TestCase): - def test_host_files(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--host-files"], - capture_output=True, - text=True) - actualOutput = {s.strip() for s in completedProcess.stdout.split(_SEP)} - self.assertSetEqual(set(_HOST_FILES), actualOutput) - - def test_suite_files(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--suite-files"], - capture_output=True, - text=True) - self.assertEqual(_SEP.join(_SUITE_FILES), completedProcess.stdout.strip()) - - def test_utility_files(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--utility-files"], - capture_output=True, - text=True) - self.assertEqual(_SEP.join(_UTILITY_FILES), completedProcess.stdout.strip()) - - def test_ccpp_files(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--ccpp-files"], - capture_output=True, - text=True) - self.assertEqual(_SEP.join(_CCPP_FILES), completedProcess.stdout.strip()) - - def test_process_list(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--process-list"], - capture_output=True, - text=True) - actualOutput = {s.strip() for s in completedProcess.stdout.split(_SEP)} - self.assertSetEqual(set(_PROCESS_LIST), actualOutput) - - def test_module_list(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--module-list"], - capture_output=True, - text=True) - self.assertEqual(_SEP.join(_MODULE_LIST), completedProcess.stdout.strip()) - - def test_dependencies(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--dependencies"], - capture_output=True, - text=True) - self.assertEqual(_SEP.join(_DEPENDENCIES), completedProcess.stdout.strip()) - - def test_suite_list(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--suite-list", "--sep=;"], - capture_output=True, - text=True) - # actualOutput = {s.strip() for s in completedProcess.stdout.split(";")} - self.assertEqual(";".join(_SUITE_LIST), completedProcess.stdout.strip()) - -class CommandLineDdtSuite(unittest.TestCase): - def test_required_variables(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--required-variables", "ddt_suite"], - capture_output=True, - text=True) - actualOutput = {s.strip() for s in completedProcess.stdout.split(_SEP)} - self.assertSetEqual(set(_REQUIRED_VARS_DDT), actualOutput) - - def test_input_variables(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--input-variables", "ddt_suite"], - capture_output=True, - text=True) - actualOutput = {s.strip() for s in completedProcess.stdout.split(_SEP)} - self.assertSetEqual(set(_INPUT_VARS_DDT), actualOutput) - - def test_output_variables(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--output-variables", "ddt_suite"], - capture_output=True, - text=True) - self.assertEqual(_SEP.join(_OUTPUT_VARS_DDT), completedProcess.stdout.strip()) - -class CommandLineTempSuite(unittest.TestCase): - def test_required_variables(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--required-variables", "temp_suite"], - capture_output=True, - text=True) - actualOutput = {s.strip() for s in completedProcess.stdout.split(_SEP)} - self.assertSetEqual(set(_REQUIRED_VARS_TEMP + _PROT_VARS_TEMP), actualOutput) - - def test_input_variables(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--input-variables", "temp_suite"], - capture_output=True, - text=True) - actualOutput = {s.strip() for s in completedProcess.stdout.split(_SEP)} - self.assertSetEqual(set(_INPUT_VARS_TEMP + _PROT_VARS_TEMP), actualOutput) - - def test_output_variables(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--output-variables", "temp_suite"], - capture_output=True, - text=True) - actualOutput = {s.strip() for s in completedProcess.stdout.split(_SEP)} - self.assertSetEqual(set(_OUTPUT_VARS_TEMP), actualOutput) + + +class TestCapgenHostDataTables(unittest.TestCase, BaseTests.TestHostDataTables): + database = _DATABASE + host_files = _HOST_FILES + suite_files = _SUITE_FILES + utility_files = _UTILITY_FILES + ccpp_files = _CCPP_FILES + process_list = _PROCESS_LIST + module_list = _MODULE_LIST + dependencies = _DEPENDENCIES + suite_list = _SUITE_LIST + + +class CommandLineCapgenHostDatafileRequiredFiles(unittest.TestCase, BaseTests.TestHostCommandLineDataFiles): + database = _DATABASE + host_files = _HOST_FILES + suite_files = _SUITE_FILES + utility_files = _UTILITY_FILES + ccpp_files = _CCPP_FILES + process_list = _PROCESS_LIST + module_list = _MODULE_LIST + dependencies = _DEPENDENCIES + suite_list = _SUITE_LIST + datafile_script = f"{_SCRIPTS_DIR}/ccpp_datafile.py" + + +class TestCapgenDdtSuite(unittest.TestCase, BaseTests.TestSuite): + database = _DATABASE + required_vars = _REQUIRED_VARS_DDT + input_vars = _INPUT_VARS_DDT + output_vars = _OUTPUT_VARS_DDT + suite_name = "ddt_suite" + + +class CommandLineCapgenDdtSuite(unittest.TestCase, BaseTests.TestSuiteCommandLine): + database = _DATABASE + required_vars = _REQUIRED_VARS_DDT + input_vars = _INPUT_VARS_DDT + output_vars = _OUTPUT_VARS_DDT + suite_name = "ddt_suite" + datafile_script = f"{_SCRIPTS_DIR}/ccpp_datafile.py" + + +class TestCapgenTempSuite(unittest.TestCase, BaseTests.TestSuiteExcludeProtected): + database = _DATABASE + required_vars = _REQUIRED_VARS_TEMP + _PROT_VARS_TEMP + input_vars = _INPUT_VARS_TEMP + _PROT_VARS_TEMP + required_vars_excluding_protected = _REQUIRED_VARS_TEMP + input_vars_excluding_protected = _INPUT_VARS_TEMP + output_vars = _OUTPUT_VARS_TEMP + suite_name = "temp_suite" + + +class CommandLineCapgenTempSuite(unittest.TestCase, BaseTests.TestSuiteExcludeProtectedCommandLine): + database = _DATABASE + required_vars = _REQUIRED_VARS_TEMP + _PROT_VARS_TEMP + input_vars = _INPUT_VARS_TEMP + _PROT_VARS_TEMP + required_vars_excluding_protected = _REQUIRED_VARS_TEMP + input_vars_excluding_protected = _INPUT_VARS_TEMP + output_vars = _OUTPUT_VARS_TEMP + suite_name = "temp_suite" + datafile_script = f"{_SCRIPTS_DIR}/ccpp_datafile.py" diff --git a/test/ddthost_test/ddthost_test_reports.py b/test/ddthost_test/ddthost_test_reports.py index 5fd17677..72b3fe9e 100644 --- a/test/ddthost_test/ddthost_test_reports.py +++ b/test/ddthost_test/ddthost_test_reports.py @@ -16,18 +16,13 @@ from test_stub import BaseTests _BUILD_DIR = os.path.join(os.path.abspath(os.environ['BUILD_DIR']), "test", "ddthost_test") +_DATABASE = os.path.abspath(os.path.join(_BUILD_DIR, "ccpp", "datatable.xml")) _TEST_DIR = os.path.dirname(os.path.abspath(__file__)) _FRAMEWORK_DIR = os.path.abspath(os.path.join(_TEST_DIR, os.pardir, os.pardir)) _SCRIPTS_DIR = os.path.join(_FRAMEWORK_DIR, "scripts") _SRC_DIR = os.path.join(_FRAMEWORK_DIR, "src") -# sys.path.append(_SCRIPTS_DIR) -# pylint: disable=wrong-import-position -from ccpp_datafile import datatable_report, DatatableReport -# pylint: enable=wrong-import-position - -_DATABASE = os.path.abspath(os.path.join(_BUILD_DIR, "ccpp", "datatable.xml")) # Check data _HOST_FILES = [os.path.join(_BUILD_DIR, "ccpp", "test_host_ccpp_cap.F90")] @@ -121,7 +116,7 @@ class CommandLineDdtSuite(unittest.TestCase, BaseTests.TestSuiteCommandLine): datafile_script = f"{_SCRIPTS_DIR}/ccpp_datafile.py" -class TestTempSuite(unittest.TestCase, BaseTests.TestSuiteExcludeProtected): +class TestDdtTempSuite(unittest.TestCase, BaseTests.TestSuiteExcludeProtected): database = _DATABASE required_vars = _REQUIRED_VARS_TEMP + _PROT_VARS_TEMP input_vars = _INPUT_VARS_TEMP + _PROT_VARS_TEMP @@ -131,7 +126,7 @@ class TestTempSuite(unittest.TestCase, BaseTests.TestSuiteExcludeProtected): suite_name = "temp_suite" -class CommandLineTempSuite(unittest.TestCase, BaseTests.TestSuiteExcludeProtectedCommandLine): +class CommandLineDdtTempSuite(unittest.TestCase, BaseTests.TestSuiteExcludeProtectedCommandLine): database = _DATABASE required_vars = _REQUIRED_VARS_TEMP + _PROT_VARS_TEMP input_vars = _INPUT_VARS_TEMP + _PROT_VARS_TEMP diff --git a/test/test_stub.py b/test/test_stub.py index faba8785..74d5e320 100644 --- a/test/test_stub.py +++ b/test/test_stub.py @@ -1,10 +1,12 @@ from ccpp_datafile import datatable_report, DatatableReport import subprocess + class BaseTests: + class TestHostDataTables: - _SEP = ";" + _SEP = "," def test_host_files(self): test_str = datatable_report(self.database, DatatableReport("host_files"), self._SEP) @@ -38,6 +40,7 @@ def test_suite_list(self): test_str = datatable_report(self.database, DatatableReport("suite_list"), self._SEP) self.assertSetEqual(set(self.suite_list), set(test_str.split(self._SEP))) + class TestHostCommandLineDataFiles: _SEP = "," @@ -45,8 +48,7 @@ def test_host_files(self): completedProcess = subprocess.run([self.datafile_script, self.database, "--host-files"], capture_output=True, text=True) - actualOutput = {s.strip() for s in completedProcess.stdout.split(self._SEP)} - self.assertSetEqual(set(self.host_files), actualOutput) + self.assertEqual(self._SEP.join(self.host_files), completedProcess.stdout.strip()) def test_suite_files(self): completedProcess = subprocess.run([self.datafile_script, self.database, "--suite-files"], @@ -89,9 +91,9 @@ def test_suite_list(self): completedProcess = subprocess.run([self.datafile_script, self.database, "--suite-list", "--sep=;"], capture_output=True, text=True) - # actualOutput = {s.strip() for s in completedProcess.stdout.split(";")} self.assertEqual(";".join(self.suite_list), completedProcess.stdout.strip()) + class TestSuite: _SEP = "," @@ -106,7 +108,8 @@ def test_input_variables(self): def test_output_variables(self): test_str = datatable_report(self.database, DatatableReport("output_variables", value=self.suite_name), self._SEP) self.assertSetEqual(set(self.output_vars), set(test_str.split(self._SEP))) - + + class TestSuiteCommandLine: _SEP = "," @@ -131,6 +134,7 @@ def test_output_variables(self): actualOutput = {s.strip() for s in completedProcess.stdout.split(self._SEP)} self.assertSetEqual(set(self.output_vars), actualOutput) + class TestSuiteExcludeProtected(TestSuite): def test_required_variables_excluding_protected(self): test_str = datatable_report(self.database, DatatableReport("required_variables", value="temp_suite"), self._SEP, exclude_protected=True) @@ -140,6 +144,7 @@ def test_input_variables_excluding_protected(self): test_str = datatable_report(self.database, DatatableReport("input_variables", value="temp_suite"), self._SEP, exclude_protected=True) self.assertSetEqual(set(self.input_vars_excluding_protected), set(test_str.split(self._SEP))) + class TestSuiteExcludeProtectedCommandLine(TestSuiteCommandLine): def test_required_variables_excluding_protected(self): completedProcess = subprocess.run([self.datafile_script, self.database, "--exclude-protected", "--required-variables", self.suite_name], diff --git a/test/var_compatibility_test/var_compatibility_test_reports.py b/test/var_compatibility_test/var_compatibility_test_reports.py index ba005a70..f2f7f6ef 100755 --- a/test/var_compatibility_test/var_compatibility_test_reports.py +++ b/test/var_compatibility_test/var_compatibility_test_reports.py @@ -10,25 +10,19 @@ Usage: python test_reports ----------------------------------------------------------------------- """ -import sys import os import unittest -import subprocess + +from test_stub import BaseTests _BUILD_DIR = os.path.join(os.path.abspath(os.environ['BUILD_DIR']), "test", "var_compatibility_test") +_DATABASE = os.path.abspath(os.path.join(_BUILD_DIR, "ccpp", "datatable.xml")) _TEST_DIR = os.path.dirname(os.path.abspath(__file__)) _FRAMEWORK_DIR = os.path.abspath(os.path.join(_TEST_DIR, os.pardir, os.pardir)) _SCRIPTS_DIR = os.path.join(_FRAMEWORK_DIR, "scripts") _SRC_DIR = os.path.join(_FRAMEWORK_DIR, "src") -sys.path.append(_SCRIPTS_DIR) -# pylint: disable=wrong-import-position -from ccpp_datafile import datatable_report, DatatableReport -# pylint: enable=wrong-import-position - -_DATABASE = os.path.abspath(os.path.join(_BUILD_DIR, "ccpp", "datatable.xml")) - # Check data _HOST_FILES = [os.path.join(_BUILD_DIR, "ccpp", "test_host_ccpp_cap.F90")] _SUITE_FILES = [os.path.join(_BUILD_DIR, "ccpp", "ccpp_var_compatibility_suite_cap.F90")] @@ -65,128 +59,45 @@ "scalar_variable_for_testing", "scheme_order_in_suite"] _REQUIRED_VARS_VAR_ACTION = _INPUT_VARS_VAR_ACTION + _OUTPUT_VARS_VAR_ACTION -_SEP = "," - -class TestVarCompatibilityDataTables(unittest.TestCase): - def test_host_files(self): - test_str = datatable_report(_DATABASE, DatatableReport("host_files"), _SEP) - self.assertSetEqual(set(_HOST_FILES), set(test_str.split(_SEP))) - - def test_suite_files(self): - test_str = datatable_report(_DATABASE, DatatableReport("suite_files"), _SEP) - self.assertSetEqual(set(_SUITE_FILES), set(test_str.split(_SEP))) - - def test_utility_files(self): - test_str = datatable_report(_DATABASE, DatatableReport("utility_files"), _SEP) - self.assertSetEqual(set(_UTILITY_FILES), set(test_str.split(_SEP))) - - def test_ccpp_files(self): - test_str = datatable_report(_DATABASE, DatatableReport("ccpp_files"), _SEP) - self.assertSetEqual(set(_CCPP_FILES), set(test_str.split(_SEP))) - - def test_process_list(self): - test_str = datatable_report(_DATABASE, DatatableReport("process_list"), _SEP) - self.assertSetEqual(set(_PROCESS_LIST), set(test_str.split(_SEP))) - - def test_module_list(self): - test_str = datatable_report(_DATABASE, DatatableReport("module_list"), _SEP) - self.assertSetEqual(set(_MODULE_LIST), set(test_str.split(_SEP))) - - def test_dependencies_list(self): - test_str = datatable_report(_DATABASE, DatatableReport("dependencies"), _SEP) - self.assertSetEqual(set(_DEPENDENCIES), set(test_str.split(_SEP))) - - def test_suite_list(self): - test_str = datatable_report(_DATABASE, DatatableReport("suite_list"), _SEP) - self.assertSetEqual(set(_SUITE_LIST), set(test_str.split(_SEP))) - - -class CommandLineVarCompatibilityDatafileRequiredFiles(unittest.TestCase): - def test_host_files(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--host-files"], - capture_output=True, - text=True) - actualOutput = {s.strip() for s in completedProcess.stdout.split(_SEP)} - self.assertSetEqual(set(_HOST_FILES), actualOutput) - - def test_suite_files(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--suite-files"], - capture_output=True, - text=True) - self.assertEqual(_SEP.join(_SUITE_FILES), completedProcess.stdout.strip()) - - def test_utility_files(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--utility-files"], - capture_output=True, - text=True) - self.assertEqual(_SEP.join(_UTILITY_FILES), completedProcess.stdout.strip()) - - def test_ccpp_files(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--ccpp-files"], - capture_output=True, - text=True) - self.assertEqual(_SEP.join(_CCPP_FILES), completedProcess.stdout.strip()) - - def test_process_list(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--process-list"], - capture_output=True, - text=True) - actualOutput = {s.strip() for s in completedProcess.stdout.split(_SEP)} - self.assertSetEqual(set(_PROCESS_LIST), actualOutput) - - def test_module_list(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--module-list"], - capture_output=True, - text=True) - self.assertEqual(_SEP.join(_MODULE_LIST), completedProcess.stdout.strip()) - - def test_dependencies(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--dependencies"], - capture_output=True, - text=True) - self.assertEqual(_SEP.join(_DEPENDENCIES), completedProcess.stdout.strip()) - - def test_suite_list(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--suite-list", "--sep=;"], - capture_output=True, - text=True) - # actualOutput = {s.strip() for s in completedProcess.stdout.split(";")} - self.assertEqual(";".join(_SUITE_LIST), completedProcess.stdout.strip()) - - -class TestVarCompatibilitySuite(unittest.TestCase): - def test_required_variables(self): - test_str = datatable_report(_DATABASE, DatatableReport("required_variables", value="var_compatibility_suite"), _SEP) - self.assertSetEqual(set(_REQUIRED_VARS_VAR_ACTION), set(test_str.split(_SEP))) - - def test_input_variables(self): - test_str = datatable_report(_DATABASE, DatatableReport("input_variables", value="var_compatibility_suite"), _SEP) - self.assertSetEqual(set(_INPUT_VARS_VAR_ACTION), set(test_str.split(_SEP))) - - def test_output_variables(self): - test_str = datatable_report(_DATABASE, DatatableReport("output_variables", value="var_compatibility_suite"), _SEP) - self.assertSetEqual(set(_OUTPUT_VARS_VAR_ACTION), set(test_str.split(_SEP))) - - -class CommandLineVarCompatibilitySuite(unittest.TestCase): - def test_required_variables(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--required-variables", "var_compatibility_suite"], - capture_output=True, - text=True) - actualOutput = {s.strip() for s in completedProcess.stdout.split(_SEP)} - self.assertSetEqual(set(_REQUIRED_VARS_VAR_ACTION), actualOutput) - - def test_input_variables(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--input-variables", "var_compatibility_suite"], - capture_output=True, - text=True) - actualOutput = {s.strip() for s in completedProcess.stdout.split(_SEP)} - self.assertSetEqual(set(_INPUT_VARS_VAR_ACTION), actualOutput) - def test_output_variables(self): - completedProcess = subprocess.run([f"{_SCRIPTS_DIR}/ccpp_datafile.py", _DATABASE, "--output-variables", "var_compatibility_suite"], - capture_output=True, - text=True) - actualOutput = {s.strip() for s in completedProcess.stdout.split(_SEP)} - self.assertSetEqual(set(_OUTPUT_VARS_VAR_ACTION), actualOutput) +class TestVarCompatibilityHostDataTables(unittest.TestCase, BaseTests.TestHostDataTables): + database = _DATABASE + host_files = _HOST_FILES + suite_files = _SUITE_FILES + utility_files = _UTILITY_FILES + ccpp_files = _CCPP_FILES + process_list = _PROCESS_LIST + module_list = _MODULE_LIST + dependencies = _DEPENDENCIES + suite_list = _SUITE_LIST + + +class CommandLineVarCompatibilityHostDatafileRequiredFiles(unittest.TestCase, BaseTests.TestHostCommandLineDataFiles): + database = _DATABASE + host_files = _HOST_FILES + suite_files = _SUITE_FILES + utility_files = _UTILITY_FILES + ccpp_files = _CCPP_FILES + process_list = _PROCESS_LIST + module_list = _MODULE_LIST + dependencies = _DEPENDENCIES + suite_list = _SUITE_LIST + datafile_script = f"{_SCRIPTS_DIR}/ccpp_datafile.py" + + +class TestCapgenDdtSuite(unittest.TestCase, BaseTests.TestSuite): + database = _DATABASE + required_vars = _REQUIRED_VARS_VAR_ACTION + input_vars = _INPUT_VARS_VAR_ACTION + output_vars = _OUTPUT_VARS_VAR_ACTION + suite_name = "var_compatibility_suite" + + +class CommandLineCapgenDdtSuite(unittest.TestCase, BaseTests.TestSuiteCommandLine): + database = _DATABASE + required_vars = _REQUIRED_VARS_VAR_ACTION + input_vars = _INPUT_VARS_VAR_ACTION + output_vars = _OUTPUT_VARS_VAR_ACTION + suite_name = "var_compatibility_suite" + datafile_script = f"{_SCRIPTS_DIR}/ccpp_datafile.py"