diff --git a/gooey/python_bindings/config_generator.py b/gooey/python_bindings/config_generator.py index 9bb96a6..2d007ca 100644 --- a/gooey/python_bindings/config_generator.py +++ b/gooey/python_bindings/config_generator.py @@ -103,7 +103,7 @@ def create_from_parser(parser, source_path, **kwargs): 'over Gooey\'s text formatting') - build_spec['program_description'] = parser.description or build_spec['program_description'] + build_spec['program_description'] = build_spec['program_description'] or parser.description or '' layout_data = (argparse_to_json.convert(parser, **build_spec) if build_spec['show_advanced'] diff --git a/gooey/tests/test_config_generator.py b/gooey/tests/test_config_generator.py new file mode 100644 index 0000000..1964b71 --- /dev/null +++ b/gooey/tests/test_config_generator.py @@ -0,0 +1,31 @@ +import unittest +from argparse import ArgumentParser + +from python_bindings.config_generator import create_from_parser + + +class TextConfigGenerator(unittest.TestCase): + + def test_program_description(self): + """ + Should use `program_description` if supplied, otherwise + fallback to the description on the `parser` + """ + + parser = ArgumentParser(description="Parser Description") + # when supplied explicitly, we assign it as the description + buildspec = create_from_parser(parser, "", program_description='Custom Description') + self.assertEqual(buildspec['program_description'], 'Custom Description') + + # when no explicit program_definition supplied, we fallback to the parser's description + buildspec = create_from_parser(parser, "") + self.assertEqual(buildspec['program_description'], 'Parser Description') + + # if no description is provided anywhere, we just set it to be an empty string. + blank_parser = ArgumentParser() + buildspec = create_from_parser(blank_parser, "") + self.assertEqual(buildspec['program_description'], '') + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file