diff options
author | Konstantin Ryabitsev <konstantin@linuxfoundation.org> | 2022-10-27 13:28:19 -0400 |
---|---|---|
committer | Konstantin Ryabitsev <konstantin@linuxfoundation.org> | 2022-10-27 13:28:19 -0400 |
commit | 7b80cd73f364b556aad5098af6c538d7be01975d (patch) | |
tree | e82247322002eccea4200d22803b4449f5ebc2c8 | |
parent | 4220e66e70a7ce66f26b3903258c9fa60c2ef4c4 (diff) | |
download | b4-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.py | 8 | ||||
-rw-r--r-- | tests/conftest.py | 3 | ||||
-rw-r--r-- | tests/samples/shazam-git1-just-series-merged.verify | 71 | ||||
-rw-r--r-- | tests/test_mbox.py | 6 |
4 files changed, 85 insertions, 3 deletions
@@ -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) |