MCPcopy
hub / github.com/hashicorp/hcl / TestExprMap

Function TestExprMap

hcltest/mock_test.go:332–399  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

330}
331
332func TestExprMap(t *testing.T) {
333 tests := map[string]struct {
334 In hcl.Expression
335 Want []hcl.KeyValuePair
336 Diags string
337 }{
338 "as object": {
339 In: MockExprLiteral(cty.ObjectVal(map[string]cty.Value{
340 "name": cty.StringVal("test"),
341 "count": cty.NumberIntVal(2),
342 })),
343 Want: []hcl.KeyValuePair{
344 {
345 Key: MockExprLiteral(cty.StringVal("count")),
346 Value: MockExprLiteral(cty.NumberIntVal(2)),
347 },
348 {
349 Key: MockExprLiteral(cty.StringVal("name")),
350 Value: MockExprLiteral(cty.StringVal("test")),
351 },
352 },
353 },
354 "as map": {
355 In: MockExprLiteral(cty.MapVal(map[string]cty.Value{
356 "name": cty.StringVal("test"),
357 "version": cty.StringVal("2.0.0"),
358 })),
359 Want: []hcl.KeyValuePair{
360 {
361 Key: MockExprLiteral(cty.StringVal("name")),
362 Value: MockExprLiteral(cty.StringVal("test")),
363 },
364 {
365 Key: MockExprLiteral(cty.StringVal("version")),
366 Value: MockExprLiteral(cty.StringVal("2.0.0")),
367 },
368 },
369 },
370 "not map": {
371 In: MockExprLiteral(cty.ListVal([]cty.Value{
372 cty.StringVal("foo"),
373 cty.StringVal("bar"),
374 })),
375 Want: nil,
376 Diags: "map expression is required",
377 },
378 }
379
380 for name, tc := range tests {
381 t.Run(name, func(t *testing.T) {
382 got, diags := hcl.ExprMap(tc.In)
383 if tc.Diags != "" {
384 if diags.HasErrors() && !strings.Contains(diags.Error(), tc.Diags) {
385 t.Errorf("expected error %q, got %q", tc.Diags, diags)
386 }
387 if !diags.HasErrors() {
388 t.Errorf("expected diagnostic message %q", tc.Diags)
389 }

Callers

nothing calls this directly

Calls 5

MockExprLiteralFunction · 0.85
RunMethod · 0.80
HasErrorsMethod · 0.80
ExprMapMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected