Skip to content

Commit 8028aaf

Browse files
authored
Revert "teamcity/sweepers: replace flags to envvars to use teamcity-go-test command" (#15802)
1 parent dd88ba0 commit 8028aaf

File tree

2 files changed

+45
-57
lines changed

2 files changed

+45
-57
lines changed

mmv1/third_party/terraform/.teamcity/components/builds/build_steps.kt

Lines changed: 2 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -77,46 +77,9 @@ fun BuildSteps.downloadTerraformBinary() {
7777

7878
// RunSweepers runs sweepers, and relies on set build configuration parameters
7979
fun BuildSteps.runSweepers(sweeperStepName: String) {
80-
step(ScriptBuildStep {
81-
name = "Compile Sweeper Test Binary"
82-
workingDir = "%PACKAGE_PATH%"
83-
scriptContent = """
84-
#!/bin/bash
85-
export TEST_FILE_COUNT=$(ls ./*_test.go | wc -l)
86-
if test ${'$'}TEST_FILE_COUNT -gt "0"; then
87-
echo "Compiling sweeper test binary"
88-
go test -c -o test-binary
89-
else
90-
echo "Skipping compilation of test binary; no Go test files found"
91-
fi
92-
""".trimIndent()
93-
})
94-
95-
step(ScriptBuildStep {
80+
step(ScriptBuildStep{
9681
name = sweeperStepName
97-
workingDir = "%PACKAGE_PATH%"
98-
scriptContent = """
99-
#!/bin/bash
100-
if ! test -f "./test-binary"; then
101-
echo "Skipping sweeper execution; file ./test-binary does not exist."
102-
exit 0
103-
fi
104-
105-
# Set sweeper environment variables
106-
export SWEEPER_REGIONS="%SWEEPER_REGIONS%"
107-
export SWEEP_ALLOW_FAILURES="true"
108-
export SWEEP_RUN="%SWEEP_RUN%"
109-
110-
export TEST_COUNT=${'$'}(./test-binary -test.list="%TEST_PREFIX%" | wc -l)
111-
echo "Found ${'$'}{TEST_COUNT} sweeper tests that match the given test prefix %TEST_PREFIX%"
112-
if test ${'$'}TEST_COUNT -le "0"; then
113-
echo "Skipping sweeper execution; no tests to run"
114-
exit 0
115-
fi
116-
117-
echo "Starting sweeper tests"
118-
./test-binary -test.list="%TEST_PREFIX%" | teamcity-go-test -test ./test-binary -parallelism "%PARALLELISM%" -timeout "%TIMEOUT%h"
119-
""".trimIndent()
82+
scriptContent = "go test -v \"%PACKAGE_PATH%\" -run=\"%TEST_PREFIX%\" -sweep=\"%SWEEPER_REGIONS%\" -sweep-allow-failures -sweep-run=\"%SWEEP_RUN%\" -timeout 30m -json"
12083
})
12184
}
12285

mmv1/third_party/terraform/sweeper/hashi_sweeper_fork.go

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package sweeper
22

33
import (
4+
"flag"
45
"fmt"
56
"log"
6-
"os"
77
"strings"
88
"testing"
99

@@ -33,21 +33,46 @@ type SweeperListFunc func(ResourceAction) error
3333
type ResourceAction func(*transport_tpg.Config, *tpgresource.ResourceDataMock, map[string]interface{}) error
3434

3535
var (
36-
sweeperInventory map[string]*Sweeper
36+
flagSweep *string
37+
flagSweepAllowFailures *bool
38+
flagSweepRun *string
39+
sweeperInventory map[string]*Sweeper
3740
)
3841

3942
func init() {
4043
sweeperInventory = make(map[string]*Sweeper)
4144
}
4245

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+
}
5176
}
5277

5378
// AddTestSweepers function adds a sweeper configuration to the inventory
@@ -79,16 +104,16 @@ func GetSweeper(name string) (*Sweeper, bool) {
79104

80105
// ExecuteSweepers runs registered sweepers for specified regions
81106
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, ",")
87112

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)
90115

91-
if err := runSweepers(t, regions, sweepers, allowFailures); err != nil {
116+
if err := runSweepers(t, regions, sweepers, *flagSweepAllowFailures); err != nil {
92117
t.Errorf("error running sweepers: %v", err)
93118
}
94119
} else {

0 commit comments

Comments
 (0)