diff --git a/.gitignore b/.gitignore index 235500f..5f473cd 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ cfg/* __pycache__/ *.py[cod] *$py.class +.venv # C extensions *.so diff --git a/requirements.txt b/requirements.txt index 58ea118..da599ef 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,3 +2,5 @@ pyyaml argparse pylint build +pytest +cli_test_helpers \ No newline at end of file diff --git a/src/tfscript/writing.py b/src/tfscript/writing.py index c704061..7138eaf 100644 --- a/src/tfscript/writing.py +++ b/src/tfscript/writing.py @@ -1,4 +1,5 @@ import os +import sys from os.path import exists from tempfile import NamedTemporaryFile diff --git a/tests/test_cli.py b/tests/test_cli.py new file mode 100644 index 0000000..3f68015 --- /dev/null +++ b/tests/test_cli.py @@ -0,0 +1,38 @@ +""" +Tests that we can import and execute the most basic valid test file. +Uses: tests/validYAML.yaml +""" +import pytest +import tfscript.cli +from cli_test_helpers import ArgvContext, shell + +class TestCLI: + + def test_debug_opt(self): + """Is debug argument available?""" + with ArgvContext('tfscript', '-d', 'tests/validYAML.yaml'): + parser = tfscript.cli.parseCLI() + args = parser.parse_args() + assert args.debug == True + + def test_dry_run_opt(self): + """Is dry-run argument available?""" + with ArgvContext('tfscript', '-n', 'tests/validYAML.yaml'): + parser = tfscript.cli.parseCLI() + args = parser.parse_args() + assert args.dry_run == True + + def test_directory_opt(self): + """Use . because it's sure to exist on all platforms.""" + with ArgvContext('tfscript', '--directory', '.', 'tests/validYAML.yaml'): + parser = tfscript.cli.parseCLI() + args = parser.parse_args() + assert args.directory == '.' + + def test_cli(self): + """ + Does CLI stop execution w/o a filename positional argument? + """ + with pytest.raises(SystemExit): + tfscript.cli.main() + pytest.fail("Should abort without positional filename argument") \ No newline at end of file diff --git a/tests/test_valid_yaml.py b/tests/test_valid_yaml.py new file mode 100644 index 0000000..b187722 --- /dev/null +++ b/tests/test_valid_yaml.py @@ -0,0 +1,15 @@ +""" +Tests that we can import and execute the most basic valid test file. +Uses: tests/validYAML.yaml +""" +import pytest +import tfscript.cli +from cli_test_helpers import ArgvContext, shell + +class TestValidYaml: + + def test_parseValidFile(self, tmp_path): + """Parse the basic test file.""" + with ArgvContext('tfscript', '--directory', str(tmp_path), + '-d', 'tests/validYAML.yaml'): + tfscript.cli.main()