Give an explicit error message when unsupported view type used
When specifying a view type that isn't supported by any modules (such as "list-view" instead of "list"), this ensures that the user is guided towards something correct. This changes the error message in this case from: AttributeError: 'NoneType' object has no attribute 'name' to: jenkins_jobs.errors.JenkinsJobsException: Unrecognized view type: list-view (supported types are: list, pipeline) Change-Id: I0ee800db1c9c8aeecffcf11f1e86c03ba0590da8
This commit is contained in:
parent
41c54bba00
commit
e6d6c276d1
@ -123,6 +123,12 @@ class XmlViewGenerator(object):
|
||||
self._gen_xml(xml, data)
|
||||
view = XmlJob(xml, data['name'])
|
||||
return view
|
||||
names = [
|
||||
ep.name for ep in pkg_resources.iter_entry_points(
|
||||
group='jenkins_jobs.views')]
|
||||
raise errors.JenkinsJobsException(
|
||||
'Unrecognized view type: {} (supported types are: {})'.format(
|
||||
kind, ', '.join(names)))
|
||||
|
||||
def _gen_xml(self, xml, data):
|
||||
for module in self.registry.modules:
|
||||
|
3
tests/xml_config/exceptions/invalid_view.yaml
Normal file
3
tests/xml_config/exceptions/invalid_view.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
- view:
|
||||
name: invalid-view-type
|
||||
view-type: invalid
|
@ -42,6 +42,22 @@ class TestXmlJobGeneratorExceptions(base.BaseTestCase):
|
||||
xml_generator.generateXML, job_data)
|
||||
self.assertIn("Unrecognized project type:", str(e))
|
||||
|
||||
def test_invalid_view(self):
|
||||
self.conf_filename = None
|
||||
config = self._get_config()
|
||||
|
||||
yp = parser.YamlParser(config)
|
||||
yp.parse(os.path.join(self.fixtures_path, "invalid_view.yaml"))
|
||||
|
||||
reg = registry.ModuleRegistry(config)
|
||||
_, view_data = yp.expandYaml(reg)
|
||||
|
||||
# Generate the XML tree
|
||||
xml_generator = xml_config.XmlViewGenerator(reg)
|
||||
e = self.assertRaises(errors.JenkinsJobsException,
|
||||
xml_generator.generateXML, view_data)
|
||||
self.assertIn("Unrecognized view type:", str(e))
|
||||
|
||||
def test_incorrect_template_params(self):
|
||||
self.conf_filename = None
|
||||
config = self._get_config()
|
||||
|
Loading…
Reference in New Issue
Block a user