# HG changeset patch # User Alain Leufroy # Date 1615061493 -3600 # Sat Mar 06 21:11:33 2021 +0100 # Node ID 2af5c44319f69f3f698483b6455261d43fd0f1f0 # Parent a323fcaec0f5b487d10c38a63fdf344fa30a10db edit: fix, propagate changes to descendants diff --git a/overlayctl b/overlayctl --- a/overlayctl +++ b/overlayctl @@ -674,8 +674,9 @@ return layer.lowers[:] = lowers layer.dump() + for layer in _iter_descendants(layer): + layer.dump() systemctl.daemon_reload() - # XXX propagate to descendants logger.debug("Systemd \"%s\" restarted", layer.unitname) logger.info("\"%s\" updated", layer.name) @@ -768,7 +769,6 @@ return with _stop_branch(layer, interrupt=interrupt, preserve=preserve, restart=interrupt): - # Move overlay dirs. layer.upperdir.rename(_new.upperdir) layer.workdir.rename(_new.workdir) @@ -776,9 +776,8 @@ layer.delete() layer.name = newname + layer.dump() - - # Update existing layers that depends on the moved one. for layer in _iter_descendants(layer): layer.dump() diff --git a/test_overlayctl.py b/test_overlayctl.py --- a/test_overlayctl.py +++ b/test_overlayctl.py @@ -389,6 +389,7 @@ class TestEdit(BaseTest): + """Test for `edit` command.""" def test_prepending_lowers(self): # User can augment lowers with the --prepend option. @@ -446,6 +447,22 @@ self.get_mount_dir('base1'), ]) + def test_modifications_propagated_to_descendants(self): + # Modifications are propagated to descendants. + self.get_mount_dir('base').mkdir() + overlayctl.creater('lower1', ['base']) + overlayctl.creater('lower2', ['base']) + overlayctl.creater('layer', ['lower2']) + self.systemctl.reset_mock() + self.systemctl.status.return_value = {'Active': 'inactive'} + overlayctl.editer('lower2', prepended=['lower1']) + self.assert_daemon_reload_called() + self.check_mount_unit('layer', [ + self.get_upper_dir('lower2'), + self.get_upper_dir('lower1'), + self.get_mount_dir('base'), + ]) + def test_with_editor(self): # The user's editor is started with no options. # In the editor, user can move, add and remove lower freely.