-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
test_codegen.go
55 lines (45 loc) · 1.36 KB
/
test_codegen.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// Copyright (c) 2021 Tailscale Inc & AUTHORS All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// build ignore
package main
import (
_ "embed"
"fmt"
"log"
"os"
"time"
"github.com/dave/jennifer/jen"
"github.com/iancoleman/strcase"
"tailscale.com/tstest/integration/vms"
)
func main() {
f := jen.NewFile("vms")
f.Comment("Code generated by tstest/integration/vms/gen/test_codegen.go DO NOT EDIT.")
ptr := jen.Op("*")
for i, d := range vms.Distros {
f.Func().
Id("TestRun" + strcase.ToCamel(d.Name)).
Params(jen.Id("t").Add(ptr).Qual("testing", "T")).
BlockFunc(func(g *jen.Group) {
g.Id("t").Dot("Parallel").Call()
g.Id("setupTests").Call(jen.Id("t"))
g.Id("testOneDistribution").Call(jen.Id("t"), jen.Lit(i), jen.Id("Distros").Index(jen.Lit(i)))
})
}
os.Remove("top_level_test.go")
fout, err := os.Create("top_level_test.go")
if err != nil {
log.Fatal(err)
}
defer fout.Close()
fmt.Fprintf(fout, "// Copyright (c) %d Tailscale Inc & AUTHORS All rights reserved.\n", time.Now().Year())
fout.WriteString("// Use of this source code is governed by a BSD-style\n")
fout.WriteString("// license that can be found in the LICENSE file.\n")
fout.WriteString("\n")
fout.WriteString("// +build linux\n\n")
err = f.Render(fout)
if err != nil {
log.Fatal(err)
}
}