cmd/screentest,internal/screentest: add ints function, release notes tests
This CL is preparation for converting release notes to Markdown.
We want to use the screentest tool to help us minimize changes.
- internal/screentest: add a template function to generate a sequence
of integers
- cmd/screentest/testdata: add relnotes.txt, which has a test for
every release note.
Change-Id: Ibeb2419637bc73d93b88d4c378f5396967d3d70f
Reviewed-on: https://go-review.googlesource.com/c/website/+/539496
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
diff --git a/cmd/screentest/testdata/relnotes.txt b/cmd/screentest/testdata/relnotes.txt
new file mode 100644
index 0000000..7c2177e
--- /dev/null
+++ b/cmd/screentest/testdata/relnotes.txt
@@ -0,0 +1,13 @@
+windowsize 1536x960
+compare https://go.dev http://localhost:6060/go.dev
+
+
+test rl0
+pathname /doc/go1
+capture fullscreen
+
+{{range ints 1 22}}
+ test rl{{.}}
+ pathname /doc/go1.{{.}}
+ capture fullscreen
+{{end}}
diff --git a/internal/screentest/screentest.go b/internal/screentest/screentest.go
index 4c917d6..ecbb4e8 100644
--- a/internal/screentest/screentest.go
+++ b/internal/screentest/screentest.go
@@ -416,7 +416,16 @@
// readTests parses the testcases from a text file.
func readTests(file string, vars map[string]string) ([]*testcase, error) {
- tmpl, err := template.ParseFiles(file)
+ tmpl := template.New(filepath.Base(file)).Funcs(template.FuncMap{
+ "ints": func(start, end int) []int {
+ var out []int
+ for i := start; i < end; i++ {
+ out = append(out, i)
+ }
+ return out
+ },
+ })
+ _, err := tmpl.ParseFiles(file)
if err != nil {
return nil, fmt.Errorf("template.ParseFiles(%q): %w", file, err)
}