From 63aaa43072504ac3d201bc4b8c6af4ee3365aa69 Mon Sep 17 00:00:00 2001 From: Damian Gryski Date: Fri, 31 Mar 2023 12:59:14 -0700 Subject: [PATCH] testing: add test.skip Fixes #3056 --- compileopts/config.go | 1 + main.go | 4 ++++ src/testing/benchmark.go | 2 +- src/testing/testing.go | 13 ++++++++----- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/compileopts/config.go b/compileopts/config.go index 117f5c20..1c6eb0de 100644 --- a/compileopts/config.go +++ b/compileopts/config.go @@ -545,6 +545,7 @@ type TestConfig struct { Verbose bool Short bool RunRegexp string + SkipRegexp string Count *int BenchRegexp string BenchTime string diff --git a/main.go b/main.go index 3501a166..6545779f 100644 --- a/main.go +++ b/main.go @@ -236,6 +236,9 @@ func Test(pkgName string, stdout, stderr io.Writer, options *compileopts.Options if testConfig.RunRegexp != "" { flags = append(flags, "-test.run="+testConfig.RunRegexp) } + if testConfig.SkipRegexp != "" { + flags = append(flags, "-test.skip="+testConfig.SkipRegexp) + } if testConfig.BenchRegexp != "" { flags = append(flags, "-test.bench="+testConfig.BenchRegexp) } @@ -1434,6 +1437,7 @@ func main() { flag.BoolVar(&testConfig.Verbose, "v", false, "verbose: print additional output") flag.BoolVar(&testConfig.Short, "short", false, "short: run smaller test suite to save time") flag.StringVar(&testConfig.RunRegexp, "run", "", "run: regexp of tests to run") + flag.StringVar(&testConfig.SkipRegexp, "skip", "", "run: regexp of tests to run") testConfig.Count = flag.Int("count", 1, "count: number of times to run tests/benchmarks `count` times") flag.StringVar(&testConfig.BenchRegexp, "bench", "", "run: regexp of benchmarks to run") flag.StringVar(&testConfig.BenchTime, "benchtime", "", "run each benchmark for duration `d`") diff --git a/src/testing/benchmark.go b/src/testing/benchmark.go index e7d98033..cfde2508 100644 --- a/src/testing/benchmark.go +++ b/src/testing/benchmark.go @@ -365,7 +365,7 @@ func runBenchmarks(matchString func(pat, str string) (bool, error), benchmarks [ return true } ctx := &benchContext{ - match: newMatcher(matchString, *matchBenchmarks, "-test.bench", ""), + match: newMatcher(matchString, *matchBenchmarks, "-test.bench", flagSkipRegexp), } var bs []InternalBenchmark for _, Benchmark := range benchmarks { diff --git a/src/testing/testing.go b/src/testing/testing.go index 6d7d6184..5c81a312 100644 --- a/src/testing/testing.go +++ b/src/testing/testing.go @@ -24,10 +24,11 @@ import ( // Testing flags. var ( - flagVerbose bool - flagShort bool - flagRunRegexp string - flagCount int + flagVerbose bool + flagShort bool + flagRunRegexp string + flagSkipRegexp string + flagCount int ) var initRan bool @@ -42,6 +43,8 @@ func Init() { flag.BoolVar(&flagVerbose, "test.v", false, "verbose: print additional output") flag.BoolVar(&flagShort, "test.short", false, "short: run smaller test suite to save time") flag.StringVar(&flagRunRegexp, "test.run", "", "run: regexp of tests to run") + flag.StringVar(&flagSkipRegexp, "test.skip", "", "skip: regexp of tests to run") + flag.IntVar(&flagCount, "test.count", 1, "run each test or benchmark `count` times") initBenchmarkFlags() @@ -499,7 +502,7 @@ func (m *M) Run() (code int) { func runTests(matchString func(pat, str string) (bool, error), tests []InternalTest) (ran, ok bool) { ok = true - ctx := newTestContext(newMatcher(matchString, flagRunRegexp, "-test.run", "")) + ctx := newTestContext(newMatcher(matchString, flagRunRegexp, "-test.run", flagSkipRegexp)) t := &T{ common: common{ output: &logger{logToStdout: flagVerbose},