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=$!