...

Text file src/cmd/go/testdata/script/test_fail_fast.txt

Documentation: cmd/go/testdata/script

     1[short] skip
     2
     3# test fail fast
     4! go test ./failfast_test.go -run='TestFailingA' -failfast=true
     5stdout -count=1 'FAIL - '
     6! go test ./failfast_test.go -run='TestFailing[AB]' -failfast=true
     7stdout -count=1 'FAIL - '
     8! go test ./failfast_test.go -run='TestFailing[AB]' -failfast=false
     9stdout -count=2 'FAIL - '
    10
    11# mix with non-failing tests
    12! go test ./failfast_test.go -run='TestA|TestFailing[AB]' -failfast=true
    13stdout -count=1 'FAIL - '
    14! go test ./failfast_test.go -run='TestA|TestFailing[AB]' -failfast=false
    15stdout -count=2 'FAIL - '
    16
    17# mix with parallel tests
    18! go test ./failfast_test.go -run='TestFailingB|TestParallelFailingA' -failfast=true
    19stdout -count=2 'FAIL - '
    20! go test ./failfast_test.go -run='TestFailingB|TestParallelFailingA' -failfast=false
    21stdout -count=2 'FAIL - '
    22! go test ./failfast_test.go -run='TestFailingB|TestParallelFailing[AB]' -failfast=true
    23stdout -count=3 'FAIL - '
    24! go test ./failfast_test.go -run='TestFailingB|TestParallelFailing[AB]' -failfast=false
    25stdout -count=3 'FAIL - '
    26
    27# mix with parallel sub-tests
    28! go test ./failfast_test.go -run='TestFailingB|TestParallelFailing[AB]|TestParallelFailingSubtestsA' -failfast=true
    29stdout -count=3 'FAIL - '
    30! go test ./failfast_test.go -run='TestFailingB|TestParallelFailing[AB]|TestParallelFailingSubtestsA' -failfast=false
    31stdout -count=5 'FAIL - '
    32! go test ./failfast_test.go -run='TestParallelFailingSubtestsA' -failfast=true
    33stdout -count=1 'FAIL - '
    34
    35# a failure in a cleanup of a test with a parallel subtest must stop failfast
    36# (go.dev/issue/61034)
    37! go test ./failfast_test.go -run='TestCleanupFailingWithParallelSubtestA|TestFailingB' -failfast=true
    38stdout -count=1 'FAIL - '
    39! go test ./failfast_test.go -run='TestCleanupFailingWithParallelSubtestA|TestFailingB' -failfast=false
    40stdout -count=2 'FAIL - '
    41
    42# only parallels
    43! go test ./failfast_test.go -run='TestParallelFailing[AB]' -failfast=false
    44stdout -count=2 'FAIL - '
    45
    46# non-parallel subtests
    47! go test ./failfast_test.go -run='TestFailingSubtestsA' -failfast=true
    48stdout -count=1 'FAIL - '
    49! go test ./failfast_test.go -run='TestFailingSubtestsA' -failfast=false
    50stdout -count=2 'FAIL - '
    51
    52# fatal test
    53! go test ./failfast_test.go -run='TestFatal[CD]' -failfast=true
    54stdout -count=1 'FAIL - '
    55! go test ./failfast_test.go -run='TestFatal[CD]' -failfast=false
    56stdout -count=2 'FAIL - '
    57
    58# cross package failfast
    59! go test -p 1 -failfast ./a ./b ./c
    60stdout -count=1 'FAIL - '
    61stdout -count=1 'FAIL - TestFailingPkgA'
    62
    63-- go.mod --
    64module m
    65
    66go 1.21.0
    67-- failfast_test.go --
    68// Copyright 2017 The Go Authors. All rights reserved.
    69// Use of this source code is governed by a BSD-style
    70// license that can be found in the LICENSE file.
    71
    72package failfast
    73
    74import "testing"
    75
    76func TestA(t *testing.T) {
    77	// Edge-case testing, mixing unparallel tests too
    78	t.Logf("LOG: %s", t.Name())
    79}
    80
    81func TestFailingA(t *testing.T) {
    82	t.Errorf("FAIL - %s", t.Name())
    83}
    84
    85func TestB(t *testing.T) {
    86	// Edge-case testing, mixing unparallel tests too
    87	t.Logf("LOG: %s", t.Name())
    88}
    89
    90func TestParallelFailingA(t *testing.T) {
    91	t.Parallel()
    92	t.Errorf("FAIL - %s", t.Name())
    93}
    94
    95func TestParallelFailingB(t *testing.T) {
    96	t.Parallel()
    97	t.Errorf("FAIL - %s", t.Name())
    98}
    99
   100func TestParallelFailingSubtestsA(t *testing.T) {
   101	t.Parallel()
   102	t.Run("TestFailingSubtestsA1", func(t *testing.T) {
   103		t.Errorf("FAIL - %s", t.Name())
   104	})
   105	t.Run("TestFailingSubtestsA2", func(t *testing.T) {
   106		t.Errorf("FAIL - %s", t.Name())
   107	})
   108}
   109
   110func TestFailingSubtestsA(t *testing.T) {
   111	t.Run("TestFailingSubtestsA1", func(t *testing.T) {
   112		t.Errorf("FAIL - %s", t.Name())
   113	})
   114	t.Run("TestFailingSubtestsA2", func(t *testing.T) {
   115		t.Errorf("FAIL - %s", t.Name())
   116	})
   117}
   118
   119func TestCleanupFailingWithParallelSubtestA(t *testing.T) {
   120	// Regression test for go.dev/issue/61034: a failure in a Cleanup
   121	// function must be counted for -failfast even when the test has a
   122	// parallel subtest.
   123	t.Cleanup(func() {
   124		t.Errorf("FAIL - %s", t.Name())
   125	})
   126	t.Run("sub", func(t *testing.T) {
   127		t.Parallel()
   128	})
   129}
   130
   131func TestFailingB(t *testing.T) {
   132	t.Errorf("FAIL - %s", t.Name())
   133}
   134
   135func TestFatalC(t *testing.T) {
   136	t.Fatalf("FAIL - %s", t.Name())
   137}
   138
   139func TestFatalD(t *testing.T) {
   140	t.Fatalf("FAIL - %s", t.Name())
   141}
   142-- a/a_test.go --
   143package a
   144
   145import "testing"
   146
   147func TestFailingPkgA(t *testing.T) {
   148	t.Errorf("FAIL - %s", t.Name())
   149}
   150-- b/b_test.go --
   151package b
   152
   153import "testing"
   154
   155func TestFailingPkgB(t *testing.T) {
   156	t.Errorf("FAIL - %s", t.Name())
   157}
   158-- c/c_test.go --
   159package c
   160
   161import "testing"
   162
   163func TestFailingPkgC(t *testing.T) {
   164	t.Errorf("FAIL - %s", t.Name())
   165}

View as plain text