Skip to content
This repository was archived by the owner on Aug 26, 2025. It is now read-only.

Commit 9651a05

Browse files
committed
tag v1.8.3
1 parent 99e231c commit 9651a05

File tree

2 files changed

+34
-24
lines changed

2 files changed

+34
-24
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,14 @@ All notable changes to this project will be documented in this file.
55

66
## [Unreleased]
77

8+
<!-- None < 2023-01-26 11:16:58+00:00 -->
9+
10+
## [1.8.3] - 2023-04-16
11+
12+
- [[#70](https://github.com/GoogleCloudPlatform/terraform-python-testing-helper/pull/70)] Parse state flag ([andrewesweet](https://github.com/andrewesweet))
13+
814
## [1.8.2] - 2023-01-26
15+
<!-- 2023-01-26 11:16:58+00:00 < 2022-12-01 06:54:32+00:00 -->
916

1017
- [[#69](https://github.com/GoogleCloudPlatform/terraform-python-testing-helper/pull/69)] [feature] added support to pass a complex dict ([MrImpossibru](https://github.com/MrImpossibru)) <!-- 2023-01-26 10:26:38+00:00 -->
1118

tftest.py

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
from pathlib import Path
4444
from typing import List
4545

46-
__version__ = '1.8.2'
46+
__version__ = '1.8.3'
4747

4848
_LOGGER = logging.getLogger('tftest')
4949

@@ -107,8 +107,7 @@ def parse_args(init_vars=None, tf_vars=None, targets=None, **kw):
107107
]
108108
for arg in _TG_KV_ARGS:
109109
if kw.get(f"tg_{arg}"):
110-
cmd_args += [f'--terragrunt-{arg.replace("_", "-")}',
111-
kw[f"tg_{arg}"]]
110+
cmd_args += [f'--terragrunt-{arg.replace("_", "-")}', kw[f"tg_{arg}"]]
112111
if kw.get('tg_parallelism'):
113112
cmd_args.append(f'--terragrunt-parallelism {kw["tg_parallelism"]}')
114113
if isinstance(kw.get('tg_override_attr'), dict):
@@ -149,9 +148,10 @@ def parse_args(init_vars=None, tf_vars=None, targets=None, **kw):
149148
cmd_args += list(
150149
itertools.chain.from_iterable(
151150
("-var",
152-
"{}={}".format(k, json.dumps(v) if isinstance(v, (dict, list)) else v))
153-
for k, v in tf_vars.items()
154-
))
151+
"{}={}".format(k,
152+
json.dumps(v) if isinstance(v, (dict,
153+
list)) else v))
154+
for k, v in tf_vars.items()))
155155
if targets:
156156
cmd_args += [("-target={}".format(t)) for t in targets]
157157
if kw.get('tf_var_file'):
@@ -329,8 +329,7 @@ def __init__(self, tfdir, basedir=None, binary='terraform', env=None,
329329
self.env = os.environ.copy()
330330
self.tg_run_all = False
331331
self._plan_formatter = lambda out: TerraformPlanOutput(json.loads(out))
332-
self._output_formatter = lambda out: TerraformValueDict(
333-
json.loads(out))
332+
self._output_formatter = lambda out: TerraformValueDict(json.loads(out))
334333
self.enable_cache = enable_cache
335334
if not cache_dir:
336335
self.cache_dir = Path(os.path.dirname(
@@ -365,13 +364,11 @@ def remove_readonly(func, path, excinfo):
365364
for tg_dir in glob.glob(path, recursive=True):
366365
if os.path.isdir(tg_dir):
367366
shutil.rmtree(tg_dir, onerror=remove_readonly)
368-
_LOGGER.debug(
369-
'Restoring original TF files after prevent destroy changes')
367+
_LOGGER.debug('Restoring original TF files after prevent destroy changes')
370368
if restore_files:
371369
for bkp_file in Path(tfdir).rglob('*.bkp'):
372370
try:
373-
shutil.copy(str(bkp_file),
374-
f'{str(bkp_file).strip(".bkp")}')
371+
shutil.copy(str(bkp_file), f'{str(bkp_file).strip(".bkp")}')
375372
except (IOError, OSError):
376373
_LOGGER.exception(
377374
f'Unable to restore terraform file {bkp_file.resolve()}')
@@ -384,12 +381,12 @@ def _abspath(self, path):
384381
"""Make relative path absolute from base dir."""
385382
return path if os.path.isabs(path) else os.path.join(self._basedir, path)
386383

387-
def _dirhash(self, directory, hash, ignore_hidden=False, exclude_directories=[], excluded_extensions=[]):
384+
def _dirhash(self, directory, hash, ignore_hidden=False,
385+
exclude_directories=[], excluded_extensions=[]):
388386
"""Returns hash of directory's file contents"""
389387
assert Path(directory).is_dir()
390388
try:
391-
dir_iter = sorted(Path(directory).iterdir(),
392-
key=lambda p: str(p).lower())
389+
dir_iter = sorted(Path(directory).iterdir(), key=lambda p: str(p).lower())
393390
except FileNotFoundError:
394391
return hash
395392
for path in dir_iter:
@@ -403,7 +400,8 @@ def _dirhash(self, directory, hash, ignore_hidden=False, exclude_directories=[],
403400
hash.update(chunk)
404401
elif path.is_dir() and path.name not in exclude_directories:
405402
hash = self._dirhash(path, hash, ignore_hidden=ignore_hidden,
406-
exclude_directories=exclude_directories, excluded_extensions=excluded_extensions)
403+
exclude_directories=exclude_directories,
404+
excluded_extensions=excluded_extensions)
407405
return hash
408406

409407
def generate_cache_hash(self, method_kwargs):
@@ -423,18 +421,23 @@ def generate_cache_hash(self, method_kwargs):
423421
if path_param in method_kwargs:
424422
if isinstance(method_kwargs[path_param], list):
425423
params[path_param] = [
426-
sha1(open(fp, 'rb').read()).hexdigest() for fp in method_kwargs[path_param]]
424+
sha1(open(fp, 'rb').read()).hexdigest()
425+
for fp in method_kwargs[path_param]
426+
]
427427
else:
428428
params[path_param] = sha1(
429429
open(method_kwargs[path_param], 'rb').read()).hexdigest()
430430

431431
# creates hash of all file content within tfdir
432432
# excludes .terraform/, hidden files, tfstate files from being used for hash
433-
params["tfdir"] = self._dirhash(
434-
self.tfdir, sha1(), ignore_hidden=True, exclude_directories=[".terraform"], excluded_extensions=['.backup', '.tfstate']).hexdigest()
433+
params["tfdir"] = self._dirhash(self.tfdir, sha1(), ignore_hidden=True,
434+
exclude_directories=[".terraform"],
435+
excluded_extensions=['.backup', '.tfstate'
436+
]).hexdigest()
435437

436-
return sha1(json.dumps(params, sort_keys=True,
437-
default=str).encode("cp037")).hexdigest() + ".pickle"
438+
return sha1(
439+
json.dumps(params, sort_keys=True,
440+
default=str).encode("cp037")).hexdigest() + ".pickle"
438441

439442
def _cache(func):
440443

@@ -597,7 +600,8 @@ def workspace(self, name=None):
597600

598601
@_cache
599602
def plan(self, input=False, color=False, refresh=True, tf_vars=None,
600-
targets=None, output=False, tf_var_file=None, state=None, use_cache=False, **kw):
603+
targets=None, output=False, tf_var_file=None, state=None,
604+
use_cache=False, **kw):
601605
"""
602606
Run Terraform plan command, optionally returning parsed plan output.
603607
@@ -629,8 +633,7 @@ def plan(self, input=False, color=False, refresh=True, tf_vars=None,
629633
try:
630634
return self._plan_formatter(result.out)
631635
except json.JSONDecodeError as e:
632-
raise TerraformTestError(
633-
'Error decoding plan output: {}'.format(e))
636+
raise TerraformTestError('Error decoding plan output: {}'.format(e))
634637

635638
@_cache
636639
def apply(self, input=False, color=False, auto_approve=True, tf_vars=None,

0 commit comments

Comments
 (0)