1 // Copyright 2023 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
20 if err := run(); err != nil {
26 generators, err := filepath.Glob("./generators/*.go")
28 return fmt.Errorf("reading generators: %v", err)
32 // Grab a pattern, if any.
34 if pattern := os.Getenv("GOTRACETEST"); pattern != "" {
35 re, err = regexp.Compile(pattern)
37 return fmt.Errorf("compiling regexp %q for GOTRACETEST: %v", pattern, err)
41 if err := os.MkdirAll(genroot, 0777); err != nil {
42 return fmt.Errorf("creating generated root: %v", err)
44 for _, path := range generators {
45 name := filepath.Base(path)
46 name = name[:len(name)-len(filepath.Ext(name))]
48 // Skip if we have a pattern and this test doesn't match.
49 if re != nil && !re.MatchString(name) {
53 fmt.Fprintf(os.Stderr, "generating %s... ", name)
56 testPath := filepath.Join(genroot, fmt.Sprintf("%s.test", name))
59 cmd := exec.Command("go", "run", path, testPath)
60 if out, err := cmd.CombinedOutput(); err != nil {
61 return fmt.Errorf("running generator %s: %v:\n%s", name, err, out)
63 fmt.Fprintln(os.Stderr)