Skip to content

Commit 8177bb8

Browse files
committed
Add some examples/tests for "pkg/templatelib" (94.9% coverage)
1 parent e9173c5 commit 8177bb8

File tree

2 files changed

+193
-2
lines changed

2 files changed

+193
-2
lines changed

pkg/templatelib/lib.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,6 @@ func stringsModifierActionFactory(a func(string, string) string) func([]string,
6767
}
6868
}
6969

70-
// TODO write some tests for these
71-
7270
var FuncMap = template.FuncMap{
7371
// {{- $isGitHub := hasPrefix "https://github.com/" $url -}}
7472
// {{- $isHtml := hasSuffix ".html" $url -}}

pkg/templatelib/lib_example_test.go

Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,193 @@
1+
package templatelib_test
2+
3+
import (
4+
"os"
5+
"text/template"
6+
7+
"github.com/docker-library/go-dockerlibrary/pkg/templatelib"
8+
)
9+
10+
func ExampleFuncMap_prefixSuffix() {
11+
tmpl, err := template.New("github-or-html").Funcs(templatelib.FuncMap).Parse(`
12+
{{- . -}}
13+
14+
{{- if hasPrefix "https://github.com/" . -}}
15+
{{- " " -}} GitHub
16+
{{- end -}}
17+
18+
{{- if hasSuffix ".html" . -}}
19+
{{- " " -}} HTML
20+
{{- end -}}
21+
22+
{{- "\n" -}}
23+
`)
24+
if err != nil {
25+
panic(err)
26+
}
27+
28+
err = tmpl.Execute(os.Stdout, "https://github.com/example/example")
29+
if err != nil {
30+
panic(err)
31+
}
32+
33+
err = tmpl.Execute(os.Stdout, "https://example.com/test.html")
34+
if err != nil {
35+
panic(err)
36+
}
37+
38+
err = tmpl.Execute(os.Stdout, "https://example.com")
39+
if err != nil {
40+
panic(err)
41+
}
42+
43+
err = tmpl.Execute(os.Stdout, "https://github.com/example/example/raw/master/test.html")
44+
if err != nil {
45+
panic(err)
46+
}
47+
48+
// Output:
49+
// https://github.com/example/example GitHub
50+
// https://example.com/test.html HTML
51+
// https://example.com
52+
// https://github.com/example/example/raw/master/test.html GitHub HTML
53+
}
54+
55+
func ExampleFuncMap_ternary() {
56+
tmpl, err := template.New("huge-if-true").Funcs(templatelib.FuncMap).Parse(`
57+
{{- range $a := . -}}
58+
{{ printf "%#v: %s\n" $a (ternary "HUGE" "not so huge" $a) }}
59+
{{- end -}}
60+
`)
61+
62+
err = tmpl.Execute(os.Stdout, []interface{}{
63+
true,
64+
false,
65+
"true",
66+
"false",
67+
"",
68+
nil,
69+
1,
70+
0,
71+
9001,
72+
[]bool{},
73+
[]bool{false},
74+
})
75+
if err != nil {
76+
panic(err)
77+
}
78+
79+
// Output:
80+
// true: HUGE
81+
// false: not so huge
82+
// "true": HUGE
83+
// "false": HUGE
84+
// "": not so huge
85+
// <nil>: not so huge
86+
// 1: HUGE
87+
// 0: not so huge
88+
// 9001: HUGE
89+
// []bool{}: not so huge
90+
// []bool{false}: HUGE
91+
}
92+
93+
func ExampleFuncMap_firstLast() {
94+
tmpl, err := template.New("first-and-last").Funcs(templatelib.FuncMap).Parse(`First: {{ . | first }}, Last: {{ . | last }}`)
95+
96+
err = tmpl.Execute(os.Stdout, []interface{}{
97+
"a",
98+
"b",
99+
"c",
100+
})
101+
if err != nil {
102+
panic(err)
103+
}
104+
105+
// Output:
106+
// First: a, Last: c
107+
}
108+
109+
func ExampleFuncMap_json() {
110+
tmpl, err := template.New("json").Funcs(templatelib.FuncMap).Parse(`
111+
{{- json . -}}
112+
`)
113+
114+
err = tmpl.Execute(os.Stdout, map[string]interface{}{
115+
"a": []string{"1", "2", "3"},
116+
"b": map[string]bool{"1": true, "2": false, "3": true},
117+
"c": nil,
118+
})
119+
if err != nil {
120+
panic(err)
121+
}
122+
123+
// Output:
124+
// {"a":["1","2","3"],"b":{"1":true,"2":false,"3":true},"c":null}
125+
}
126+
127+
func ExampleFuncMap_join() {
128+
tmpl, err := template.New("join").Funcs(templatelib.FuncMap).Parse(`
129+
Array: {{ . | join ", " }}{{ "\n" -}}
130+
Args: {{ join ", " "a" "b" "c" -}}
131+
`)
132+
133+
err = tmpl.Execute(os.Stdout, []string{
134+
"1",
135+
"2",
136+
"3",
137+
})
138+
if err != nil {
139+
panic(err)
140+
}
141+
142+
// Output:
143+
// Array: 1, 2, 3
144+
// Args: a, b, c
145+
}
146+
147+
func ExampleFuncMap_trimReplaceGitToHttps() {
148+
tmpl, err := template.New("git-to-https").Funcs(templatelib.FuncMap).Parse(`
149+
{{- range . -}}
150+
{{- . | replace "git://" "https://" | trimSuffixes ".git" }}{{ "\n" -}}
151+
{{- end -}}
152+
`)
153+
154+
err = tmpl.Execute(os.Stdout, []string{
155+
"git://github.com/jsmith/some-repo.git",
156+
"https://github.com/jsmith/some-repo.git",
157+
"https://github.com/jsmith/some-repo",
158+
})
159+
if err != nil {
160+
panic(err)
161+
}
162+
163+
// Output:
164+
// https://github.com/jsmith/some-repo
165+
// https://github.com/jsmith/some-repo
166+
// https://github.com/jsmith/some-repo
167+
}
168+
169+
func ExampleFuncMap_trimReplaceGitToGo() {
170+
tmpl, err := template.New("git-to-go").Funcs(templatelib.FuncMap).Parse(`
171+
{{- range . -}}
172+
{{- . | trimPrefixes "git://" "http://" "https://" "ssh://" | trimSuffixes ".git" }}{{ "\n" -}}
173+
{{- end -}}
174+
`)
175+
176+
err = tmpl.Execute(os.Stdout, []string{
177+
"git://github.com/jsmith/some-repo.git",
178+
"https://github.com/jsmith/some-repo.git",
179+
"https://github.com/jsmith/some-repo",
180+
"ssh://github.com/jsmith/some-repo.git",
181+
"github.com/jsmith/some-repo",
182+
})
183+
if err != nil {
184+
panic(err)
185+
}
186+
187+
// Output:
188+
// github.com/jsmith/some-repo
189+
// github.com/jsmith/some-repo
190+
// github.com/jsmith/some-repo
191+
// github.com/jsmith/some-repo
192+
// github.com/jsmith/some-repo
193+
}

0 commit comments

Comments
 (0)