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

Commit dea9eda

Browse files
committed
add support for -var-file. Fixes #14
1 parent 3b9633d commit dea9eda

File tree

3 files changed

+20
-9
lines changed

3 files changed

+20
-9
lines changed

CHANGELOG.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [1.5.1]
11+
12+
- add support for `-var-file` flag
13+
1014
## [1.5.0]
1115

1216
- add an option to allow the use of targeted resources using the `-target` flag
@@ -63,7 +67,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6367
- remove the `teardown` method
6468
- unify the `plan` and `plan_out` methods
6569

66-
[Unreleased]: https://github.com/GoogleCloudPlatform/terraform-python-testing-helper/compare/v1.5.0...HEAD
70+
[Unreleased]: https://github.com/GoogleCloudPlatform/terraform-python-testing-helper/compare/v1.5.1...HEAD
71+
[1.5.1]: https://github.com/GoogleCloudPlatform/terraform-python-testing-helper/compare/v1.5.0...v1.5.1
6772
[1.5.0]: https://github.com/GoogleCloudPlatform/terraform-python-testing-helper/compare/v1.4.1...v1.5.0
6873
[1.4.1]: https://github.com/GoogleCloudPlatform/terraform-python-testing-helper/compare/v1.3.0...v1.4.1
6974
[1.3.0]: https://github.com/GoogleCloudPlatform/terraform-python-testing-helper/compare/v1.2.0...v1.3.0

test/test_args.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@
4040
({'refresh': True}, []),
4141
({'refresh': None}, []),
4242
({'refresh': False}, ['-refresh=false']),
43+
({'tf_var_file': None}, []),
44+
({'tf_var_file': 'foo.tfvar'}, ['-var-file=foo.tfvar']),
4345
)
4446

4547

@@ -55,6 +57,7 @@ def test_var_args():
5557
assert sorted(tftest.parse_args(tf_vars={'a': 1, 'b': '["2"]'})) == sorted(
5658
['-var', 'b=["2"]', '-var', 'a=1'])
5759

60+
5861
def test_targets():
59-
assert tftest.parse_args(targets=['one','two']) == sorted(
60-
['-target=one','-target=two'])
62+
assert tftest.parse_args(targets=['one', 'two']) == sorted(
63+
['-target=one', '-target=two'])

tftest.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ def parse_args(init_vars=None, tf_vars=None, targets=None, **kw):
9191
))
9292
if targets:
9393
cmd_args += [("-target={}".format(t)) for t in targets]
94+
if kw.get('tf_var_file'):
95+
cmd_args.append('-var-file={}'.format(kw['tf_var_file']))
9496
return cmd_args
9597

9698

@@ -309,11 +311,11 @@ def init(self, input=False, color=False, force_copy=False, plugin_dir=None,
309311
init_vars=init_vars)
310312
return self.execute_command('init', *cmd_args).out
311313

312-
def plan(self, input=False, color=False, refresh=True, tf_vars=None, targets=None, output=False):
314+
def plan(self, input=False, color=False, refresh=True, tf_vars=None, targets=None, output=False, tf_var_file=None):
313315
"Run Terraform plan command, optionally returning parsed plan output."
314316
cmd_args = parse_args(input=input, color=color,
315317
refresh=refresh, tf_vars=tf_vars,
316-
targets=targets)
318+
targets=targets, tf_var_file=tf_var_file)
317319
if not output:
318320
return self.execute_command('plan', *cmd_args).out
319321
with tempfile.NamedTemporaryFile() as fp:
@@ -325,11 +327,11 @@ def plan(self, input=False, color=False, refresh=True, tf_vars=None, targets=Non
325327
except json.JSONDecodeError as e:
326328
raise TerraformTestError('Error decoding plan output: {}'.format(e))
327329

328-
def apply(self, input=False, color=False, auto_approve=True, tf_vars=None, targets=None):
330+
def apply(self, input=False, color=False, auto_approve=True, tf_vars=None, targets=None, tf_var_file=None):
329331
"""Run Terraform apply command."""
330332
cmd_args = parse_args(input=input, color=color,
331333
auto_approve=auto_approve, tf_vars=tf_vars,
332-
targets=targets)
334+
targets=targets, tf_var_file=tf_var_file)
333335
return self.execute_command('apply', *cmd_args).out
334336

335337
def output(self, name=None, color=False, json_format=True):
@@ -347,10 +349,11 @@ def output(self, name=None, color=False, json_format=True):
347349
_LOGGER.warning('error decoding output: {}'.format(e))
348350
return output
349351

350-
def destroy(self, color=False, auto_approve=True, tf_vars=None, targets=None):
352+
def destroy(self, color=False, auto_approve=True, tf_vars=None, targets=None, tf_var_file=None):
351353
"""Run Terraform destroy command."""
352354
cmd_args = parse_args(color=color, auto_approve=auto_approve,
353-
tf_vars=tf_vars, targets=targets)
355+
tf_vars=tf_vars, targets=targets,
356+
tf_var_file=tf_var_file)
354357
return self.execute_command('destroy', *cmd_args).out
355358

356359
def refresh(self, color=False, lock=False, tf_vars=None, targets=None):

0 commit comments

Comments
 (0)