github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/cli/templates/templates_test.go (about) 1 package templates 2 3 import ( 4 "bytes" 5 "testing" 6 7 "gotest.tools/v3/assert" 8 is "gotest.tools/v3/assert/cmp" 9 ) 10 11 // GitHub #32120 12 func TestParseJSONFunctions(t *testing.T) { 13 tm, err := Parse(`{{json .Ports}}`) 14 assert.NilError(t, err) 15 16 var b bytes.Buffer 17 assert.NilError(t, tm.Execute(&b, map[string]string{"Ports": "0.0.0.0:2->8/udp"})) 18 want := "\"0.0.0.0:2->8/udp\"" 19 assert.Check(t, is.Equal(want, b.String())) 20 } 21 22 func TestParseStringFunctions(t *testing.T) { 23 tm, err := Parse(`{{join (split . ":") "/"}}`) 24 assert.NilError(t, err) 25 26 var b bytes.Buffer 27 assert.NilError(t, tm.Execute(&b, "text:with:colon")) 28 want := "text/with/colon" 29 assert.Check(t, is.Equal(want, b.String())) 30 } 31 32 func TestNewParse(t *testing.T) { 33 tm, err := NewParse("foo", "this is a {{ . }}") 34 assert.NilError(t, err) 35 36 var b bytes.Buffer 37 assert.NilError(t, tm.Execute(&b, "string")) 38 want := "this is a string" 39 assert.Check(t, is.Equal(want, b.String())) 40 } 41 42 func TestParseTruncateFunction(t *testing.T) { 43 source := "tupx5xzf6hvsrhnruz5cr8gwp" 44 45 testCases := []struct { 46 template string 47 expected string 48 }{ 49 { 50 template: `{{truncate . 5}}`, 51 expected: "tupx5", 52 }, 53 { 54 template: `{{truncate . 25}}`, 55 expected: "tupx5xzf6hvsrhnruz5cr8gwp", 56 }, 57 { 58 template: `{{truncate . 30}}`, 59 expected: "tupx5xzf6hvsrhnruz5cr8gwp", 60 }, 61 { 62 template: `{{pad . 3 3}}`, 63 expected: " tupx5xzf6hvsrhnruz5cr8gwp ", 64 }, 65 } 66 67 for _, testCase := range testCases { 68 testCase := testCase 69 70 tm, err := Parse(testCase.template) 71 assert.NilError(t, err) 72 73 t.Run("Non Empty Source Test with template: "+testCase.template, func(t *testing.T) { 74 var b bytes.Buffer 75 assert.NilError(t, tm.Execute(&b, source)) 76 assert.Check(t, is.Equal(testCase.expected, b.String())) 77 }) 78 79 t.Run("Empty Source Test with template: "+testCase.template, func(t *testing.T) { 80 var c bytes.Buffer 81 assert.NilError(t, tm.Execute(&c, "")) 82 assert.Check(t, is.Equal("", c.String())) 83 }) 84 85 t.Run("Nil Source Test with template: "+testCase.template, func(t *testing.T) { 86 var c bytes.Buffer 87 assert.Check(t, tm.Execute(&c, nil) != nil) 88 assert.Check(t, is.Equal("", c.String())) 89 }) 90 } 91 }