|
|
d35e811 |
From 87d4995b40fbcddac88fb21191eb2d5d1f248550 Mon Sep 17 00:00:00 2001
|
|
|
d35e811 |
From: Ondrej Nosek <onosek@redhat.com>
|
|
|
d35e811 |
Date: Tue, 11 Jul 2023 17:00:48 +0200
|
|
|
d35e811 |
Subject: [PATCH 2/3] Support for checking exploded sources before push
|
|
|
d35e811 |
|
|
|
d35e811 |
pre-push-check now includes test whether source files listed
|
|
|
d35e811 |
in a specfile come from additional sources.
|
|
|
d35e811 |
This functionality is relevant only for some x-pkg tools, others
|
|
|
d35e811 |
should not be affected.
|
|
|
d35e811 |
|
|
|
d35e811 |
JIRA: RHELCMP-11777
|
|
|
d35e811 |
|
|
|
d35e811 |
Signed-off-by: Ondrej Nosek <onosek@redhat.com>
|
|
|
d35e811 |
---
|
|
|
d35e811 |
pyrpkg/__init__.py | 12 ++++++++++--
|
|
|
d35e811 |
tests/commands/test_pre_push_check.py | 4 ++--
|
|
|
d35e811 |
2 files changed, 12 insertions(+), 4 deletions(-)
|
|
|
d35e811 |
|
|
|
d35e811 |
diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py
|
|
|
d35e811 |
index b45ad8f..bc669b9 100644
|
|
|
d35e811 |
--- a/pyrpkg/__init__.py
|
|
|
d35e811 |
+++ b/pyrpkg/__init__.py
|
|
|
d35e811 |
@@ -4468,6 +4468,10 @@ class Commands(object):
|
|
|
d35e811 |
|
|
|
d35e811 |
return self._repo_name, version, release
|
|
|
d35e811 |
|
|
|
d35e811 |
+ # Works as virtual method. Other x-pkg tools can add their specific sources
|
|
|
d35e811 |
+ def additional_source_entries(self):
|
|
|
d35e811 |
+ return {}
|
|
|
d35e811 |
+
|
|
|
d35e811 |
def pre_push_check(self, ref):
|
|
|
d35e811 |
show_hint = ('Hint: this check (.git/hooks/pre-push script) can be bypassed by adding '
|
|
|
d35e811 |
'the argument \'--no-verify\' argument to the push command.')
|
|
|
d35e811 |
@@ -4561,13 +4565,17 @@ class Commands(object):
|
|
|
d35e811 |
# list of all files (their relative paths) in the commit
|
|
|
d35e811 |
repo_entries = set(item.path for item in commit.tree.traverse() if item.type != "tree")
|
|
|
d35e811 |
|
|
|
d35e811 |
+ # other x-pkg tools can add their specific sources
|
|
|
d35e811 |
+ additional_entries = set(self.additional_source_entries())
|
|
|
d35e811 |
+
|
|
|
d35e811 |
# check whether every source file is either listed in the 'sources' file or tracked in git
|
|
|
d35e811 |
for source_file in source_files:
|
|
|
d35e811 |
listed = source_file in sourcesf_entries
|
|
|
d35e811 |
tracked = source_file in repo_entries
|
|
|
d35e811 |
- if not (listed or tracked):
|
|
|
d35e811 |
+ listed_additional = source_file in additional_entries
|
|
|
d35e811 |
+ if not (listed or tracked or listed_additional):
|
|
|
d35e811 |
self.log.error('Source file \'{0}\' was neither listed in the \'sources\' file '
|
|
|
d35e811 |
- 'nor tracked in git. '
|
|
|
d35e811 |
+ 'nor tracked in git nor listed in additional sources. '
|
|
|
d35e811 |
'Push operation was cancelled'.format(source_file))
|
|
|
d35e811 |
self.log.warning(show_hint)
|
|
|
d35e811 |
sys.exit(4)
|
|
|
d35e811 |
diff --git a/tests/commands/test_pre_push_check.py b/tests/commands/test_pre_push_check.py
|
|
|
d35e811 |
index ee151c1..79165ec 100644
|
|
|
d35e811 |
--- a/tests/commands/test_pre_push_check.py
|
|
|
d35e811 |
+++ b/tests/commands/test_pre_push_check.py
|
|
|
d35e811 |
@@ -90,8 +90,8 @@ Patch3: d.patch
|
|
|
d35e811 |
|
|
|
d35e811 |
self.assertEqual(exc.exception.code, 4)
|
|
|
d35e811 |
log_error.assert_called_once_with("Source file 'b.patch' was neither listed in the "
|
|
|
d35e811 |
- "'sources' file nor tracked in git. Push operation "
|
|
|
d35e811 |
- "was cancelled")
|
|
|
d35e811 |
+ "'sources' file nor tracked in git nor listed "
|
|
|
d35e811 |
+ "in additional sources. Push operation was cancelled")
|
|
|
d35e811 |
|
|
|
d35e811 |
# Verify added files are committed but not pushed to origin
|
|
|
d35e811 |
local_repo = git.Repo(self.cloned_dir)
|
|
|
d35e811 |
--
|
|
|
d35e811 |
2.41.0
|
|
|
d35e811 |
|