summaryrefslogtreecommitdiff
path: root/0014-import_srpm-allow-pre-generated-srpms.patch
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-25 07:01:32 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-25 07:01:32 +0000
commit42c179873afdc4ea9634b0e0fbaf391298880998 (patch)
treea22a53603d2462b63a0570fdca5a2a8dc19a9596 /0014-import_srpm-allow-pre-generated-srpms.patch
parentfd314ffd8a10deca32e1dc6e12b9fb516a66489d (diff)
automatic import of rpkg
Diffstat (limited to '0014-import_srpm-allow-pre-generated-srpms.patch')
-rw-r--r--0014-import_srpm-allow-pre-generated-srpms.patch105
1 files changed, 105 insertions, 0 deletions
diff --git a/0014-import_srpm-allow-pre-generated-srpms.patch b/0014-import_srpm-allow-pre-generated-srpms.patch
new file mode 100644
index 0000000..f596265
--- /dev/null
+++ b/0014-import_srpm-allow-pre-generated-srpms.patch
@@ -0,0 +1,105 @@
+From d87cb37fa2fea2ed535b9085a1f4c607083e1c2e Mon Sep 17 00:00:00 2001
+From: Ondrej Nosek <onosek@redhat.com>
+Date: Tue, 4 Apr 2023 01:40:23 +0200
+Subject: [PATCH 1/6] import_srpm: allow pre-generated srpms
+
+When active, do not care specfile in the srpm is processed by
+rpmautospec. Can be activated only directly via pyrpkg 'Commands'
+object.
+
+Relates: https://github.com/fedora-copr/copr/issues/2317
+Fixes: #655
+RHELCMP-11085
+
+Signed-off-by: Ondrej Nosek <onosek@redhat.com>
+---
+ pyrpkg/__init__.py | 6 +++++-
+ tests/test_cli.py | 41 +++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 46 insertions(+), 1 deletion(-)
+
+diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py
+index 9996402..ecb99c9 100644
+--- a/pyrpkg/__init__.py
++++ b/pyrpkg/__init__.py
+@@ -110,7 +110,7 @@ class Commands(object):
+ build_client, user=None,
+ dist=None, target=None, quiet=False,
+ distgit_namespaced=False, realms=None, lookaside_namespaced=False,
+- git_excludes=None, results_dir='root'):
++ git_excludes=None, results_dir='root', allow_pre_generated_srpm=False):
+ """Init the object and some configuration details."""
+
+ # Path to operate on, most often pwd
+@@ -239,6 +239,9 @@ class Commands(object):
+ # Layout setup
+ self.layout = layout.build(self.path,
+ 'resultsdir' if self.results_dir == 'subdir' else None)
++ # A Configuration value used in 'import_srpm' command (comes from the Copr team)
++ # If pre-generated srpms are allowed, don't care specfile is processed by rpmautospec
++ self.allow_pre_generated_srpm = allow_pre_generated_srpm
+
+ # Define properties here
+ # Properties allow us to "lazy load" various attributes, which also means
+@@ -1471,6 +1474,7 @@ class Commands(object):
+ # the dist-git repo without any specfiles - right after initialization) we are
+ # not able determine which the main specfile is.
+ if file.endswith('.spec') and not file.startswith('.') \
++ and not self.allow_pre_generated_srpm \
+ and spec_file_processed_by_rpmautospec(file, target_dir):
+ raise rpkgError('SRPM was processed by rpmautospec '
+ '(specfile "{}" was analyzed)'.format(file))
+diff --git a/tests/test_cli.py b/tests/test_cli.py
+index 868ad1f..02620ef 100644
+--- a/tests/test_cli.py
++++ b/tests/test_cli.py
+@@ -1784,6 +1784,47 @@ class TestImportSrpm(LookasideCacheMock, CliTestCase):
+ self.assertFilesExist(['package.rpmlintrc'], search_dir=self.chaos_repo)
+ self.assertFilesNotExist(['the_file_is_not_in_reserved.yaml'], search_dir=self.chaos_repo)
+
++ @patch('pyrpkg.spec_file_processed_by_rpmautospec')
++ def test_import_srpm_not_processed_by_rpmautospec(self, rpmautospec_processed):
++ cli_cmd = ['rpkg', '--path', self.chaos_repo, '--name', 'docpkg',
++ 'import', '--skip-diffs', self.srpm_file]
++
++ rpmautospec_processed.return_value = False
++ with patch('sys.argv', new=cli_cmd):
++ cli = self.new_cli()
++ with patch('pyrpkg.lookaside.CGILookasideCache.upload', self.lookasidecache_upload):
++ cli.import_srpm() # no exception should be raised
++ rpmautospec_processed.assert_called_once()
++
++ @patch('pyrpkg.spec_file_processed_by_rpmautospec')
++ def test_import_srpm_processed_by_rpmautospec(self, rpmautospec_processed):
++ cli_cmd = ['rpkg', '--path', self.chaos_repo, '--name', 'docpkg',
++ 'import', '--skip-diffs', self.srpm_file]
++
++ rpmautospec_processed.return_value = True
++ with patch('sys.argv', new=cli_cmd):
++ cli = self.new_cli()
++ with patch('pyrpkg.lookaside.CGILookasideCache.upload', self.lookasidecache_upload):
++ six.assertRaisesRegex(
++ self,
++ rpkgError,
++ 'SRPM was processed by rpmautospec',
++ cli.import_srpm)
++ rpmautospec_processed.assert_called_once()
++
++ @patch('pyrpkg.spec_file_processed_by_rpmautospec')
++ def test_import_srpm_processed_by_rpmautospec_allowed(self, rpmautospec_processed):
++ cli_cmd = ['rpkg', '--path', self.chaos_repo, '--name', 'docpkg',
++ 'import', '--skip-diffs', self.srpm_file]
++
++ rpmautospec_processed.return_value = True
++ with patch('sys.argv', new=cli_cmd):
++ cli = self.new_cli()
++ cli.cmd.allow_pre_generated_srpm = True
++ with patch('pyrpkg.lookaside.CGILookasideCache.upload', self.lookasidecache_upload):
++ cli.import_srpm() # no exception should be raised
++ rpmautospec_processed.assert_not_called()
++
+
+ class TestMockbuild(CliTestCase):
+ """Test mockbuild command"""
+--
+2.39.2
+