summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/conftest.py4
-rw-r--r--tests/test_arg_parser.py39
2 files changed, 35 insertions, 8 deletions
diff --git a/tests/conftest.py b/tests/conftest.py
index 9368432..fcf4189 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -2,6 +2,6 @@ import pytest
from pyssg.arg_parser import get_parser
-@pytest.fixture
+@pytest.fixture(scope='session')
def arg_parser():
- return get_parser() \ No newline at end of file
+ return get_parser()
diff --git a/tests/test_arg_parser.py b/tests/test_arg_parser.py
index 45263ce..1a5b48c 100644
--- a/tests/test_arg_parser.py
+++ b/tests/test_arg_parser.py
@@ -1,16 +1,43 @@
+import sys
import pytest
+from unittest.mock import patch
from argparse import ArgumentParser
+# these tests don't really show any coverage, so not sure how useful they're
+# but I'm including them as at least these should work
@pytest.mark.parametrize('args, arg_name, exp_result', [
(['--version'], 'version', True),
(['-v'], 'version', True),
+ # config really just inputs a string
(['--config', 'value'], 'config', 'value'),
(['-c', 'value'], 'config', 'value'),
+ (['--copy-default-config'], 'copy_default_config', True),
+ (['--init'], 'init', True),
+ (['-i'], 'init', True),
+ (['--build'], 'build', True),
+ (['-b'], 'build', True),
+ (['--debug'], 'debug', True)
])
-def test_individual_args(args: list[str],
- arg_name: str,
- exp_result: str | bool,
- arg_parser: ArgumentParser) -> None:
- parsed_args: dict[str, str | bool] = vars(arg_parser.parse_args(args))
- assert parsed_args[arg_name] == exp_result
+def test_valid_args(args: list[str],
+ arg_name: str,
+ exp_result: str | bool,
+ arg_parser: ArgumentParser) -> None:
+ with patch.object(sys, 'argv', ['pyssg'] + args):
+ parsed_args: dict[str, str | bool] = vars(arg_parser.parse_args())
+ assert parsed_args[arg_name] == exp_result
+
+
+@pytest.mark.parametrize('args', [
+ (['--something-random']),
+ (['-z']),
+ (['hello']),
+ (['help']),
+ (['h'])
+])
+def test_invalid_args(args: list[str],
+ arg_parser: ArgumentParser) -> None:
+ with pytest.raises(SystemExit) as system_exit:
+ arg_parser.parse_args(args)
+ assert system_exit.type == SystemExit
+ assert system_exit.value.code == 2