From 0fba3ea31b0635a1490c5da31fb0a6aac56c28b4 Mon Sep 17 00:00:00 2001 From: Ondrej Nosek Date: Mar 13 2020 11:44:18 +0000 Subject: More transparent check of retired package Code for that checking was moved into separate method. Signed-off-by: Ondrej Nosek --- diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py index d7297f1..50f3302 100644 --- a/pyrpkg/__init__.py +++ b/pyrpkg/__init__.py @@ -857,7 +857,8 @@ class Commands(object): def load_spec(self): """This sets the spec attribute""" - deadpackage = False + if self.is_retired(): + raise rpkgError('This package or module is retired. The action has stopped.') # Get a list of files in the path we're looking at files = os.listdir(self.path) @@ -866,12 +867,7 @@ class Commands(object): if f.endswith('.spec') and not f.startswith('.'): self._spec = f return - if f == 'dead.package': - deadpackage = True - if deadpackage: - raise rpkgError('No spec file found. This package is retired') - else: - raise rpkgError('No spec file found.') + raise rpkgError('No spec file found.') @property def target(self): @@ -3223,6 +3219,19 @@ class Commands(object): return self.kojisession.createSideTag(base_tag) + def is_retired(self): + """ + Checks whether package or module is already retired. + The state is indicated by present of files 'dead.package' + or 'dead.module'. + """ + marker = 'dead.package' + if os.path.isfile(os.path.join(self.path, marker)): + return marker + marker = 'dead.module' + if os.path.isfile(os.path.join(self.path, marker)): + return marker + def retire(self, message): """Delete all tracked files and commit a new dead.package file for rpms or dead.module file for modules. diff --git a/pyrpkg/cli.py b/pyrpkg/cli.py index f0ba9d4..d13f815 100644 --- a/pyrpkg/cli.py +++ b/pyrpkg/cli.py @@ -2567,14 +2567,13 @@ class cliClient(object): def retire(self): # Skip if package/module is already retired... - if os.path.isfile(os.path.join(self.cmd.path, 'dead.package')): - self.log.warn('dead.package found, package probably already ' - 'retired - will not remove files from git or ' - 'overwrite existing dead.package file') - elif os.path.isfile(os.path.join(self.cmd.path, 'dead.module')): - self.log.warn('dead.module found, module probably already ' - 'retired - will not remove files from git or ' - 'overwrite existing dead.module file') + marker = self.cmd.is_retired() + # marker is file that indicates retirement + if marker: + self.log.warn('{0} found, package or module is already retired. ' + 'Will not remove files from git or overwrite ' + 'existing {0} file.'.format(marker)) + return 1 else: self.cmd.retire(self.args.reason) self.push() diff --git a/tests/test_retire.py b/tests/test_retire.py index 4bfe96e..4d36680 100644 --- a/tests/test_retire.py +++ b/tests/test_retire.py @@ -132,7 +132,7 @@ class TestPackageRetirement(RetireTestCase): client.log = mock.Mock() client.retire() args, kwargs = client.log.warn.call_args - self.assertIn('dead.package found, package probably already retired', + self.assertIn('dead.package found, package or module is already retired', args[0]) @@ -168,5 +168,5 @@ class TestModuleRetirement(RetireTestCase): client.log = mock.Mock() client.retire() args, kwargs = client.log.warn.call_args - self.assertIn('dead.module found, module probably already retired', + self.assertIn('dead.module found, package or module is already retired', args[0])