github.com/avenga/couper@v1.12.2/config/configload/merge_test.go (about) 1 package configload 2 3 import ( 4 "github.com/hashicorp/hcl/v2" 5 "github.com/hashicorp/hcl/v2/hclsyntax" 6 "github.com/zclconf/go-cty/cty" 7 "testing" 8 ) 9 10 func Test_absPath(t *testing.T) { 11 tests := []struct { 12 name string 13 attr *hclsyntax.Attribute 14 want cty.Value 15 }{ 16 {"absolute path", 17 &hclsyntax.Attribute{Expr: &hclsyntax.LiteralValueExpr{Val: cty.StringVal("/www")}, SrcRange: hcl.Range{Filename: "/dir1/case1.hcl"}}, 18 cty.StringVal("/www"), 19 }, 20 {"relative path", 21 &hclsyntax.Attribute{Expr: &hclsyntax.LiteralValueExpr{Val: cty.StringVal("./www")}, SrcRange: hcl.Range{Filename: "/dir2/case2.hcl"}}, 22 cty.StringVal("/dir2/www"), 23 }, 24 {"relative parent dir path", 25 &hclsyntax.Attribute{Expr: &hclsyntax.LiteralValueExpr{Val: cty.StringVal("./../subDir1/www")}, SrcRange: hcl.Range{Filename: "/dir3/case3.hcl"}}, 26 cty.StringVal("/subDir1/www"), 27 }, 28 {"relative parent dir path 2", 29 &hclsyntax.Attribute{Expr: &hclsyntax.LiteralValueExpr{Val: cty.StringVal("./../../../../../subDir2/www")}, SrcRange: hcl.Range{Filename: "/dir4/case4.hcl"}}, 30 cty.StringVal("/subDir2/www"), 31 }, 32 {"relative path w/o dot", 33 &hclsyntax.Attribute{Expr: &hclsyntax.LiteralValueExpr{Val: cty.StringVal("www")}, SrcRange: hcl.Range{Filename: "/dir5/case5.hcl"}}, 34 cty.StringVal("/dir5/www"), 35 }, 36 } 37 for _, tt := range tests { 38 t.Run(tt.name, func(t *testing.T) { 39 got := absPath(tt.attr) 40 gotExpr := got.(*hclsyntax.LiteralValueExpr) 41 gotValue, _ := gotExpr.Value(envContext) 42 if gotValue.Equals(tt.want).False() { 43 t.Errorf("absPath() = %q, want %q", gotValue.AsString(), tt.want.AsString()) 44 } 45 }) 46 } 47 }