diff options
author | Anna (cybertailor) Vyalkova <cyber+gentoo@sysrq.in> | 2024-11-26 20:44:31 +0500 |
---|---|---|
committer | Sebastian Pipping <sping@gentoo.org> | 2025-01-31 18:40:45 +0100 |
commit | d697c3ac24cc324a62c68553e99f2d7aba491e5d (patch) | |
tree | fe143da9fd459a73d79424f3d29e9ffda192ed95 | |
parent | pyproject.toml: Officially support Python 3.11 and 3.12 (diff) | |
download | metagen-master.tar.gz metagen-master.tar.bz2 metagen-master.zip |
This replaces custom shellscript runner.
Signed-off-by: Anna (cybertailor) Vyalkova <cyber+gentoo@sysrq.in>
Signed-off-by: Sebastian Pipping <sping@gentoo.org>
-rw-r--r-- | MANIFEST.in | 1 | ||||
-rwxr-xr-x | metagen/test_cli | 51 | ||||
-rw-r--r-- | metagen/tests/test_cli.py | 61 |
3 files changed, 61 insertions, 52 deletions
diff --git a/MANIFEST.in b/MANIFEST.in index 00690d6..9a2248f 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,2 +1 @@ include docs/* -include metagen/test_cli diff --git a/metagen/test_cli b/metagen/test_cli deleted file mode 100755 index fb394ca..0000000 --- a/metagen/test_cli +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash -metagen() { - PYTHONPATH=. python3 -m metagen "$@" -} - -handle_error() { - ret=$? - echo FAILED. >&2 - exit ${ret} -} -trap handle_error ERR - -unset ECHANGELOG_USER -PS4='# ' -set -x -######################################## -# BEGIN tests -######################################## - - -#Should fail as -t ... is missing -! metagen -m -Q -! metagen -e mail@example.org -Q - -#Should fail if ECHANGELOG_USER not set: -ECHANGELOG_USER='First Last <mail@example.org>' metagen -m -Q -t person -! metagen -m -Q -t person - -metagen -e "someguy@gentoo.org" -d "Maint desc" -Q -t person - -metagen -e "someguy@gentoo.org" -n "Jon Doe" -d "Maint desc" -Q -t person - -#Should fail if ECHANGELOG_USER not set: -ECHANGELOG_USER='First Last <mail@example.org>' metagen -m -e "foo@bar.com" -d "Foo bar.","Chow fun" -Q -t person -! metagen -m -e "foo@bar.com" -d "Foo bar.","Chow fun" -Q -t person - -#Should fail: -! metagen -Q -t person - -#Should fail: -! metagen -l "Long desc" -Q -t person - -#Should fail: -! metagen -d "Maintainer desc" -Q -t person - - -######################################## -# END tests -######################################## -echo -echo PASSED. diff --git a/metagen/tests/test_cli.py b/metagen/tests/test_cli.py new file mode 100644 index 0000000..603f475 --- /dev/null +++ b/metagen/tests/test_cli.py @@ -0,0 +1,61 @@ +import os +import sys +import unittest +from contextlib import redirect_stdout +from io import StringIO +from unittest.mock import patch + +from metagen.__main__ import main + + +class TestCli(unittest.TestCase): + + def test_missing_type(self): + self.assertExitFail("-m", "-Q") + self.assertExitFail("-e", "mail@example.org", "-Q") + + def test_echangelog_user(self): + test_env = {"ECHANGELOG_USER": "First Last <mail@example.org>"} + test_args = ["-m", "-Q", "-t", "person"] + + with patch.dict(os.environ, test_env): + self.assertExitSuccess(*test_args) + + with patch.dict(os.environ, clear=True): + self.assertExitFail(*test_args) + + def test_maint_desc(self): + self.assertExitSuccess("-e", "someguy@gentoo.org", + "-d", "Maint desc", "-Q", "-t", "person") + self.assertExitSuccess("-e", "someguy@gentoo.org", + "-d", "Maint desc", "-n", "Jon Doe", + "-Q", "-t", "person") + + def test_echangelog_user_long(self): + test_env = {"ECHANGELOG_USER": "First Last <mail@example.org>"} + test_args = ["-m", "-e", "foo@bar.com", + "-d", "Foo bar.,Chow fun", "-Q", "-t", "person"] + + with patch.dict(os.environ, test_env): + self.assertExitSuccess(*test_args) + + with patch.dict(os.environ, clear=True): + self.assertExitFail(*test_args) + + def test_missing_email(self): + self.assertExitFail("-Q", "-t", "person") + self.assertExitFail("-l", "Long desc", "-Q", "-t", "person") + self.assertExitFail("-d", "Maintainer desc", "-Q", "-t", "person") + + def assertExitFail(self, *args): + with self.assertRaises(SystemExit) as cm: + self._run_metagen(*args) + self.assertEqual(cm.exception.code, 1) + + def assertExitSuccess(self, *args): + self._run_metagen(*args) + + def _run_metagen(self, *args): + with redirect_stdout(StringIO()): + with patch.object(sys, "argv", ["metagen", *args]): + main() |