[short] skip # test fail fast ! go test ./failfast_test.go -run='TestFailingA' -failfast=true stdout -count=1 'FAIL - ' ! go test ./failfast_test.go -run='TestFailing[AB]' -failfast=true stdout -count=1 'FAIL - ' ! go test ./failfast_test.go -run='TestFailing[AB]' -failfast=false stdout -count=2 'FAIL - ' # mix with non-failing tests ! go test ./failfast_test.go -run='TestA|TestFailing[AB]' -failfast=true stdout -count=1 'FAIL - ' ! go test ./failfast_test.go -run='TestA|TestFailing[AB]' -failfast=false stdout -count=2 'FAIL - ' # mix with parallel tests ! go test ./failfast_test.go -run='TestFailingB|TestParallelFailingA' -failfast=true stdout -count=2 'FAIL - ' ! go test ./failfast_test.go -run='TestFailingB|TestParallelFailingA' -failfast=false stdout -count=2 'FAIL - ' ! go test ./failfast_test.go -run='TestFailingB|TestParallelFailing[AB]' -failfast=true stdout -count=3 'FAIL - ' ! go test ./failfast_test.go -run='TestFailingB|TestParallelFailing[AB]' -failfast=false stdout -count=3 'FAIL - ' # mix with parallel sub-tests ! go test ./failfast_test.go -run='TestFailingB|TestParallelFailing[AB]|TestParallelFailingSubtestsA' -failfast=true stdout -count=3 'FAIL - ' ! go test ./failfast_test.go -run='TestFailingB|TestParallelFailing[AB]|TestParallelFailingSubtestsA' -failfast=false stdout -count=5 'FAIL - ' ! go test ./failfast_test.go -run='TestParallelFailingSubtestsA' -failfast=true stdout -count=1 'FAIL - ' # only parallels ! go test ./failfast_test.go -run='TestParallelFailing[AB]' -failfast=false stdout -count=2 'FAIL - ' # non-parallel subtests ! go test ./failfast_test.go -run='TestFailingSubtestsA' -failfast=true stdout -count=1 'FAIL - ' ! go test ./failfast_test.go -run='TestFailingSubtestsA' -failfast=false stdout -count=2 'FAIL - ' # fatal test ! go test ./failfast_test.go -run='TestFatal[CD]' -failfast=true stdout -count=1 'FAIL - ' ! go test ./failfast_test.go -run='TestFatal[CD]' -failfast=false stdout -count=2 'FAIL - ' -- failfast_test.go -- // Copyright 2017 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package failfast import "testing" func TestA(t *testing.T) { // Edge-case testing, mixing unparallel tests too t.Logf("LOG: %s", t.Name()) } func TestFailingA(t *testing.T) { t.Errorf("FAIL - %s", t.Name()) } func TestB(t *testing.T) { // Edge-case testing, mixing unparallel tests too t.Logf("LOG: %s", t.Name()) } func TestParallelFailingA(t *testing.T) { t.Parallel() t.Errorf("FAIL - %s", t.Name()) } func TestParallelFailingB(t *testing.T) { t.Parallel() t.Errorf("FAIL - %s", t.Name()) } func TestParallelFailingSubtestsA(t *testing.T) { t.Parallel() t.Run("TestFailingSubtestsA1", func(t *testing.T) { t.Errorf("FAIL - %s", t.Name()) }) t.Run("TestFailingSubtestsA2", func(t *testing.T) { t.Errorf("FAIL - %s", t.Name()) }) } func TestFailingSubtestsA(t *testing.T) { t.Run("TestFailingSubtestsA1", func(t *testing.T) { t.Errorf("FAIL - %s", t.Name()) }) t.Run("TestFailingSubtestsA2", func(t *testing.T) { t.Errorf("FAIL - %s", t.Name()) }) } func TestFailingB(t *testing.T) { t.Errorf("FAIL - %s", t.Name()) } func TestFatalC(t *testing.T) { t.Fatalf("FAIL - %s", t.Name()) } func TestFatalD(t *testing.T) { t.Fatalf("FAIL - %s", t.Name()) }