launchpad-reviewers team mailing list archive
-
launchpad-reviewers team
-
Mailing list archive
-
Message #19857
[Merge] lp:~cjwatson/launchpad/git-recipe-delete into lp:launchpad
Colin Watson has proposed merging lp:~cjwatson/launchpad/git-recipe-delete into lp:launchpad with lp:~cjwatson/launchpad/git-recipe-find as a prerequisite.
Commit message:
Handle recipes when deleting Git repositories.
Requested reviews:
Launchpad code reviewers (launchpad-reviewers)
Related bugs:
Bug #1453022 in Launchpad itself: "Please support daily builds via git"
https://bugs.launchpad.net/launchpad/+bug/1453022
For more details, see:
https://code.launchpad.net/~cjwatson/launchpad/git-recipe-delete/+merge/282256
Handle recipes when deleting Git repositories.
--
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~cjwatson/launchpad/git-recipe-delete into lp:launchpad.
=== modified file 'lib/lp/code/model/gitrepository.py'
--- lib/lp/code/model/gitrepository.py 2016-01-12 04:15:40 +0000
+++ lib/lp/code/model/gitrepository.py 2016-01-12 04:15:40 +0000
@@ -1047,6 +1047,11 @@
prerequisite_git_repository=self):
alteration_operations.append(
ClearPrerequisiteRepository(merge_proposal))
+ deletion_operations.extend(
+ DeletionCallable(
+ recipe, msg("This recipe uses this repository."),
+ recipe.destroySelf)
+ for recipe in self.recipes)
if not getUtility(ISnapSet).findByGitRepository(self).is_empty():
alteration_operations.append(DeletionCallable(
None, msg("Some snap packages build from this repository."),
=== modified file 'lib/lp/code/model/tests/test_gitrepository.py'
--- lib/lp/code/model/tests/test_gitrepository.py 2015-12-10 00:05:41 +0000
+++ lib/lp/code/model/tests/test_gitrepository.py 2016-01-12 04:15:40 +0000
@@ -452,6 +452,19 @@
[ReclaimGitRepositorySpaceJob(job).repository_path
for job in jobs])
+ def test_destroySelf_with_SourcePackageRecipe(self):
+ # If repository is a base_git_repository in a recipe, it is deleted.
+ recipe = self.factory.makeSourcePackageRecipe(
+ branches=self.factory.makeGitRefs(owner=self.user))
+ recipe.base_git_repository.destroySelf(break_references=True)
+
+ def test_destroySelf_with_SourcePackageRecipe_as_non_base(self):
+ # If repository is referred to by a recipe, it is deleted.
+ [ref1] = self.factory.makeGitRefs(owner=self.user)
+ [ref2] = self.factory.makeGitRefs(owner=self.user)
+ self.factory.makeSourcePackageRecipe(branches=[ref1, ref2])
+ ref2.repository.destroySelf(break_references=True)
+
def test_destroySelf_with_inline_comments_draft(self):
# Draft inline comments related to a deleted repository (source or
# target MP repository) also get removed.
@@ -683,6 +696,14 @@
self.assertRaises(
SQLObjectNotFound, BranchMergeProposal.get, merge_proposal_id)
+ def test_deletionRequirements_with_SourcePackageRecipe(self):
+ # Recipes are listed as deletion requirements.
+ recipe = self.factory.makeSourcePackageRecipe(
+ branches=self.factory.makeGitRefs())
+ self.assertEqual(
+ {recipe: ("delete", "This recipe uses this repository.")},
+ recipe.base_git_repository.getDeletionRequirements())
+
class TestGitRepositoryModifications(TestCaseWithFactory):
"""Tests for Git repository modifications."""
Follow ups