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

     1  [short] skip
     2  
     3  # test fail fast
     4  ! go test ./failfast_test.go -run='TestFailingA' -failfast=true
     5  stdout -count=1 'FAIL - '
     6  ! go test ./failfast_test.go -run='TestFailing[AB]' -failfast=true
     7  stdout -count=1 'FAIL - '
     8  ! go test ./failfast_test.go -run='TestFailing[AB]' -failfast=false
     9  stdout -count=2 'FAIL - '
    10  
    11  # mix with non-failing tests
    12  ! go test ./failfast_test.go -run='TestA|TestFailing[AB]' -failfast=true
    13  stdout -count=1 'FAIL - '
    14  ! go test ./failfast_test.go -run='TestA|TestFailing[AB]' -failfast=false
    15  stdout -count=2 'FAIL - '
    16  
    17  # mix with parallel tests
    18  ! go test ./failfast_test.go -run='TestFailingB|TestParallelFailingA' -failfast=true
    19  stdout -count=2 'FAIL - '
    20  ! go test ./failfast_test.go -run='TestFailingB|TestParallelFailingA' -failfast=false
    21  stdout -count=2 'FAIL - '
    22  ! go test ./failfast_test.go -run='TestFailingB|TestParallelFailing[AB]' -failfast=true
    23  stdout -count=3 'FAIL - '
    24  ! go test ./failfast_test.go -run='TestFailingB|TestParallelFailing[AB]' -failfast=false
    25  stdout -count=3 'FAIL - '
    26  
    27  # mix with parallel sub-tests
    28  ! go test ./failfast_test.go -run='TestFailingB|TestParallelFailing[AB]|TestParallelFailingSubtestsA' -failfast=true
    29  stdout -count=3 'FAIL - '
    30  ! go test ./failfast_test.go -run='TestFailingB|TestParallelFailing[AB]|TestParallelFailingSubtestsA' -failfast=false
    31  stdout -count=5 'FAIL - '
    32  ! go test ./failfast_test.go -run='TestParallelFailingSubtestsA' -failfast=true
    33  stdout -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
    38  stdout -count=1 'FAIL - '
    39  ! go test ./failfast_test.go -run='TestCleanupFailingWithParallelSubtestA|TestFailingB' -failfast=false
    40  stdout -count=2 'FAIL - '
    41  
    42  # only parallels
    43  ! go test ./failfast_test.go -run='TestParallelFailing[AB]' -failfast=false
    44  stdout -count=2 'FAIL - '
    45  
    46  # non-parallel subtests
    47  ! go test ./failfast_test.go -run='TestFailingSubtestsA' -failfast=true
    48  stdout -count=1 'FAIL - '
    49  ! go test ./failfast_test.go -run='TestFailingSubtestsA' -failfast=false
    50  stdout -count=2 'FAIL - '
    51  
    52  # fatal test
    53  ! go test ./failfast_test.go -run='TestFatal[CD]' -failfast=true
    54  stdout -count=1 'FAIL - '
    55  ! go test ./failfast_test.go -run='TestFatal[CD]' -failfast=false
    56  stdout -count=2 'FAIL - '
    57  
    58  # cross package failfast
    59  ! go test -p 1 -failfast ./a ./b ./c
    60  stdout -count=1 'FAIL - '
    61  stdout -count=1 'FAIL - TestFailingPkgA'
    62  
    63  -- go.mod --
    64  module m
    65  
    66  go 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  
    72  package failfast
    73  
    74  import "testing"
    75  
    76  func TestA(t *testing.T) {
    77  	// Edge-case testing, mixing unparallel tests too
    78  	t.Logf("LOG: %s", t.Name())
    79  }
    80  
    81  func TestFailingA(t *testing.T) {
    82  	t.Errorf("FAIL - %s", t.Name())
    83  }
    84  
    85  func TestB(t *testing.T) {
    86  	// Edge-case testing, mixing unparallel tests too
    87  	t.Logf("LOG: %s", t.Name())
    88  }
    89  
    90  func TestParallelFailingA(t *testing.T) {
    91  	t.Parallel()
    92  	t.Errorf("FAIL - %s", t.Name())
    93  }
    94  
    95  func TestParallelFailingB(t *testing.T) {
    96  	t.Parallel()
    97  	t.Errorf("FAIL - %s", t.Name())
    98  }
    99  
   100  func 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  
   110  func 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  
   119  func 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  
   131  func TestFailingB(t *testing.T) {
   132  	t.Errorf("FAIL - %s", t.Name())
   133  }
   134  
   135  func TestFatalC(t *testing.T) {
   136  	t.Fatalf("FAIL - %s", t.Name())
   137  }
   138  
   139  func TestFatalD(t *testing.T) {
   140  	t.Fatalf("FAIL - %s", t.Name())
   141  }
   142  -- a/a_test.go --
   143  package a
   144  
   145  import "testing"
   146  
   147  func TestFailingPkgA(t *testing.T) {
   148  	t.Errorf("FAIL - %s", t.Name())
   149  }
   150  -- b/b_test.go --
   151  package b
   152  
   153  import "testing"
   154  
   155  func TestFailingPkgB(t *testing.T) {
   156  	t.Errorf("FAIL - %s", t.Name())
   157  }
   158  -- c/c_test.go --
   159  package c
   160  
   161  import "testing"
   162  
   163  func TestFailingPkgC(t *testing.T) {
   164  	t.Errorf("FAIL - %s", t.Name())
   165  }
   166  

View as plain text