/
githubmirror
/
terraform
Обзор
Документация
Войти
/
githubmirror
/
terraform
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
internal/lang/funcs/datetime_test.go
126 строк
3 KB
Kristin Laemmert
funcs: pow() and log() no longer panic when result is NaN (#38912)
27 июл 2026, 22:06
Не верифицирован
27 июл 2026, 22:06
12f1c19
Код
Авторство
О чём код?
// Copyright IBM Corp. 2014, 2026 // SPDX-License-Identifier: BUSL-1.1 package funcs import ( "fmt" "testing" "time" "github.com/zclconf/go-cty/cty" ) func TestTimestamp(t *testing.T) { currentTime := time.Now().UTC() result, err := TimestampFunc.Call([]cty.Value{}) if err != nil { t.Fatalf("err: %s", err) } resultTime, err := time.Parse(time.RFC3339, result.AsString()) if err != nil { t.Fatalf("Error parsing timestamp: %s", err) } if resultTime.Sub(currentTime).Seconds() > 10.0 { t.Fatalf("Timestamp Diff too large. Expected: %s\nReceived: %s", currentTime.Format(time.RFC3339), result.AsString()) } } func TestTimeCmp(t *testing.T) { tests := []struct { TimeA, TimeB cty.Value Want cty.Value Err string }{ { cty.StringVal("2017-11-22T00:00:00Z"), cty.StringVal("2017-11-22T00:00:00Z"), cty.Zero, ``, }, { cty.StringVal("2017-11-22T00:00:00Z"), cty.StringVal("2017-11-22T01:00:00+01:00"), cty.Zero, ``, }, { cty.StringVal("2017-11-22T00:00:01Z"), cty.StringVal("2017-11-22T01:00:00+01:00"), cty.NumberIntVal(1), ``, }, { cty.StringVal("2017-11-22T01:00:00Z"), cty.StringVal("2017-11-22T00:59:00-01:00"), cty.NumberIntVal(-1), ``, }, { cty.StringVal("2017-11-22T01:00:00+01:00"), cty.StringVal("2017-11-22T01:00:00-01:00"), cty.NumberIntVal(-1), ``, }, { cty.StringVal("2017-11-22T01:00:00-01:00"), cty.StringVal("2017-11-22T01:00:00+01:00"), cty.NumberIntVal(1), ``, }, { cty.StringVal("2017-11-22T00:00:00Z"), cty.StringVal("bloop"), cty.UnknownVal(cty.String).RefineNotNull(), `not a valid RFC3339 timestamp: cannot use "bloop" as year`, }, { cty.StringVal("2017-11-22 00:00:00Z"), cty.StringVal("2017-11-22T00:00:00Z"), cty.UnknownVal(cty.String).RefineNotNull(), `not a valid RFC3339 timestamp: missing required time introducer 'T'`, }, { cty.StringVal("2017-11-22T00:00:00Z"), cty.UnknownVal(cty.String), cty.UnknownVal(cty.Number).RefineNotNull(), ``, }, { cty.UnknownVal(cty.String), cty.StringVal("2017-11-22T00:00:00Z"), cty.UnknownVal(cty.Number).RefineNotNull(), ``, }, { cty.UnknownVal(cty.String), cty.UnknownVal(cty.String), cty.UnknownVal(cty.Number).RefineNotNull(), ``, }, } for _, test := range tests { t.Run(fmt.Sprintf("TimeCmp(%#v, %#v)", test.TimeA, test.TimeB), func(t *testing.T) { got, err := TimeCmpFunc.Call([]cty.Value{test.TimeA, test.TimeB}) if test.Err != "" { if err == nil { t.Fatal("succeeded; want error") } if got := err.Error(); got != test.Err { t.Errorf("wrong error message\ngot: %s\nwant: %s", got, test.Err) } return } else if err != nil { t.Fatalf("unexpected error: %s", err) } if !got.RawEquals(test.Want) { t.Errorf("wrong result\ngot: %#v\nwant: %#v", got, test.Want) } }) } }