Fix tests

This commit is contained in:
Francois Lebreau 2021-01-21 10:07:00 +00:00
parent 44675d38f5
commit 785e9a3ce7
3 changed files with 22 additions and 23 deletions

1
.gitignore vendored
View file

@ -22,3 +22,4 @@ venv/
# VSCode
.vscode/
pyrightconfig.json

View file

@ -1,2 +1,8 @@
from .terraform import Terraform, VariableFiles
from .terraform import (
IsFlagged,
IsNotFlagged,
Terraform,
TerraformCommandError,
VariableFiles,
)
from .tfstate import Tfstate

View file

@ -5,8 +5,10 @@ import re
import shutil
from contextlib import contextmanager
from io import StringIO
from typing import Callable
import pytest
from python_terraform import IsFlagged, IsNotFlagged, Terraform, TerraformCommandError
logging.basicConfig(level=logging.DEBUG)
@ -113,7 +115,7 @@ def fmt_test_file(request):
@pytest.fixture()
def string_logger(request):
def string_logger(request) -> Callable[..., str]:
log_stream = StringIO()
handler = logging.StreamHandler(log_stream)
root_logger.addHandler(handler)
@ -150,13 +152,13 @@ def workspace_setup_teardown():
class TestTerraform(object):
def teardown_method(self, method):
def teardown_method(self, _) -> None:
""" teardown any state that was previously setup with a setup_method
call.
"""
exclude = ["test_tfstate_file", "test_tfstate_file2", "test_tfstate_file3"]
def purge(dir, pattern):
def purge(dir: str, pattern: str) -> None:
for root, dirnames, filenames in os.walk(dir):
dirnames[:] = [d for d in dirnames if d not in exclude]
for filename in fnmatch.filter(filenames, pattern):
@ -172,7 +174,7 @@ class TestTerraform(object):
purge(".", FILE_PATH_WITH_SPACE_AND_SPACIAL_CHARS)
@pytest.mark.parametrize(["method", "expected"], STRING_CASES)
def test_generate_cmd_string(self, method, expected):
def test_generate_cmd_string(self, method: Callable[..., str], expected: str):
tf = Terraform(working_dir=current_path)
result = method(tf)
@ -183,36 +185,26 @@ class TestTerraform(object):
@pytest.mark.parametrize(*CMD_CASES)
def test_cmd(
self,
method,
expected_output,
expected_ret_code,
expected_exception,
expected_logs,
string_logger,
method: Callable[..., str],
expected_output: str,
expected_ret_code: int,
expected_exception: bool,
expected_logs: str,
string_logger: Callable[..., str],
folder,
):
tf = Terraform(working_dir=current_path)
tf.init(folder)
try:
ret, out, err = method(tf)
ret, out, _ = method(tf)
assert not expected_exception
except TerraformCommandError as e:
assert expected_exception
ret = e.returncode
out = e.out
err = e.err
logs = string_logger()
logs = logs.replace("\n", "")
if isinstance(expected_output, list):
ok = False
for xo in expected_output:
if xo in out:
ok = True
break
if not ok:
assert expected_output[0] in out
else:
assert expected_output in out
assert expected_ret_code == ret
assert expected_logs in logs