diff --git a/python/plugins/processing/core/parameters.py b/python/plugins/processing/core/parameters.py index b379cd8359c..03b458b6333 100644 --- a/python/plugins/processing/core/parameters.py +++ b/python/plugins/processing/core/parameters.py @@ -1191,7 +1191,7 @@ class ParameterString(Parameter): if self.optional: param_type += 'optional ' param_type += 'string ' - return '##' + self.name + '=' + param_type + str(self.default) + return '##' + self.name + '=' + param_type + repr(self.default) @classmethod def fromScriptCode(self, line): @@ -1201,6 +1201,8 @@ class ParameterString(Parameter): default = definition.strip()[len('string') + 1:] or None if default == 'None': default = None + elif default.startswith('"') or default.startswith('\''): + default = eval(default) if default: return ParameterString(name, descName, default, optional=isOptional) else: diff --git a/python/plugins/processing/tests/ParametersTest.py b/python/plugins/processing/tests/ParametersTest.py index cdcb4b79a8c..08ae80d7f74 100644 --- a/python/plugins/processing/tests/ParametersTest.py +++ b/python/plugins/processing/tests/ParametersTest.py @@ -593,12 +593,29 @@ class ParameterStringTest(unittest.TestCase): code = parameter.getAsScriptCode() result = getParameterFromString(code) self.assertIsInstance(result, ParameterString) + self.assertEqual(result.default, parameter.default) + parameter.default = None parameter.optional = True code = parameter.getAsScriptCode() result = getParameterFromString(code) self.assertIsInstance(result, ParameterString) self.assertTrue(result.optional) + self.assertEqual(result.default, parameter.default) + + parameter.default = 'None' + code = parameter.getAsScriptCode() + result = getParameterFromString(code) + self.assertIsInstance(result, ParameterString) + self.assertTrue(result.optional) + self.assertEqual(result.default, parameter.default) + + parameter.default = 'It\'s Mario' + code = parameter.getAsScriptCode() + result = getParameterFromString(code) + self.assertIsInstance(result, ParameterString) + self.assertTrue(result.optional) + self.assertEqual(result.default, parameter.default) class ParameterExpressionTest(unittest.TestCase):