1
15
16 package config
17
18 import (
19 "flag"
20 "os"
21 "path/filepath"
22 "reflect"
23 "testing"
24
25 "github.com/bazelbuild/bazel-gazelle/rule"
26 )
27
28 func TestCommonConfigurerFlags(t *testing.T) {
29 dir, err := os.MkdirTemp(os.Getenv("TEST_TEMPDIR"), "config_test")
30 if err != nil {
31 t.Fatal(err)
32 }
33 defer os.RemoveAll(dir)
34 dir, err = filepath.EvalSymlinks(dir)
35 if err != nil {
36 t.Fatal(err)
37 }
38 if err := os.WriteFile(filepath.Join(dir, "WORKSPACE"), nil, 0o666); err != nil {
39 t.Fatal(err)
40 }
41
42 c := New()
43 cc := &CommonConfigurer{}
44 fs := flag.NewFlagSet("test", flag.ContinueOnError)
45 cc.RegisterFlags(fs, "test", c)
46 args := []string{"-repo_root", dir, "-build_file_name", "x,y", "-lang", "go"}
47 if err := fs.Parse(args); err != nil {
48 t.Fatal(err)
49 }
50 if err := cc.CheckFlags(fs, c); err != nil {
51 t.Errorf("CheckFlags: %v", err)
52 }
53
54 if c.RepoRoot != dir {
55 t.Errorf("for RepoRoot, got %#v, want %#v", c.RepoRoot, dir)
56 }
57
58 wantBuildFileNames := []string{"x", "y"}
59 if !reflect.DeepEqual(c.ValidBuildFileNames, wantBuildFileNames) {
60 t.Errorf("for ValidBuildFileNames, got %#v, want %#v", c.ValidBuildFileNames, wantBuildFileNames)
61 }
62
63 wantLangs := []string{"go"}
64 if !reflect.DeepEqual(c.Langs, wantLangs) {
65 t.Errorf("for Langs, got %#v, want %#v", c.Langs, wantLangs)
66 }
67 }
68
69 func TestCommonConfigurerDirectives(t *testing.T) {
70 c := New()
71 cc := &CommonConfigurer{}
72 buildData := []byte(`# gazelle:build_file_name x,y
73 # gazelle:lang go`)
74 f, err := rule.LoadData(filepath.Join("test", "BUILD.bazel"), "", buildData)
75 if err != nil {
76 t.Fatal(err)
77 }
78 cc.Configure(c, "", f)
79 want := []string{"x", "y"}
80 if !reflect.DeepEqual(c.ValidBuildFileNames, want) {
81 t.Errorf("for ValidBuildFileNames, got %#v, want %#v", c.ValidBuildFileNames, want)
82 }
83
84 wantLangs := []string{"go"}
85 if !reflect.DeepEqual(c.Langs, wantLangs) {
86 t.Errorf("for Langs, got %#v, want %#v", c.Langs, wantLangs)
87 }
88 }
89
View as plain text