From d86020358aa23aaaa06559ffc964677c2ed0191b Mon Sep 17 00:00:00 2001 From: Lenka Segura Date: Dec 20 2023 11:52:48 +0000 Subject: Add a function to check if package is retired Signed-off-by: Lenka Segura --- diff --git a/pagure/lib/git.py b/pagure/lib/git.py index 293d172..fa56c81 100644 --- a/pagure/lib/git.py +++ b/pagure/lib/git.py @@ -1436,6 +1436,12 @@ def is_forced_push(oldrev, newrev, abspath): return len(out) > 0 +def is_retired_package(branch, abspath): + """Returns if the package is retired on the branch.""" + cmd = ["ls-tree", branch, "--name-only", "--", "dead.package"] + return pagure.lib.git.read_git_output(cmd, abspath) != "" + + def get_base_revision(torev, fromrev, abspath): """Return the base revision between HEAD and BASE. This is useful in case of force-push. diff --git a/tests/test_pagure_lib_git.py b/tests/test_pagure_lib_git.py index 57eace9..1d51c62 100644 --- a/tests/test_pagure_lib_git.py +++ b/tests/test_pagure_lib_git.py @@ -3609,6 +3609,25 @@ index 0000000..60f7480 orig.references["refs/pull/6/head"].peel().hex, newesthex ) + def test_is_retired_package_no(self): + projects = tests.create_projects_git( + os.path.join(self.path, "repos"), bare=True + ) + tests.add_content_git_repo(projects[0]) + self.assertFalse( + pagure.lib.git.is_retired_package("master", projects[0]) + ) + + def test_is_retired_package_yes(self): + projects = tests.create_projects_git( + os.path.join(self.path, "repos"), bare=True + ) + tests.add_content_git_repo(projects[0]) + tests.add_readme_git_repo(projects[0], readme_name="dead.package") + self.assertTrue( + pagure.lib.git.is_retired_package("master", projects[0]) + ) + class PagureLibGitCommitToPatchtests(tests.Modeltests): """Tests for pagure.lib.git"""