Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion lib/rift/Controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -942,7 +942,8 @@ def action_gerrit(args, config, staff, modules):
names = filepath.split(os.path.sep)
if names[0] == config.get('packages_dir'):
pkg = Package(names[1], config, staff, modules)
if filepath == pkg.specfile and not patchedfile.is_deleted_file:
if (filepath == os.path.relpath(pkg.specfile) and
not patchedfile.is_deleted_file):
Spec(pkg.specfile, config=config).analyze(review, pkg.dir)

# Push review
Expand Down
78 changes: 77 additions & 1 deletion tests/Controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,12 @@
import atexit
from unittest.mock import patch, Mock
import subprocess
import textwrap
from io import StringIO

from unidiff import parse_unidiff
from TestUtils import (
make_temp_file, make_temp_dir, RiftTestCase, RiftProjectTestCase
make_temp_file, make_temp_dir, gen_rpm_spec, RiftTestCase, RiftProjectTestCase
)

from VM import GLOBAL_CACHE, VALID_IMAGE_URL, PROXY
Expand Down Expand Up @@ -983,6 +984,81 @@ def test_action_sync_missing_output_parent(self):
main(['sync'])


class ControllerProjectActionGerritTest(RiftProjectTestCase):
"""
Tests class for Controller action gerrit
"""

def test_gerrit_missing_patch_change_patchset(self):
"""gerrit without patch, change or patchset fails"""
for cmd in (['gerrit', '--change', '1', '--patchset', '2'],
['gerrit', '--patchset', '2', '/dev/null'],
['gerrit', '--change', '1', '/dev/null']):
with self.assertRaisesRegex(SystemExit, "2"):
main(cmd)

@patch('rift.Controller.Review')
def test_gerrit(self, mock_review):
"""simple gerrit"""
self.make_pkg()
patch = make_temp_file(
textwrap.dedent("""
diff --git a/packages/pkg/pkg.spec b/packages/pkg/pkg.spec
index d1a0d0e7..b3e36379 100644
--- a/packages/pkg/pkg.spec
+++ b/packages/pkg/pkg.spec
@@ -1,6 +1,6 @@
Name: pkg
Version: 1.0
-Release: 1
+Release: 2
Summary: A package
Group: System Environment/Base
License: GPL
"""))
main(['gerrit', '--change', '1', '--patchset', '2', patch.name])
# Check review has not been invalidated and pushed
mock_review.return_value.invalidate.assert_not_called()
mock_review.return_value.push.assert_called_once()

@patch('rift.Controller.Review')
def test_gerrit_review_invalidated(self, mock_review):
"""gerrit review invalidated"""
# Make package and inject rpmlint error ($RPM_BUILD_ROOT and
# RPM_SOURCE_DIR in buildsteps) in RPM spec file, with both rpmlint v1
# and v2.
self.make_pkg()
with open(self.pkgspecs['pkg'], "w") as spec:
spec.write(
gen_rpm_spec(
name='pkg',
version='1.0',
release='2',
arch='noarch',
buildsteps="$RPM_SOURCE_DIR\n$RPM_BUILD_ROOT",
)
)
patch = make_temp_file(
textwrap.dedent("""
diff --git a/packages/pkg/pkg.spec b/packages/pkg/pkg.spec
index d1a0d0e7..b3e36379 100644
--- a/packages/pkg/pkg.spec
+++ b/packages/pkg/pkg.spec
@@ -1,6 +1,6 @@
Name: pkg
Version: 1.0
-Release: 1
+Release: 2
Summary: A package
Group: System Environment/Base
License: GPL
"""))
main(['gerrit', '--change', '1', '--patchset', '2', patch.name])
# Check review has been invalidated and pushed
mock_review.return_value.invalidate.assert_called_once()
mock_review.return_value.push.assert_called_once()


class ControllerArgumentsTest(RiftTestCase):
""" Arguments parsing tests for Controller module"""

Expand Down