diff --git a/samples/configs/ploty_html_output.json b/samples/configs/HTML/ploty_html_output.json similarity index 100% rename from samples/configs/ploty_html_output.json rename to samples/configs/HTML/ploty_html_output.json diff --git a/samples/configs/simple_html_output.json b/samples/configs/HTML/simple_html_output.json similarity index 100% rename from samples/configs/simple_html_output.json rename to samples/configs/HTML/simple_html_output.json diff --git a/src/config/config_service.py b/src/config/config_service.py index 6dab3fa3..433dffe9 100644 --- a/src/config/config_service.py +++ b/src/config/config_service.py @@ -226,19 +226,23 @@ def load_config_model(self, name, user, parameter_values=None, skip_invalid_para def _visit_script_configs(self, visitor): configs_dir = self._script_configs_folder - files = sorted(os.listdir(configs_dir)) + + files = [] + # Read config file from within directories too + for _root, _dirs, _files in os.walk(configs_dir, topdown=True): + for name in _files: + files.append(os.path.join(_root, name)) configs = [file for file in files if file.lower().endswith(".json") or file.lower().endswith(".yaml")] + configs.sort() result = [] for config_path in configs: - path = os.path.join(configs_dir, config_path) - try: - content = file_utils.read_file(path) + content = file_utils.read_file(config_path) - visit_result = visitor(path, content) + visit_result = visitor(config_path, content) if visit_result is not None: result.append(visit_result) diff --git a/src/tests/config_service_test.py b/src/tests/config_service_test.py index 9c8e6bcd..a2753df0 100644 --- a/src/tests/config_service_test.py +++ b/src/tests/config_service_test.py @@ -39,6 +39,15 @@ def test_list_configs_when_multiple(self): conf_names = [config.name for config in configs] self.assertCountEqual(['conf_x', 'conf_y', 'A B C'], conf_names) + def test_list_configs_when_multiple_and_subfolders(self): + _create_script_config_file('conf_x', subfolder = 's1') + _create_script_config_file('conf_y', subfolder = 's2') + _create_script_config_file('ABC', subfolder = os.path.join('s1', 'inner')) + + configs = self.config_service.list_configs(self.user) + conf_names = [config.name for config in configs] + self.assertCountEqual(['conf_x', 'conf_y', 'ABC'], conf_names) + def test_list_configs_with_groups(self): _create_script_config_file('conf_x', group='g1') _create_script_config_file('conf_y') @@ -103,7 +112,7 @@ def test_load_config_with_slash_in_name(self): _create_script_config_file('conf_x', name='Name with slash /') config = self.config_service.load_config_model('Name with slash /', self.user) - self.assertEquals('Name with slash /', config.name) + self.assertEqual('Name with slash /', config.name) def tearDown(self): super().tearDown() diff --git a/tools/run_e2e_tests.sh b/tools/run_e2e_tests.sh index 2e8e541b..99b65087 100755 --- a/tools/run_e2e_tests.sh +++ b/tools/run_e2e_tests.sh @@ -3,7 +3,7 @@ set -e mkdir -p conf/runners -cp samples/configs/* conf/runners/ +cp -r samples/configs/* conf/runners/ ./launcher.py > /dev/null & SERVER_PID=$!