diff --git a/python/core/__init__.py b/python/core/__init__.py
index f0ff94e110c..1f9468b9db8 100644
--- a/python/core/__init__.py
+++ b/python/core/__init__.py
@@ -112,7 +112,7 @@ def register_function(function, arg_count, group, usesgeometry=False,
helptemplate = string.Template("""
$name function
$doc""")
name = kwargs.get('name', function.__name__)
- helptext = function.__doc__ or ''
+ helptext = kwargs.get('helpText') or function.__doc__ or ''
helptext = helptext.strip()
expandargs = False
diff --git a/tests/src/python/test_qgsexpression.py b/tests/src/python/test_qgsexpression.py
index 67efbd99762..af318eef797 100644
--- a/tests/src/python/test_qgsexpression.py
+++ b/tests/src/python/test_qgsexpression.py
@@ -43,6 +43,18 @@ class TestQgsExpressionCustomFunctions(unittest.TestCase):
def sqrt(values, feature, parent):
pass
+ @qgsfunction(1, 'testing', register=False)
+ def help_with_docstring(values, feature, parent):
+ """The help comes from the python docstring."""
+ pass
+
+ help_text = 'The help comes from a variable.'
+
+ @qgsfunction(1, 'testing', register=False, helpText=help_text)
+ def help_with_variable(values, feature, parent):
+ """This docstring is not used for the help."""
+ pass
+
@qgsfunction(1, 'testing', register=False, usesgeometry=True)
def geomtest(values, feature, parent):
pass
@@ -68,6 +80,17 @@ class TestQgsExpressionCustomFunctions(unittest.TestCase):
args = function.params()
self.assertEqual(args, 3)
+ def testHelp(self):
+ QgsExpression.registerFunction(self.help_with_variable)
+ html = ('help_with_variable function
'
+ 'The help comes from a variable.')
+ self.assertEqual(self.help_with_variable.helpText(), html)
+
+ QgsExpression.registerFunction(self.help_with_docstring)
+ html = ('help_with_docstring function
'
+ 'The help comes from the python docstring.')
+ self.assertEqual(self.help_with_docstring.helpText(), html)
+
def testAutoArgsAreExpanded(self):
function = self.expandargs
args = function.params()