comps-wrapper: Report unknown package types
When there is a typo in the comps file, instead of crashing with a non-descript KeyError we should raise a nice error with details about the problem. Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
This commit is contained in:
parent
118444a311
commit
8c237b78c2
@ -88,6 +88,11 @@ class CompsWrapper(object):
|
|||||||
|
|
||||||
packages_by_type = collections.defaultdict(list)
|
packages_by_type = collections.defaultdict(list)
|
||||||
for pkg in group.packages:
|
for pkg in group.packages:
|
||||||
|
if pkg.type == libcomps.PACKAGE_TYPE_UNKNOWN:
|
||||||
|
raise RuntimeError(
|
||||||
|
'Failed to process comps file. Package %s in group %s has unknown type'
|
||||||
|
% (pkg.name, group.id))
|
||||||
|
|
||||||
packages_by_type[TYPE_MAPPING[pkg.type]].append(pkg)
|
packages_by_type[TYPE_MAPPING[pkg.type]].append(pkg)
|
||||||
|
|
||||||
for type_name in TYPE_MAPPING.values():
|
for type_name in TYPE_MAPPING.values():
|
||||||
|
14
tests/fixtures/comps-typo.xml
vendored
Normal file
14
tests/fixtures/comps-typo.xml
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE comps PUBLIC "-//Red Hat, Inc.//DTD Comps info//EN" "comps.dtd">
|
||||||
|
<comps>
|
||||||
|
<group>
|
||||||
|
<id>core</id>
|
||||||
|
<name>Core</name>
|
||||||
|
<description>Smallest possible installation</description>
|
||||||
|
<default>true</default>
|
||||||
|
<uservisible>false</uservisible>
|
||||||
|
<packagelist>
|
||||||
|
<packagereq type="mndatory">dummy-bash</packagereq>
|
||||||
|
</packagelist>
|
||||||
|
</group>
|
||||||
|
</comps>
|
@ -19,6 +19,7 @@ COMPS_FILE = os.path.join(FIXTURE_DIR, 'comps.xml')
|
|||||||
COMPS_FORMATTED_FILE = os.path.join(FIXTURE_DIR, 'comps-formatted.xml')
|
COMPS_FORMATTED_FILE = os.path.join(FIXTURE_DIR, 'comps-formatted.xml')
|
||||||
COMPS_GROUP_FILE = os.path.join(FIXTURE_DIR, 'comps-group.xml')
|
COMPS_GROUP_FILE = os.path.join(FIXTURE_DIR, 'comps-group.xml')
|
||||||
COMPS_ENVIRONMENT_FILE = os.path.join(FIXTURE_DIR, 'comps-env.xml')
|
COMPS_ENVIRONMENT_FILE = os.path.join(FIXTURE_DIR, 'comps-env.xml')
|
||||||
|
COMPS_FILE_WITH_TYPO = os.path.join(FIXTURE_DIR, 'comps-typo.xml')
|
||||||
|
|
||||||
|
|
||||||
class CompsWrapperTest(unittest.TestCase):
|
class CompsWrapperTest(unittest.TestCase):
|
||||||
@ -77,3 +78,11 @@ class CompsWrapperTest(unittest.TestCase):
|
|||||||
]
|
]
|
||||||
comps.filter_environments(groups)
|
comps.filter_environments(groups)
|
||||||
self.assertEqual(groups, [{"name": "minimal", "display_order": 99, "groups": ["core"]}])
|
self.assertEqual(groups, [{"name": "minimal", "display_order": 99, "groups": ["core"]}])
|
||||||
|
|
||||||
|
def test_report_typo_in_package_type(self):
|
||||||
|
comps = CompsWrapper(COMPS_FILE_WITH_TYPO)
|
||||||
|
with self.assertRaises(RuntimeError) as ctx:
|
||||||
|
comps.write_comps(target_file=self.file.name)
|
||||||
|
self.assertIn(
|
||||||
|
'Package dummy-bash in group core has unknown type',
|
||||||
|
str(ctx.exception))
|
||||||
|
Loading…
Reference in New Issue
Block a user