github.com/best4tires/kit@v1.0.5/env/env_test.go (about)

     1  package env
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"path/filepath"
     7  	"testing"
     8  )
     9  
    10  func TestEnvExpand(t *testing.T) {
    11  	tests := []struct {
    12  		in    []Var
    13  		probe map[string]string
    14  	}{
    15  		{
    16  			in: []Var{
    17  				MkVar("s", "b"),
    18  				MkVar("c", "d"),
    19  			},
    20  			probe: map[string]string{
    21  				"s": "b",
    22  				"c": "d",
    23  			},
    24  		},
    25  		{
    26  			in: []Var{
    27  				MkVar("esc", "foo\\bar"),
    28  				MkVar("glob", "glob.attr"),
    29  				MkVar("p1", "{glob}_v1"),
    30  				MkVar("p2", "v2_{glob}"),
    31  				MkVar("p3", "v3_{glob}_v4"),
    32  				MkVar("pesc", "p_{esc}_s"),
    33  			},
    34  			probe: map[string]string{
    35  				"p1":   "glob.attr_v1",
    36  				"p2":   "v2_glob.attr",
    37  				"p3":   "v3_glob.attr_v4",
    38  				"pesc": "p_foo\\bar_s",
    39  			},
    40  		},
    41  	}
    42  
    43  	for i, test := range tests {
    44  		t.Run(fmt.Sprintf("test_%02d", i), func(t *testing.T) {
    45  			env := Load(test.in...)
    46  			for k, v := range test.probe {
    47  				res, ok := env.String(k)
    48  				if !ok {
    49  					t.Fatalf("expect key %q present, but it is not", k)
    50  				}
    51  				if res != v {
    52  					t.Fatalf("value for %q: want %q, have %q", k, v, res)
    53  				}
    54  			}
    55  		})
    56  	}
    57  }
    58  
    59  func TestEnvFilesExpand(t *testing.T) {
    60  	wd, err := os.Getwd()
    61  	if err != nil {
    62  		t.Fatalf("getwd: %v", err)
    63  	}
    64  	wd, err = filepath.Abs(wd)
    65  	if err != nil {
    66  		t.Fatalf("abs: %v", err)
    67  	}
    68  	defer os.Chdir(wd)
    69  	os.Chdir(filepath.Join(wd, "test_files", "sub_1", "sub_2"))
    70  
    71  	tests := []struct {
    72  		in    []Var
    73  		probe map[string]string
    74  	}{
    75  		{
    76  			in: []Var{
    77  				MkVar("s", "b"),
    78  				MkVar("c", "d"),
    79  			},
    80  			probe: map[string]string{
    81  				"s": "b",
    82  				"c": "d",
    83  			},
    84  		},
    85  		{
    86  			in: []Var{
    87  				MkVar("esc", "foo\\bar"),
    88  				MkVar("glob", "glob.attr"),
    89  				MkVar("p1", "{glob}_v1"),
    90  				MkVar("p2", "v2_{glob}"),
    91  				MkVar("p3", "v3_{glob}_v4"),
    92  				MkVar("pesc", "p_{esc}_s"),
    93  			},
    94  			probe: map[string]string{
    95  				"p1":         "glob.attr_v1",
    96  				"p2":         "v2_glob.attr",
    97  				"p3":         "v3_glob.attr_v4",
    98  				"pesc":       "p_foo\\bar_s",
    99  				"global_dsn": "user\\domain@foo.bar",
   100  				"loc_dsn":    "dsn=user\\domain@foo.bar/local",
   101  			},
   102  		},
   103  	}
   104  
   105  	for i, test := range tests {
   106  		t.Run(fmt.Sprintf("test_%02d", i), func(t *testing.T) {
   107  			env := Load(test.in...)
   108  			for k, v := range test.probe {
   109  				res, ok := env.String(k)
   110  				if !ok {
   111  					t.Fatalf("expect key %q present, but it is not", k)
   112  				}
   113  				if res != v {
   114  					t.Fatalf("value for %q: want %q, have %q", k, v, res)
   115  				}
   116  			}
   117  		})
   118  	}
   119  }