From 7c92e1647e17f3a88c635286e91bde7776a6cff9 Mon Sep 17 00:00:00 2001 From: Andreas Motl Date: Sat, 23 Oct 2021 15:58:41 +0200 Subject: [PATCH] Tests: Add software tests for "Magics.selfcheck" and "Magics.main" --- Magics/__main__.py | 2 +- tests/test_main.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 tests/test_main.py diff --git a/Magics/__main__.py b/Magics/__main__.py index d077386..73b6bf1 100644 --- a/Magics/__main__.py +++ b/Magics/__main__.py @@ -38,5 +38,5 @@ def main(argv=None): ) -if __name__ == "__main__": +if __name__ == "__main__": # pragma: nocover main() diff --git a/tests/test_main.py b/tests/test_main.py new file mode 100644 index 0000000..a35cbc3 --- /dev/null +++ b/tests/test_main.py @@ -0,0 +1,42 @@ +import re +import sys + +import pytest + +from Magics.__main__ import main, selfcheck + + +def test_selfcheck(capsys): + selfcheck() + + stdout, stderr = capsys.readouterr() + + assert "Found:" in stdout + assert "Library:" in stdout + assert "Magics home:" in stdout + assert "Your system is ready." in stdout + + assert "You are using an old version of magics" not in stdout + + +def test_main_success(capsys): + sys.argv = ["program", "selfcheck"] + main() + stdout, stderr = capsys.readouterr() + assert "Your system is ready." in stdout + + +def test_main_failure_no_command(capsys): + sys.argv = ["program"] + with pytest.raises(SystemExit) as ex: + main() + ex.match("2") + stdout, stderr = capsys.readouterr() + assert "program: error: the following arguments are required: command" in stderr + + +def test_main_failure_unknown_command(capsys): + sys.argv = ["program", "foobar"] + with pytest.raises(RuntimeError) as ex: + main() + ex.match(re.escape("Command not recognised 'foobar'. See usage with --help."))