Skip to content

Commit 54b1127

Browse files
authored
Allow spaces in transformer name or config (#492)
1 parent b246418 commit 54b1127

File tree

4 files changed

+36
-13
lines changed

4 files changed

+36
-13
lines changed

docs/releasenotes/4.0.0.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,3 +190,12 @@ This behaviour didn't improve the readability and now single too long values wil
190190
this using ``split_single_value`` parameter (default ``False``)::
191191

192192
> robotidy -c SplitTooLongLine:split_single_value=True
193+
194+
Spaces in the transformer name or configuration
195+
-------------------------------------------------
196+
197+
Spaces are now allowed in the transformer path or configuration value. To provide such name or value
198+
enclose it with quotation marks::
199+
200+
> robotidy --load-transformer "C:\\My Transformers\\Transformer.py"
201+
> robotidy --configure CustomTransformer:value="param value"

robotidy/transformers/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666

6767
class TransformConfig:
6868
def __init__(self, config, force_include, custom_transformer, is_config):
69-
name, args = split_args_from_name_or_path(config.replace(" ", ""))
69+
name, args = split_args_from_name_or_path(config)
7070
self.name = name
7171
self.args = self.convert_args(args)
7272
self.force_include = force_include

tests/atest/transformers/ExternalTransformer/test_transformer.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,50 +25,50 @@ class TestExternalTransformer(TransformerAcceptanceTest):
2525

2626
@pytest.mark.parametrize("external_transformer", [EXTERNAL_TRANSFORMER, EXTERNAL_TRANSFORMER_REL])
2727
def test_transform_external_transformer(self, external_transformer):
28-
self.run_tidy(args=f"--transform {external_transformer}:param=2".split(), source="tests.robot")
28+
self.run_tidy(args=["--transform", f"{external_transformer}:param=2"], source="tests.robot")
2929
self.compare_file("tests.robot")
3030

3131
@pytest.mark.parametrize("external_transformer", [EXTERNAL_TRANSFORMER, EXTERNAL_TRANSFORMER_REL])
3232
def test_load_external_transformer(self, external_transformer):
33-
self.run_tidy(args=f"--load-transformers {external_transformer}:param=2".split(), source="tests.robot")
33+
self.run_tidy(args=["--load-transformers", f"{external_transformer}:param=2"], source="tests.robot")
3434
self.compare_file("tests.robot", expected_name="tests_with_defaults.robot")
3535

3636
@pytest.mark.parametrize("disabled_transformer", [DISABLED_TRANSFORMER, DISABLED_TRANSFORMER_REL])
3737
def test_transform_disabled(self, disabled_transformer):
38-
self.run_tidy(args=f"--transform {disabled_transformer}".split(), source="tests.robot")
38+
self.run_tidy(args=["--transform", str(disabled_transformer)], source="tests.robot")
3939
self.compare_file("tests.robot", expected_name="tests_lowercase.robot")
4040

4141
@pytest.mark.parametrize("disabled_transformer", [DISABLED_TRANSFORMER, DISABLED_TRANSFORMER_REL])
4242
def test_load_disabled(self, disabled_transformer):
43-
self.run_tidy(args=f"--load-transformers {disabled_transformer}".split(), source="tests.robot")
43+
self.run_tidy(args=["--load-transformers", str(disabled_transformer)], source="tests.robot")
4444
self.compare_file("tests.robot", expected_name="tests_only_defaults.robot")
4545

4646
@pytest.mark.parametrize("module_path", [MODULE_TRANSFORMERS, MODULE_TRANSFORMERS_REL])
4747
def test_load_from_module(self, module_path):
48-
self.run_tidy(args=f"--load-transformers {module_path}".split(), source="tests.robot")
48+
self.run_tidy(args=["--load-transformers", str(module_path)], source="tests.robot")
4949
self.compare_file("tests.robot", expected_name="tests_module_load.robot")
5050

5151
@pytest.mark.parametrize("module_path", [MODULE_TRANSFORMERS, MODULE_TRANSFORMERS_REL])
5252
def test_load_from_module(self, module_path):
53-
self.run_tidy(args=f"--transform {module_path}".split(), source="tests.robot")
53+
self.run_tidy(args=["--transform", str(module_path)], source="tests.robot")
5454
self.compare_file("tests.robot", expected_name="tests_module_transform.robot")
5555

5656
@pytest.mark.parametrize("module_path", [MODULE_TRANSFORMERS, MODULE_TRANSFORMERS_REL])
5757
def test_load_from_module_and_configure(self, module_path):
58-
cmd = f"--load-transformers {module_path} --configure CustomClass2:extra_param=True"
59-
self.run_tidy(args=cmd.split(), source="tests.robot")
58+
cmd = ["--load-transformers", str(module_path), "--configure", "CustomClass2:extra_param=True"]
59+
self.run_tidy(args=cmd, source="tests.robot")
6060
self.compare_file("tests.robot", expected_name="tests_module_load_configure.robot")
6161

6262
@pytest.mark.parametrize("module_path", [MODULE_TRANSFORMERS, MODULE_TRANSFORMERS_REL])
6363
def test_load_from_module_and_configure(self, module_path):
64-
cmd = f"--transform {module_path} --configure CustomClass2:extra_param=True"
65-
self.run_tidy(args=cmd.split(), source="tests.robot")
64+
cmd = ["--transform", str(module_path), "--configure", "CustomClass2:extra_param=True"]
65+
self.run_tidy(args=cmd, source="tests.robot")
6666
self.compare_file("tests.robot", expected_name="tests_module_transform_configure.robot")
6767

6868
def test_transform_ordered(self):
69-
self.run_tidy(f"--transform {MODULE_ORDERED_TRANFORMERS}".split(), source="tests.robot")
69+
self.run_tidy(["--transform", str(MODULE_ORDERED_TRANFORMERS)], source="tests.robot")
7070
self.compare_file("tests.robot", expected_name="tests_module_transform.robot")
7171

7272
def test_load_ordered(self):
73-
self.run_tidy(f"--load-transformers {MODULE_ORDERED_TRANFORMERS}".split(), source="tests.robot")
73+
self.run_tidy(["--load-transformers", str(MODULE_ORDERED_TRANFORMERS)], source="tests.robot")
7474
self.compare_file("tests.robot", expected_name="tests_module_load.robot")

tests/utest/test_load_transformers.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,3 +290,17 @@ def test_duplicated_name_in_transform(self, transform, warn_on, capsys):
290290
)
291291
output = capsys.readouterr()
292292
assert output.out == expected_output
293+
294+
def test_space_in_param_value(self):
295+
param_with_space = "Keyword With Space"
296+
transformers = [
297+
TransformConfig(
298+
f"RenameKeywords:replace_to={param_with_space}",
299+
force_include=True,
300+
custom_transformer=False,
301+
is_config=False,
302+
)
303+
]
304+
config_map = TransformConfigMap(transformers, [], [])
305+
transformers = load_transformers(config_map, target_version=ROBOT_VERSION.major)
306+
assert transformers[0].instance.replace_to == param_with_space

0 commit comments

Comments
 (0)