From 656f6a64d5d2a37267f4fa84d1c2773a8d96fc2c Mon Sep 17 00:00:00 2001 From: Igor Rodionov Date: Fri, 26 Jan 2024 16:47:03 +0100 Subject: [PATCH] Fix output values with null Signed-off-by: Igor Rodionov --- format/generator_test.go | 2 +- terraform/load.go | 12 ++++++++---- terraform/load_test.go | 16 ++++++++-------- terraform/testdata/full-example/outputs.tf | 5 +++++ 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/format/generator_test.go b/format/generator_test.go index 38d5bbf..32c9235 100644 --- a/format/generator_test.go +++ b/format/generator_test.go @@ -191,7 +191,7 @@ func TestGeneratorFuncModule(t *testing.T) { assert.Equal(expected, generator.module.Header) assert.Equal("", generator.module.Footer) assert.Equal(7, len(generator.module.Inputs)) - assert.Equal(3, len(generator.module.Outputs)) + assert.Equal(4, len(generator.module.Outputs)) }) } diff --git a/terraform/load.go b/terraform/load.go index d6272d6..a8587b4 100644 --- a/terraform/load.go +++ b/terraform/load.go @@ -294,11 +294,15 @@ func loadOutputs(tfmodule *tfconfig.Module, config *print.Config) ([]*Output, er } if config.OutputValues.Enabled { - output.Sensitive = values[output.Name].Sensitive - if values[output.Name].Sensitive { - output.Value = types.ValueOf(``) + if value, ok := values[output.Name]; ok { + output.Sensitive = value.Sensitive + output.Value = types.ValueOf(value.Value) } else { - output.Value = types.ValueOf(values[output.Name].Value) + output.Value = types.ValueOf("null") + } + + if output.Sensitive { + output.Value = types.ValueOf(``) } } outputs = append(outputs, output) diff --git a/terraform/load_test.go b/terraform/load_test.go index 20b79bc..1a5b57c 100644 --- a/terraform/load_test.go +++ b/terraform/load_test.go @@ -589,7 +589,7 @@ func TestLoadOutputs(t *testing.T) { name: "load module outputs from path", path: "full-example", expected: expected{ - outputs: 3, + outputs: 4, }, }, { @@ -665,7 +665,7 @@ func TestLoadOutputsValues(t *testing.T) { path: "full-example", outputPath: "output-values.json", expected: expected{ - outputs: 3, + outputs: 4, }, wantErr: false, }, @@ -896,7 +896,7 @@ func TestSortItems(t *testing.T) { inputs: []string{"D", "B", "E", "A", "C", "F", "G"}, required: []string{"A", "F"}, optional: []string{"D", "B", "E", "C", "G"}, - outputs: []string{"C", "A", "B"}, + outputs: []string{"C", "A", "B", "D"}, providers: []string{"tls", "aws", "null"}, }, }, @@ -909,7 +909,7 @@ func TestSortItems(t *testing.T) { inputs: []string{"D", "B", "E", "A", "C", "F", "G"}, required: []string{"A", "F"}, optional: []string{"D", "B", "E", "C", "G"}, - outputs: []string{"C", "A", "B"}, + outputs: []string{"C", "A", "B", "D"}, providers: []string{"tls", "aws", "null"}, }, }, @@ -922,7 +922,7 @@ func TestSortItems(t *testing.T) { inputs: []string{"D", "B", "E", "A", "C", "F", "G"}, required: []string{"A", "F"}, optional: []string{"D", "B", "E", "C", "G"}, - outputs: []string{"C", "A", "B"}, + outputs: []string{"C", "A", "B", "D"}, providers: []string{"tls", "aws", "null"}, }, }, @@ -935,7 +935,7 @@ func TestSortItems(t *testing.T) { inputs: []string{"A", "B", "C", "D", "E", "F", "G"}, required: []string{"A", "F"}, optional: []string{"B", "C", "D", "E", "G"}, - outputs: []string{"A", "B", "C"}, + outputs: []string{"A", "B", "C", "D"}, providers: []string{"aws", "null", "tls"}, }, }, @@ -948,7 +948,7 @@ func TestSortItems(t *testing.T) { inputs: []string{"A", "F", "B", "C", "D", "E", "G"}, required: []string{"A", "F"}, optional: []string{"B", "C", "D", "E", "G"}, - outputs: []string{"A", "B", "C"}, + outputs: []string{"A", "B", "C", "D"}, providers: []string{"aws", "null", "tls"}, }, }, @@ -961,7 +961,7 @@ func TestSortItems(t *testing.T) { inputs: []string{"A", "F", "G", "B", "C", "D", "E"}, required: []string{"A", "F"}, optional: []string{"G", "B", "C", "D", "E"}, - outputs: []string{"A", "B", "C"}, + outputs: []string{"A", "B", "C", "D"}, providers: []string{"aws", "null", "tls"}, }, }, diff --git a/terraform/testdata/full-example/outputs.tf b/terraform/testdata/full-example/outputs.tf index 1024f48..012ffb6 100644 --- a/terraform/testdata/full-example/outputs.tf +++ b/terraform/testdata/full-example/outputs.tf @@ -12,3 +12,8 @@ output "A" { output "B" { value = "b" } + +// D null result +output "D" { + value = null +}