fail at startup with no operating-system element
Raise an error if there is no element with “operating-system” in the element-provides file. Change-Id: I2242537abc4c610252984c32c286bc6eb25de672
This commit is contained in:
parent
b46ece4de9
commit
1011adf370
@ -43,7 +43,7 @@ def _get_set(element, fname, elements_dir=None):
|
||||
|
||||
sys.stderr.write("ERROR: Element '%s' not found in '%s'\n" %
|
||||
(element, elements_dir))
|
||||
exit(-1)
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
def provides(element, elements_dir=None):
|
||||
@ -98,12 +98,17 @@ def expand_dependencies(user_elements, elements_dir=None):
|
||||
check_queue.extend(deps - (final_elements | provided))
|
||||
final_elements.update(deps)
|
||||
|
||||
if "operating-system" not in provided:
|
||||
sys.stderr.write(
|
||||
"ERROR: Please include an operating system element.\n")
|
||||
sys.exit(-1)
|
||||
|
||||
conflicts = set(user_elements) & provided
|
||||
if conflicts:
|
||||
sys.stderr.write("ERROR: Following elements were explicitly required "
|
||||
"but are provided by other included elements: %s\n" %
|
||||
", ".join(conflicts))
|
||||
exit(-1)
|
||||
sys.exit(-1)
|
||||
return final_elements - provided
|
||||
|
||||
|
||||
|
@ -40,7 +40,10 @@ class TestElementDeps(testtools.TestCase):
|
||||
super(TestElementDeps, self).setUp()
|
||||
self.element_dir = self.useFixture(fixtures.TempDir()).path
|
||||
_populate_element(self.element_dir, 'requires-foo', ['foo'])
|
||||
_populate_element(self.element_dir, 'foo')
|
||||
_populate_element(self.element_dir,
|
||||
'foo',
|
||||
[],
|
||||
['operating-system'])
|
||||
_populate_element(self.element_dir,
|
||||
'requires-requires-foo',
|
||||
['requires-foo'])
|
||||
@ -49,15 +52,21 @@ class TestElementDeps(testtools.TestCase):
|
||||
'provides_virtual',
|
||||
[],
|
||||
['virtual'])
|
||||
_populate_element(self.element_dir, 'requires_virtual', ['virtual'])
|
||||
_populate_element(self.element_dir,
|
||||
'requires_virtual',
|
||||
['virtual'],
|
||||
['operating-system'])
|
||||
_populate_element(self.element_dir, 'virtual', ['extra_dependency'])
|
||||
_populate_element(self.element_dir, 'extra_dependency', [])
|
||||
_populate_element(self.element_dir, 'circular1', ['circular2'])
|
||||
_populate_element(self.element_dir,
|
||||
'circular1',
|
||||
['circular2'],
|
||||
['operating-system'])
|
||||
_populate_element(self.element_dir, 'circular2', ['circular1'])
|
||||
_populate_element(self.element_dir,
|
||||
'provides_new_virtual',
|
||||
[],
|
||||
['new_virtual'])
|
||||
['new_virtual', 'operating-system'])
|
||||
_populate_element(self.element_dir,
|
||||
'requires_new_virtual',
|
||||
['new_virtual'])
|
||||
@ -87,8 +96,8 @@ class TestElementDeps(testtools.TestCase):
|
||||
|
||||
def test_self(self):
|
||||
result = element_dependencies.expand_dependencies(
|
||||
['self'], elements_dir=self.element_dir)
|
||||
self.assertEqual(set(['self']), result)
|
||||
['self', 'foo'], elements_dir=self.element_dir)
|
||||
self.assertEqual(set(['self', 'foo']), result)
|
||||
|
||||
def test_circular(self):
|
||||
result = element_dependencies.expand_dependencies(
|
||||
@ -114,6 +123,18 @@ class TestElementDeps(testtools.TestCase):
|
||||
self.assertEqual(set(['requires_new_virtual', 'provides_new_virtual']),
|
||||
result)
|
||||
|
||||
def test_no_os_element(self):
|
||||
self.assertRaises(SystemExit,
|
||||
element_dependencies.expand_dependencies,
|
||||
['provides_virtual'],
|
||||
elements_dir=self.element_dir)
|
||||
|
||||
def test_duplicated_os_passed_as_element(self):
|
||||
self.assertRaises(SystemExit,
|
||||
element_dependencies.expand_dependencies,
|
||||
['circular1', 'operating-system'],
|
||||
elements_dir=self.element_dir)
|
||||
|
||||
|
||||
class TestElements(testtools.TestCase):
|
||||
def test_depends_on_env(self):
|
||||
|
@ -252,7 +252,7 @@ function create_base () {
|
||||
if [ -z "$(ls $TMP_MOUNT_PATH | grep -v '^lost+found\|tmp$')" ] ; then
|
||||
# No root element copied in. Note the test above allows
|
||||
# root.d elements to put things in /tmp
|
||||
echo "Please include at least one distribution root element."
|
||||
echo "Failed to deploy the root element."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user