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  }