From f29757de3b436d412ed284e0d29ec2353c1bb904 Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Sat, 12 Jan 2019 20:18:05 +0000 Subject: [PATCH] test_all: make a way of ignoring integration test failures Use this to ignore known failures --- fstest/test_all/config.go | 16 +++++++++++----- fstest/test_all/config.yaml | 8 ++++++++ fstest/test_all/run.go | 15 ++++++++++++++- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/fstest/test_all/config.go b/fstest/test_all/config.go index 5bacc65c7..06c9666b0 100644 --- a/fstest/test_all/config.go +++ b/fstest/test_all/config.go @@ -28,11 +28,12 @@ type Test struct { // // FIXME make bucket based remotes set sub-dir automatically??? type Backend struct { - Backend string // name of the backend directory - Remote string // name of the test remote - SubDir bool // set to test with -sub-dir - FastList bool // set to test with -fast-list - OneOnly bool // set to run only one backend test at once + Backend string // name of the backend directory + Remote string // name of the test remote + SubDir bool // set to test with -sub-dir + FastList bool // set to test with -fast-list + OneOnly bool // set to run only one backend test at once + Ignore []string // test names to ignore the failure of } // MakeRuns creates Run objects the Backend and Test @@ -48,6 +49,10 @@ func (b *Backend) MakeRuns(t *Test) (runs []*Run) { if b.FastList && t.FastList { fastlists = append(fastlists, true) } + ignore := make(map[string]struct{}, len(b.Ignore)) + for _, item := range b.Ignore { + ignore[item] = struct{}{} + } for _, subdir := range subdirs { for _, fastlist := range fastlists { run := &Run{ @@ -59,6 +64,7 @@ func (b *Backend) MakeRuns(t *Test) (runs []*Run) { NoRetries: t.NoRetries, OneOnly: b.OneOnly, NoBinary: t.NoBinary, + Ignore: ignore, } if t.AddBackend { run.Path = path.Join(run.Path, b.Backend) diff --git a/fstest/test_all/config.yaml b/fstest/test_all/config.yaml index cbdc1a340..819151863 100644 --- a/fstest/test_all/config.yaml +++ b/fstest/test_all/config.yaml @@ -65,10 +65,14 @@ backends: remote: "TestS3DigitalOcean:" subdir: true fastlist: true + ignore: + - TestIntegration/FsMkdir/FsPutFiles/FsCopy - backend: "s3" remote: "TestS3Ceph:" subdir: true fastlist: true + ignore: + - TestIntegration/FsMkdir/FsPutFiles/FsCopy - backend: "sftp" remote: "TestSftp:" subdir: false @@ -81,6 +85,8 @@ backends: remote: "TestSwiftCeph:" subdir: true fastlist: true + ignore: + - TestIntegration/FsMkdir/FsPutFiles/FsCopy - backend: "yandex" remote: "TestYandex:" subdir: false @@ -118,6 +124,8 @@ backends: remote: "TestMega:" subdir: false fastlist: false + ignore: + - TestIntegration/FsMkdir/FsPutFiles/PublicLink - backend: "opendrive" remote: "TestOpenDrive:" subdir: false diff --git a/fstest/test_all/run.go b/fstest/test_all/run.go index be787d5a1..b9f1eac8b 100644 --- a/fstest/test_all/run.go +++ b/fstest/test_all/run.go @@ -45,6 +45,7 @@ type Run struct { NoRetries bool // don't retry if set OneOnly bool // only run test for this backend at once NoBinary bool // set to not build a binary + Ignore map[string]struct{} // Internals cmdLine []string cmdString string @@ -138,9 +139,15 @@ func (r *Run) findFailures() { oldFailedTests := r.failedTests r.failedTests = nil excludeParents := map[string]struct{}{} + ignored := 0 for _, matches := range failRe.FindAllSubmatch(r.output, -1) { failedTest := string(matches[1]) - r.failedTests = append(r.failedTests, failedTest) + // Skip any ignored failures + if _, found := r.Ignore[failedTest]; found { + ignored++ + } else { + r.failedTests = append(r.failedTests, failedTest) + } // Find all the parents of this test parts := strings.Split(failedTest, "/") for i := len(parts) - 1; i >= 1; i-- { @@ -155,6 +162,12 @@ func (r *Run) findFailures() { } } r.failedTests = newTests + if len(r.failedTests) == 0 && ignored > 0 { + log.Printf("%q - Found %d ignored errors only - marking as good", r.cmdString, ignored) + r.err = nil + r.dumpOutput() + return + } if len(r.failedTests) != 0 { r.runFlag = testsToRegexp(r.failedTests) } else {