33from snakemake_interface_common .plugin_registry .tests import TestRegistryBase
44from snakemake_interface_common .plugin_registry .plugin import PluginBase , SettingsBase
55from snakemake_interface_common .plugin_registry import PluginRegistryBase
6+ from snakemake_interface_executor_plugins .utils import format_cli_arg
67
78
89class TestRegistry (TestRegistryBase ):
@@ -26,3 +27,30 @@ def validate_settings(self, settings: SettingsBase, plugin: PluginBase):
2627
2728 def get_example_args (self ) -> List [str ]:
2829 return ["--cluster-generic-submit-cmd" , "qsub" ]
30+
31+
32+ def test_format_cli_arg_single_quote ():
33+ fmt = format_cli_arg ("--default-resources" , {"slurm_extra" : "'--gres=gpu:1'" })
34+ assert fmt == "--default-resources \" slurm_extra='--gres=gpu:1'\" "
35+
36+
37+ def test_format_cli_arg_double_quote ():
38+ fmt = format_cli_arg ("--default-resources" , {"slurm_extra" : '"--gres=gpu:1"' })
39+ assert fmt == "--default-resources 'slurm_extra=\" --gres=gpu:1\" '"
40+
41+
42+ def test_format_cli_arg_int ():
43+ fmt = format_cli_arg ("--default-resources" , {"mem_mb" : 200 })
44+ assert fmt == "--default-resources 'mem_mb=200'"
45+
46+
47+ def test_format_cli_arg_expr ():
48+ fmt = format_cli_arg (
49+ "--default-resources" , {"mem_mb" : "min(2 * input.size_mb, 2000)" }
50+ )
51+ assert fmt == "--default-resources 'mem_mb=min(2 * input.size_mb, 2000)'"
52+
53+
54+ def test_format_cli_arg_list ():
55+ fmt = format_cli_arg ("--config" , ["foo={'bar': 1}" ])
56+ assert fmt == "--config \" foo={'bar': 1}\" "
0 commit comments