Support per-step clean command. #384

Merged
merged 1 commit into from Mar 22, 2016

Conversation

Projects
None yet
4 participants
Member

kyrofa commented Mar 21, 2016

This PR makes progress on LP: #1537786 by adding a --step argument to the clean command, cleaning reverse dependencies, and implementing per-step clean rules. All per-step clean rules are placeholders to be implemented in subsequent PRs.

- def mark_done(self, step):
+ def mark_done(self, step, state=None):
+ if not state:
+ state = {}
@sergiusens

sergiusens Mar 21, 2016

Collaborator

Goodie

snapcraft/pluginhandler.py
@@ -216,6 +228,11 @@ def stage(self, force=False):
self.mark_done('stage')
+ def clean_stage(self):
+ raise NotImplementedError(
+ 'Cleaning up step "stage" for part "{}" is not yet '
@sergiusens

sergiusens Mar 21, 2016

Collaborator

Change to part {!r} is not yet '

snapcraft/pluginhandler.py
@@ -228,13 +245,41 @@ def strip(self, force=False):
self.mark_done('strip')
+ def clean_strip(self):
+ raise NotImplementedError(
+ 'Cleaning up step "strip" for part "{}" is not yet '
@sergiusens

sergiusens Mar 21, 2016

Collaborator

ditto about {!r} instead of "{}"

snapcraft/pluginhandler.py
+ def clean(self, step=None):
+ if step and step not in common.COMMAND_ORDER:
+ raise RuntimeError(
+ '"{}" is not a valid step for part "{}"'.format(
@sergiusens

sergiusens Mar 21, 2016

Collaborator

ditto about {!r} instead of "{}"

Coverage Status

Coverage decreased (-0.003%) to 95.434% when pulling 7852bef on kyrofa:feature/1537786/clean_command_per_step into c56bea0 on ubuntu-core:feature/1537786/per_step_cleaning.

+ self.manager_mock.assert_has_calls([
+ call.clean_strip({}),
+ ])
+
@elopio

elopio Mar 22, 2016

Member

cool tests!

@@ -227,6 +227,25 @@ def part_prereqs(self, part_name):
"""Returns a set with all of part_names' prerequisites."""
return set(self.after_requests.get(part_name, []))
+ def part_dependents(self, part_name):
@elopio

elopio Mar 22, 2016

Member

I think this should have a small test.

@kyrofa

kyrofa Mar 22, 2016

Member

Yeah, part_prereqs as well. Added them both.

snapcraft/commands/clean.py
+def _reverse_dependency_tree(config, part_name):
+ dependents = config.part_dependents(part_name)
+ for dependent in dependents.copy():
+ dependents |= _reverse_dependency_tree(config, dependent)
@elopio

elopio Mar 22, 2016

Member

a comment that this is never circular because the validation of the yaml forbids it will be handy for future developers looking at this code.

Member

elopio commented Mar 22, 2016

👍 I'm eager to look at the rest.

Support per-step clean command.
This adds a --step argument to the clean command, cleans reverse
dependencies, and implements per-step clean rules. All per-step
clean rules are placeholders to be implemented in subsequent
commits.

LP: #1537786

Signed-off-by: Kyle Fazzari <kyle@canonical.com>

Coverage Status

Coverage increased (+0.003%) to 95.44% when pulling c966a2d on kyrofa:feature/1537786/clean_command_per_step into c56bea0 on ubuntu-core:feature/1537786/per_step_cleaning.

plugin_fileset = self.code.snap_fileset()
- fileset = getattr(self.code.options, stage, ['*']) or ['*']
+ fileset = getattr(self.code.options, step, ['*']) or ['*']
@sergiusens

sergiusens Mar 22, 2016

Collaborator

thanks for correcting this btw

@kyrofa

kyrofa Mar 22, 2016

Member

Yeah it was killing me. I'll fix notify_stage in here somewhere as well.

Collaborator

sergiusens commented Mar 22, 2016

👍

kyrofa added a commit that referenced this pull request Mar 22, 2016

Merge pull request #384 from kyrofa/feature/1537786/clean_command_per…
…_step

Support per-step clean command.

@kyrofa kyrofa merged commit 4f8e63a into snapcore:feature/1537786/per_step_cleaning Mar 22, 2016

2 of 4 checks passed

autopkgtest No test results found.
Details
Examples tests Started
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details
coverage/coveralls Coverage increased (+0.003%) to 95.44%
Details

@kyrofa kyrofa deleted the kyrofa:feature/1537786/clean_command_per_step branch Mar 22, 2016

smoser pushed a commit to smoser/snapcraft that referenced this pull request Sep 14, 2016

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment