/
githubmirror
/
terraform
Обзор
Документация
Войти
/
githubmirror
/
terraform
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
internal/repl/format_test.go
198 строк
3 KB
Sarah French
fix: Remove deprecation marks when formatting output for the `console` command. (#38676)
04 июн 2026, 17:56
Не верифицирован
04 июн 2026, 17:56
b2fc2ca
Код
Авторство
О чём код?
// Copyright IBM Corp. 2014, 2026 // SPDX-License-Identifier: BUSL-1.1 package repl import ( "fmt" "testing" "github.com/hashicorp/terraform/internal/lang/marks" "github.com/zclconf/go-cty/cty" ) func TestFormatValue(t *testing.T) { tests := []struct { Val cty.Value Want string }{ { cty.NullVal(cty.DynamicPseudoType), `null`, }, { cty.NullVal(cty.String), `tostring(null)`, }, { cty.NullVal(cty.Number), `tonumber(null)`, }, { cty.NullVal(cty.Bool), `tobool(null)`, }, { cty.NullVal(cty.List(cty.String)), `tolist(null) /* of string */`, }, { cty.NullVal(cty.Set(cty.Number)), `toset(null) /* of number */`, }, { cty.NullVal(cty.Map(cty.Bool)), `tomap(null) /* of bool */`, }, { cty.NullVal(cty.Object(map[string]cty.Type{"a": cty.Bool})), `null /* object */`, // Ideally this would display the full object type, including its attributes }, { cty.UnknownVal(cty.DynamicPseudoType), `(known after apply)`, }, { cty.StringVal(""), `""`, }, { cty.StringVal("hello"), `"hello"`, }, { cty.StringVal("hello\nworld"), `<<EOT hello world EOT`, }, { cty.StringVal("EOR\nEOS\nEOT\nEOU"), `<<EOT_ EOR EOS EOT EOU EOT_`, }, { cty.ObjectVal(map[string]cty.Value{"foo": cty.StringVal("boop\nbeep")}), `{ "foo" = <<-EOT boop beep EOT }`, }, { cty.Zero, `0`, }, { cty.NumberIntVal(5), `5`, }, { cty.NumberIntVal(1234567890), `1234567890`, }, { cty.NumberFloatVal(5.2), `5.2`, }, { cty.NumberFloatVal(123456789.0), `123456789`, }, { cty.NumberFloatVal(123456789.01), `123456789.01`, }, { cty.False, `false`, }, { cty.True, `true`, }, { cty.EmptyObjectVal, `{}`, }, { cty.ObjectVal(map[string]cty.Value{ "a": cty.StringVal("b"), }), `{ "a" = "b" }`, }, { cty.ObjectVal(map[string]cty.Value{ "a": cty.StringVal("b"), "c": cty.StringVal("d"), }), `{ "a" = "b" "c" = "d" }`, }, { cty.MapValEmpty(cty.String), `tomap({})`, }, { cty.EmptyTupleVal, `[]`, }, { cty.TupleVal([]cty.Value{ cty.StringVal("b"), }), `[ "b", ]`, }, { cty.TupleVal([]cty.Value{ cty.StringVal("b"), cty.StringVal("d"), }), `[ "b", "d", ]`, }, { cty.ListValEmpty(cty.String), `tolist([])`, }, { cty.SetValEmpty(cty.String), `toset([])`, }, { cty.StringVal("a sensitive value").Mark(marks.Sensitive), "(sensitive value)", }, { cty.StringVal("an ephemeral value").Mark(marks.Ephemeral), "(ephemeral value)", }, { cty.StringVal("I'm a deprecated string value").Mark(marks.Deprecation), `"I'm a deprecated string value"`, // We don't render deprecated values differently, but we need to ensure the deprecation mark doesn't interfere with formatting }, } for _, test := range tests { t.Run(fmt.Sprintf("%#v", test.Val), func(t *testing.T) { got := FormatValue(test.Val, 0) if got != test.Want { t.Errorf("wrong result\nvalue: %#v\ngot: %s\nwant: %s", test.Val, got, test.Want) } }) } }