Skip to content

Commit

Permalink
Explictly convert user-supplied "options" option to a dict
Browse files Browse the repository at this point in the history
  • Loading branch information
boakley committed Apr 21, 2022
1 parent d5f9d1f commit 59eb16b
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 2 deletions.
12 changes: 10 additions & 2 deletions cumulusci/tasks/robotframework/robotframework.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,11 @@
TaskOptionsError,
)
from cumulusci.core.tasks import BaseTask
from cumulusci.core.utils import process_bool_arg, process_list_arg
from cumulusci.core.utils import (
process_bool_arg,
process_list_arg,
process_list_of_pairs_dict_arg,
)
from cumulusci.robotframework.utils import set_pdb_trace
from cumulusci.tasks.robotframework.debugger import DebugListener
from cumulusci.tasks.salesforce import BaseSalesforceTask
Expand Down Expand Up @@ -113,7 +117,11 @@ def _init_options(self, kwargs):
self.options["vars"] = []

# Initialize options as a dict
if "options" not in self.options:
if "options" in self.options:
self.options["options"] = process_list_of_pairs_dict_arg(
self.options["options"]
)
else:
self.options["options"] = {}

# processes needs to be an integer.
Expand Down
10 changes: 10 additions & 0 deletions cumulusci/tasks/robotframework/tests/test_robotframework.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,16 @@ def test_list_args(self):
for option in ("test", "include", "exclude", "vars", "suites", "skip"):
assert isinstance(task.options[option], list)

def test_options_converted_to_dict(self):
task = create_task(
Robot,
{
"suites": "test", # required, or the task will raise an exception
"options": "outputdir:/tmp/example,loglevel:DEBUG",
},
)
assert isinstance(task.options["options"], dict)

def test_process_arg_requires_int(self):
"""Verify we throw a useful error for non-int "processes" option"""

Expand Down

0 comments on commit 59eb16b

Please sign in to comment.