[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())
}
