package main import ( "go/parser" "go/token" "os" "path/filepath" "strconv" "strings" "testing" ) func TestToolDoesNotImportExamplePlugins(t *testing.T) { roots := []string{".", filepath.Join("..", "..", "internal", "build")} fset := token.NewFileSet() for _, root := range roots { entries, err := os.ReadDir(root) if err != nil { t.Fatal(err) } for _, entry := range entries { name := entry.Name() if entry.IsDir() || !strings.HasSuffix(name, ".go") { continue } file, err := parser.ParseFile(fset, filepath.Join(root, name), nil, parser.ImportsOnly) if err != nil { t.Fatal(err) } for _, spec := range file.Imports { path, err := strconv.Unquote(spec.Path.Value) if err != nil { t.Fatal(err) } if strings.Contains(path, "examples/hello") { t.Fatalf("%s imports %s", name, path) } } } } }