import copy import os import sys from unittest import TestLoader, TestSuite from HtmlTestRunner import HTMLTestRunner from integration.partial.integration_test_utils import IntegrationTestUtils from integration.test_suites.depo_test_suite import BaseDepoTestSuite class FullTestDeposition(BaseDepoTestSuite.DepoTestSuite): def set_expected_values(self): self.EA_CSV_COUNT = 9 self.ETH_CSV_COUNT = 9 self.EA_PNG_COUNT = 3 self.ETH_PNG_COUNT = 3 def setUp(self) -> None: self.set_expected_values() if BaseDepoTestSuite.DepoTestSuite.TEST_OUT_PATH is None \ or not os.path.isdir(BaseDepoTestSuite.DepoTestSuite.TEST_OUT_PATH): FullTestDeposition.write_temp_run_config_file() FullTestDeposition.run_depo_pipeline() else: print(f"output in {BaseDepoTestSuite.DepoTestSuite.TEST_OUT_PATH} already written, skipping rerun") @staticmethod def write_temp_run_config_file(): default_config = IntegrationTestUtils.DEFAULT_CONFIG_FILE_PATH default_config_dict: dict = IntegrationTestUtils.load_json_file(default_config) run_dict: dict = copy.deepcopy(default_config_dict) # BaseDepoTestSuite.DepoTestSuite.TEST_OUT_PATH = IntegrationTestUtils.TEST_WORKSPACE_PATH + prefix + os.sep run_dict['WorkspacePathout'] = BaseDepoTestSuite.DepoTestSuite.TEST_OUT_PATH run_dict['WorkspacePath'] = BaseDepoTestSuite.DepoTestSuite.TEST_OUT_PATH os.makedirs(BaseDepoTestSuite.DepoTestSuite.TEST_OUT_PATH, exist_ok = True) IntegrationTestUtils.TEMP_CONFIG_FILE_NAME = BaseDepoTestSuite.DepoTestSuite.TEST_OUT_PATH + "temp_config.json" IntegrationTestUtils.write_json_file(run_dict, IntegrationTestUtils.TEMP_CONFIG_FILE_NAME) @staticmethod def run_depo_pipeline(): component = 'Deposition' IntegrationTestUtils.run_external_pipeline(component, BaseDepoTestSuite.DepoTestSuite.TEST_START_DATE, IntegrationTestUtils.EMAIL_CRED_PATH) if __name__ == '__main__': _parser = IntegrationTestUtils.build_arg_parser() _args = _parser.parse_args() _config_file: str = _args.config _outdir: str = _args.outdir _email_cred_path: str = _args.email_cred _test_report_dir: str = _args.test_report_dir _run_date_type: str = _args.run_date_type _custom_run_date: str = _args.custom_run_date IntegrationTestUtils.DEFAULT_CONFIG_FILE_PATH = _config_file nowstring: str = IntegrationTestUtils.get_now_string() # prefix: str = "temp_depo_" + nowstring prefix: str = "temp_depo" BaseDepoTestSuite.DepoTestSuite.TEST_OUT_PATH = _outdir + prefix + os.sep IntegrationTestUtils.EMAIL_CRED_PATH = _email_cred_path BaseDepoTestSuite.DepoTestSuite.TEST_START_DATE = IntegrationTestUtils.generate_run_date(_run_date_type, _custom_run_date) BaseDepoTestSuite.DepoTestSuite.TEST_JOB_DIR = "DEPOSITION_" + BaseDepoTestSuite.DepoTestSuite.TEST_START_DATE # Now set the sys.argv to the unittest_args (leaving sys.argv[0] alone) sys.argv[1:] = _args.unittest_args tests: TestSuite = TestLoader().loadTestsFromTestCase(FullTestDeposition) if _test_report_dir is None: _test_report_dir = BaseDepoTestSuite.DepoTestSuite.TEST_JOB_DIR runner = HTMLTestRunner(output=_test_report_dir, combine_reports = True) runner.run(tests)