oss.indeed.com/go/go-opine@v1.3.0/internal/gotest/workaround_go_issue_35180_test.go (about) 1 package gotest 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/stretchr/testify/require" 8 ) 9 10 func Test_workaroundGoIssue35180ResultAccepter_Accept(t *testing.T) { 11 issueRes := result{ 12 Key: resultKey{Package: "example.com", Test: "Test_Panic"}, 13 Outcome: "fail", 14 Output: `panic: runtime error: OMG SO BROKEN 15 ... stack 16 trace ... 17 FAIL example.com 3.452s 18 `, 19 } 20 var results []result 21 tested := newWorkaroundGoIssue35180ResultAccepter( 22 resultAccepterFunc(func(res result) error { results = append(results, res); return nil }), 23 ) 24 require.NoError(t, tested.Accept(issueRes)) 25 require.Equal( 26 t, 27 []result{ 28 { 29 Key: issueRes.Key, 30 Outcome: issueRes.Outcome, 31 Output: `panic: runtime error: OMG SO BROKEN 32 ... stack 33 trace ... 34 `, 35 }, 36 { 37 Key: resultKey{Package: issueRes.Key.Package}, 38 Outcome: issueRes.Outcome, 39 Output: "FAIL example.com 3.452s\n", 40 Elapsed: 3452 * time.Millisecond, 41 }, 42 }, 43 results, 44 ) 45 } 46 47 func Test_workaroundGoIssue35180ResultAccepter_Accept_withExitStatusAndCoverage(t *testing.T) { 48 issueRes := result{ 49 Key: resultKey{Package: "example.com", Test: "Test_Panic"}, 50 Outcome: "fail", 51 Output: `panic: runtime error: OMG SO BROKEN 52 ... stack 53 trace ... 54 exit status 2 55 FAIL example.com 3.452s coverage: proly lots 56 `, 57 } 58 var results []result 59 tested := newWorkaroundGoIssue35180ResultAccepter( 60 resultAccepterFunc(func(res result) error { results = append(results, res); return nil }), 61 ) 62 require.NoError(t, tested.Accept(issueRes)) 63 require.Equal( 64 t, 65 []result{ 66 { 67 Key: issueRes.Key, 68 Outcome: issueRes.Outcome, 69 Output: `panic: runtime error: OMG SO BROKEN 70 ... stack 71 trace ... 72 `, 73 }, 74 { 75 Key: resultKey{Package: issueRes.Key.Package}, 76 Outcome: issueRes.Outcome, 77 Output: `exit status 2 78 FAIL example.com 3.452s coverage: proly lots 79 `, 80 Elapsed: 3452 * time.Millisecond, 81 }, 82 }, 83 results, 84 ) 85 } 86 87 func Test_workaroundGoIssue35180ResultAccepter_Accept_passthroughNotFail(t *testing.T) { 88 res := result{ 89 Key: resultKey{Package: "example.com", Test: "Test_Something"}, 90 Outcome: "pass", 91 Output: "some output", 92 Elapsed: 42 * time.Second, 93 } 94 var results []result 95 tested := newWorkaroundGoIssue35180ResultAccepter( 96 resultAccepterFunc(func(res result) error { results = append(results, res); return nil }), 97 ) 98 require.NoError(t, tested.Accept(res)) 99 require.Equal(t, []result{res}, results) 100 } 101 102 func Test_workaroundGoIssue35180ResultAccepter_Accept_passthroughNormalFailure(t *testing.T) { 103 res := result{ 104 Key: resultKey{Package: "example.com", Test: "Test_Something"}, 105 Outcome: "fail", 106 Output: ` 107 === RUN Test_Something 108 --- FAIL: Test_Something (0.00s) 109 `, 110 Elapsed: 42 * time.Second, 111 } 112 var results []result 113 tested := newWorkaroundGoIssue35180ResultAccepter( 114 resultAccepterFunc(func(res result) error { results = append(results, res); return nil }), 115 ) 116 require.NoError(t, tested.Accept(res)) 117 require.Equal(t, []result{res}, results) 118 } 119 120 func Test_workaroundGoIssue35180ResultAccepter_Accept_passthroughPackageMismatch(t *testing.T) { 121 res := result{ 122 Key: resultKey{Package: "example.com/some/pkg", Test: "Test_Weird_Panic"}, 123 Outcome: "fail", 124 Output: `panic: runtime error: OMG SO BROKEN 125 ... stack 126 trace ... 127 FAIL example.com/other/pkg 3.452s 128 `, 129 Elapsed: 42 * time.Second, 130 } 131 var results []result 132 tested := newWorkaroundGoIssue35180ResultAccepter( 133 resultAccepterFunc(func(res result) error { results = append(results, res); return nil }), 134 ) 135 require.NoError(t, tested.Accept(res)) 136 require.Equal(t, []result{res}, results) 137 }