|
1 | 1 | package sweeper |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "flag" |
4 | 5 | "fmt" |
5 | 6 | "log" |
6 | | - "os" |
7 | 7 | "strings" |
8 | 8 | "testing" |
9 | 9 |
|
@@ -33,21 +33,46 @@ type SweeperListFunc func(ResourceAction) error |
33 | 33 | type ResourceAction func(*transport_tpg.Config, *tpgresource.ResourceDataMock, map[string]interface{}) error |
34 | 34 |
|
35 | 35 | var ( |
36 | | - sweeperInventory map[string]*Sweeper |
| 36 | + flagSweep *string |
| 37 | + flagSweepAllowFailures *bool |
| 38 | + flagSweepRun *string |
| 39 | + sweeperInventory map[string]*Sweeper |
37 | 40 | ) |
38 | 41 |
|
39 | 42 | func init() { |
40 | 43 | sweeperInventory = make(map[string]*Sweeper) |
41 | 44 | } |
42 | 45 |
|
43 | | -// getSweeperConfig reads sweeper configuration from environment variables. |
44 | | -func getSweeperConfig() (string, bool, string) { |
45 | | - envSweepRegions := os.Getenv("SWEEPER_REGIONS") |
46 | | - |
47 | | - envSweepAllowFailures := os.Getenv("SWEEP_ALLOW_FAILURES") == "true" |
48 | | - |
49 | | - envSweepRun := os.Getenv("SWEEP_RUN") |
50 | | - return envSweepRegions, envSweepAllowFailures, envSweepRun |
| 46 | +// registerFlags checks for and gets existing flag definitions before trying to redefine them. |
| 47 | +func registerFlags() { |
| 48 | + // Check for existing flags in global CommandLine |
| 49 | + if f := flag.Lookup("sweep"); f != nil { |
| 50 | + // Use the Value.Get() interface to get the values |
| 51 | + if getter, ok := f.Value.(flag.Getter); ok { |
| 52 | + vs := getter.Get().(string) |
| 53 | + flagSweep = &vs |
| 54 | + } |
| 55 | + if f := flag.Lookup("sweep-allow-failures"); f != nil { |
| 56 | + if getter, ok := f.Value.(flag.Getter); ok { |
| 57 | + vb := getter.Get().(bool) |
| 58 | + flagSweepAllowFailures = &vb |
| 59 | + } |
| 60 | + } |
| 61 | + if f := flag.Lookup("sweep-run"); f != nil { |
| 62 | + if getter, ok := f.Value.(flag.Getter); ok { |
| 63 | + vs := getter.Get().(string) |
| 64 | + flagSweepRun = &vs |
| 65 | + } |
| 66 | + } |
| 67 | + } else { |
| 68 | + // Define our flags if they don't exist |
| 69 | + fsDefault := "" |
| 70 | + fsafDefault := true |
| 71 | + fsrDefault := "" |
| 72 | + flagSweep = &fsDefault |
| 73 | + flagSweepAllowFailures = &fsafDefault |
| 74 | + flagSweepRun = &fsrDefault |
| 75 | + } |
51 | 76 | } |
52 | 77 |
|
53 | 78 | // AddTestSweepers function adds a sweeper configuration to the inventory |
@@ -79,16 +104,16 @@ func GetSweeper(name string) (*Sweeper, bool) { |
79 | 104 |
|
80 | 105 | // ExecuteSweepers runs registered sweepers for specified regions |
81 | 106 | func ExecuteSweepers(t *testing.T) { |
82 | | - sweepRegions, allowFailures, sweepRun := getSweeperConfig() |
83 | | - |
84 | | - if sweepRegions != "" { |
85 | | - // parse sweepRegions contents for regions to run |
86 | | - regions := strings.Split(sweepRegions, ",") |
| 107 | + registerFlags() |
| 108 | + flag.Parse() |
| 109 | + if *flagSweep != "" { |
| 110 | + // parse flagSweep contents for regions to run |
| 111 | + regions := strings.Split(*flagSweep, ",") |
87 | 112 |
|
88 | | - // get filtered list of sweepers to run based on sweep-run |
89 | | - sweepers := filterSweepers(sweepRun, sweeperInventory) |
| 113 | + // get filtered list of sweepers to run based on sweep-run flag |
| 114 | + sweepers := filterSweepers(*flagSweepRun, sweeperInventory) |
90 | 115 |
|
91 | | - if err := runSweepers(t, regions, sweepers, allowFailures); err != nil { |
| 116 | + if err := runSweepers(t, regions, sweepers, *flagSweepAllowFailures); err != nil { |
92 | 117 | t.Errorf("error running sweepers: %v", err) |
93 | 118 | } |
94 | 119 | } else { |
|
0 commit comments