aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKonstantin Ryabitsev <konstantin@linuxfoundation.org>2022-10-27 13:28:19 -0400
committerKonstantin Ryabitsev <konstantin@linuxfoundation.org>2022-10-27 13:28:19 -0400
commit7b80cd73f364b556aad5098af6c538d7be01975d (patch)
treee82247322002eccea4200d22803b4449f5ebc2c8
parent4220e66e70a7ce66f26b3903258c9fa60c2ef4c4 (diff)
downloadb4-7b80cd73f364b556aad5098af6c538d7be01975d.tar.gz
tests: test shazam -M and shazam -H
This required adding some hacky code so we don't execvp from inside a test, but it's semi-kosher per pytest docs. Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
-rw-r--r--b4/mbox.py8
-rw-r--r--tests/conftest.py3
-rw-r--r--tests/samples/shazam-git1-just-series-merged.verify71
-rw-r--r--tests/test_mbox.py6
4 files changed, 85 insertions, 3 deletions
diff --git a/b4/mbox.py b/b4/mbox.py
index 2b5197b..0c3e35e 100644
--- a/b4/mbox.py
+++ b/b4/mbox.py
@@ -382,7 +382,6 @@ def make_am(msgs, cmdargs, msgid):
mergeflags = config.get('shazam-merge-flags', '--signoff')
sp = shlex.shlex(mergeflags, posix=True)
sp.whitespace_split = True
- edit = None
if cmdargs.no_interactive:
edit = '--no-edit'
else:
@@ -401,12 +400,17 @@ def make_am(msgs, cmdargs, msgid):
sys.exit(130)
else:
logger.info('Invoking: %s', ' '.join(mergecmd))
+ if hasattr(sys, '_running_in_pytest'):
+ # Don't execvp, as this kills our tests
+ out, logstr = b4.git_run_command(None, mergeargs)
+ sys.exit(out)
+
# We exec git-merge and let it take over
os.execvp(mergecmd[0], mergecmd)
logger.info('You can now merge or checkout FETCH_HEAD')
logger.info(' e.g.: %s', ' '.join(mergecmd))
- return
+ sys.exit(0)
if not base_commit:
checked, mismatches = lser.check_applies_clean(topdir, at=cmdargs.guessbranch)
diff --git a/tests/conftest.py b/tests/conftest.py
index 6a437a6..16e999f 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -1,6 +1,7 @@
import pytest # noqa
import b4
import os
+import sys
@pytest.fixture(scope="function", autouse=True)
@@ -17,6 +18,8 @@ def settestdefaults(tmp_path):
}
os.environ['XDG_DATA_HOME'] = str(tmp_path)
os.environ['XDG_CACHE_HOME'] = str(tmp_path)
+ # This lets us avoid execvp-ing from inside b4 when testing
+ sys._running_in_pytest = True
@pytest.fixture(scope="function")
diff --git a/tests/samples/shazam-git1-just-series-merged.verify b/tests/samples/shazam-git1-just-series-merged.verify
new file mode 100644
index 0000000..57cb95e
--- /dev/null
+++ b/tests/samples/shazam-git1-just-series-merged.verify
@@ -0,0 +1,71 @@
+konstantin@linuxfoundation.org
+Merge patch series "This is a cover for test series 1"
+Konstantin Ryabitsev <konstantin@linuxfoundation.org> says:
+
+Test patches for pytest.
+
+Link: https://lore.kernel.org/r/20221025-test1-v1-0-e4f28f57990c@linuxfoundation.org
+Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
+---
+konstantin@linuxfoundation.org
+Minor typo changes imitation
+Life imitatus artem.
+
+Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
+---
+konstantin@linuxfoundation.org
+Add some paragraphs to lipsum
+Mostly junk. As expected.
+
+Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
+---
+konstantin@linuxfoundation.org
+Add more lines to file 1
+This is a second patch in the series. It needed a paragraph with the
+words of wisdom.
+
+Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
+---
+konstantin@linuxfoundation.org
+Remove line 2 from file2
+Etiam in rhoncus lacus. Ut velit nisl, mollis ac commodo vitae, ultrices
+quis felis. Proin varius hendrerit volutpat. Pellentesque nec laoreet
+quam, eu ullamcorper mi. Donec ut purus ac sapien dignissim elementum eu
+ac ante. Mauris sed faucibus orci.
+
+Vivamus eleifend accumsan ultricies. Cras at erat nec mauris iaculis
+eleifend sit amet eu libero. Suspendisse auctor a erat at vestibulum.
+Nullam efficitur quis turpis quis sodales.
+
+Nunc elementum hendrerit arcu eget feugiat. Nulla placerat pellentesque
+metus, nec rutrum nulla porttitor vel. Ut tristique commodo sem, ac
+sollicitudin enim pharetra et. Mauris sed tellus vitae nunc sollicitudin
+fermentum. Phasellus dui elit, malesuada quis metus vel, blandit
+tristique felis. Aenean quis tempus enim.
+
+Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
+---
+konstantin@linuxfoundation.org
+Add lipsum.txt
+Another commit.
+
+Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
+---
+konstantin@linuxfoundation.org
+Add line 2 in file 2
+I lost count, which commit is this?
+
+Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
+---
+konstantin@linuxfoundation.org
+Add file 2
+This is a third commit.
+
+Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
+---
+konstantin@linuxfoundation.org
+Add a second line
+This is a second commit.
+
+Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
+---
diff --git a/tests/test_mbox.py b/tests/test_mbox.py
index deb7ca2..31343b4 100644
--- a/tests/test_mbox.py
+++ b/tests/test_mbox.py
@@ -8,6 +8,10 @@ import b4.command
@pytest.mark.parametrize('mboxf, shazamargs, compareargs, compareout, b4cfg', [
('shazam-git1-just-series', [],
['log', '--format=%ae%n%s%n%b---', 'HEAD~4..'], 'shazam-git1-just-series-defaults', []),
+ ('shazam-git1-just-series', ['-H'],
+ ['log', '--format=%ae%n%s%n%b---', 'HEAD..FETCH_HEAD'], 'shazam-git1-just-series-defaults', []),
+ ('shazam-git1-just-series', ['-M'],
+ ['log', '--format=%ae%n%s%n%b---', 'HEAD~5..'], 'shazam-git1-just-series-merged', []),
])
def test_shazam(sampledir, gitdir, mboxf, shazamargs, compareargs, compareout, b4cfg):
b4.MAIN_CONFIG.update(b4cfg)
@@ -16,7 +20,7 @@ def test_shazam(sampledir, gitdir, mboxf, shazamargs, compareargs, compareout, b
assert os.path.exists(mfile)
assert os.path.exists(cfile)
parser = b4.command.setup_parser()
- shazamargs = ['--no-stdin', 'shazam', '-m', mfile] + shazamargs
+ shazamargs = ['--no-stdin', '--no-interactive', '--offline-mode', 'shazam', '-m', mfile] + shazamargs
cmdargs = parser.parse_args(shazamargs)
with pytest.raises(SystemExit) as e:
b4.mbox.main(cmdargs)