Skip to content

[Terratest] terraform.InitAndValidate and ~.InitAndValidateE method occure Error #9

@unchaptered

Description

@unchaptered

Codes & Commit Id

PR : #8
Commit : 2fc8173

  • Terraform Codes
# main.tf
data "aws_acm_certificate" "datasource" {
  domain   = var.domain
  statuses = var.status # ["ISSUED"]
}

# variables.tf
variable "domain" {
  type = string
}
variable "status" {
  type    = list(string)
  default = ["ISSUED"]
}

# outputs.tf
output "arn" {
  value = data.aws_acm_certificate.datasource.arn
}
  • Terratest Codes
package main

import (
	"testing"

	"github.com/gruntwork-io/terratest/modules/terraform"
)

func TestTerraformDataAwsAmi(t *testing.T) {
	t.Parallel()

	options := terraform.WithDefaultRetryableErrors(t, &terraform.Options{
		TerraformDir: "../../../../data/aws/acm",
		Vars: map[string]interface{}{
			"domain": "example.com",
			"status": []string{"ISSUED"},
		},
		EnvVars: map[string]string{
			"AWS_DEFAULT_REGION": "us-east-1",
		},
	})

	defer terraform.Destroy(t, options)

	terraform.InitAndValidateE(t, options)
}

Expected Result

Success

Real Result

Failed

│ Error: Failed to parse command-line flags
│
│ flag provided but not defined: -var
╵
╷
│ Error: Too many command line arguments
│
│ Expected at most one positional argument.

Epxected Issue

In terraform, terraform validate don't required -var or -var-files.

But in terratest, terraform.InitAndValidate or terraform.InitAndValidateE needs vars.

But when I use vars: map[string]interface{} with terratest, terratest typed terraform validate -var ....


But, Terraform don't supports -v option in validate.

So, this implementation of terraform.InitAndValidate(E) can't executeed at any way.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions