diff --git a/src/main/python/ddadevops/domain/terraform.py b/src/main/python/ddadevops/domain/terraform.py index 28eaaa8..95b29bb 100644 --- a/src/main/python/ddadevops/domain/terraform.py +++ b/src/main/python/ddadevops/domain/terraform.py @@ -1,8 +1,10 @@ from typing import List, Optional +from pathlib import Path from .common import ( Validateable, DnsRecord, Devops, + filter_none, ) @@ -18,7 +20,9 @@ class Terraform(Validateable): self.tf_debug_print_terraform_command = inp.get( "tf_debug_print_terraform_command", False ) - self.tf_commons_dir_name = inp.get("tf_commons_dir_name", "terraform") + self.tf_build_commons_dir_name = inp.get( + "tf_build_commons_dir_name", "terraform" + ) self.tf_terraform_semantic_version = inp.get( "tf_terraform_semantic_version", "1.0.8" ) @@ -27,6 +31,7 @@ class Terraform(Validateable): def validate(self) -> List[str]: result = [] result += self.__validate_is_not_empty__("module") + result += self.__validate_is_not_empty__("tf_build_commons_dir_name") return result def output_json_name(self) -> str: @@ -34,3 +39,7 @@ class Terraform(Validateable): return self.tf_output_json_name else: return f"out_{self.module}.json" + + def terraform_build_commons_path(self) -> Path: + mylist = [self.tf_build_commons_path, self.tf_build_commons_dir_name] + return Path("/".join(filter_none(mylist)) + "/") diff --git a/src/test/python/domain/helper.py b/src/test/python/domain/helper.py index 2b09198..358803f 100644 --- a/src/test/python/domain/helper.py +++ b/src/test/python/domain/helper.py @@ -28,8 +28,8 @@ def devops_config(overrides: dict) -> dict: "tf_output_json_name": "the_out.json", "tf_use_workspace": None, "tf_use_package_common_files": None, - "tf_build_commons_path": None, - "tf_commons_dir_name": None, + "tf_build_commons_path": "build_commons_path", + "tf_build_commons_dir_name": "terraform", "tf_debug_print_terraform_command": None, "tf_additional_tfvar_files": None, "tf_terraform_semantic_version": None, diff --git a/src/test/python/domain/test_terraform.py b/src/test/python/domain/test_terraform.py index 013bc94..d46457d 100644 --- a/src/test/python/domain/test_terraform.py +++ b/src/test/python/domain/test_terraform.py @@ -1,7 +1,7 @@ import pytest from pathlib import Path from src.main.python.ddadevops.domain import DnsRecord, BuildType, Terraform -from .helper import build_devops +from .helper import build_devops, devops_config def test_creation(): @@ -9,11 +9,25 @@ def test_creation(): assert BuildType.TERRAFORM in sut.specialized_builds assert sut.specialized_builds[BuildType.TERRAFORM] -def test_should_calculate_output_json_name(): - devops = build_devops({}) - sut = devops.specialized_builds[BuildType.TERRAFORM] - assert 'the_out.json' == sut.output_json_name() - devops = build_devops({"tf_output_json_name": None,}) - sut = devops.specialized_builds[BuildType.TERRAFORM] - assert 'out_module.json' == sut.output_json_name() +def test_should_calculate_output_json_name(): + config = devops_config({}) + sut = Terraform(config) + assert "the_out.json" == sut.output_json_name() + + config = devops_config({}) + del config["tf_output_json_name"] + sut = Terraform(config) + assert "out_module.json" == sut.output_json_name() + + +def test_should_calculate_terraform_build_commons_path(): + config = devops_config({}) + del config["tf_build_commons_path"] + del config["tf_build_commons_dir_name"] + sut = Terraform(config) + assert Path("terraform") == sut.terraform_build_commons_path() + + config = devops_config({}) + sut = Terraform(config) + assert Path("build_commons_path/terraform") == sut.terraform_build_commons_path()