oss.indeed.com/go/go-opine@v1.3.0/internal/gotest/output_test.go (about) 1 package gotest 2 3 import ( 4 "bytes" 5 "errors" 6 "testing" 7 8 "github.com/stretchr/testify/require" 9 ) 10 11 func Test_removeCoverageOutput_Accept(t *testing.T) { 12 const output = `PASS 13 coverage: 67.8% of statements 14 ok oss.indeed.com/go/go-opine/internal/cmd 11.527s coverage: 67.8% of statements 15 ` 16 const expectedOutputWithoutCoverage = `PASS 17 ok oss.indeed.com/go/go-opine/internal/cmd 11.527s 18 ` 19 called := false 20 tested := newRemoveCoverageOutput(resultAccepterFunc(func(res result) error { 21 require.False(t, called) 22 require.Equal(t, expectedOutputWithoutCoverage, res.Output) 23 called = true 24 return nil 25 })) 26 err := tested.Accept(result{Output: output}) 27 require.True(t, called) 28 require.NoError(t, err) 29 } 30 31 func Test_removeCoverageOutput_Accept_error(t *testing.T) { 32 expectedErr := errors.New("failed to parse") 33 tested := newRemoveCoverageOutput(resultAccepterFunc(func(res result) error { return expectedErr })) 34 err := tested.Accept(result{}) 35 require.Equal(t, expectedErr, err) 36 } 37 38 func Test_verboseOutput_Accept(t *testing.T) { 39 const expectedOutput = "Tama-tan no tamashii tamatama Tamachi" 40 var output bytes.Buffer 41 tested := newVerboseOutput(&output) 42 err := tested.Accept(result{Output: expectedOutput}) 43 require.NoError(t, err) 44 require.Equal(t, expectedOutput, output.String()) 45 } 46 47 func Test_verboseOutput_Accept_error(t *testing.T) { 48 expectedErr := errors.New("failed to parse") 49 tested := newVerboseOutput(&errorWriter{err: expectedErr}) 50 err := tested.Accept(result{Output: "success"}) 51 require.Equal(t, expectedErr, err) 52 } 53 54 func Test_quietOutput_Accept_ignoresPassingTests(t *testing.T) { 55 var output bytes.Buffer 56 tested := newQuietOutput(&output) 57 err := tested.Accept( 58 result{ 59 Key: resultKey{Package: "indeed.com/some/package", Test: "Test_Some_test"}, 60 Outcome: "pass", 61 Output: "You will not see this.", 62 }, 63 ) 64 require.NoError(t, err) 65 require.Empty(t, output.String()) 66 } 67 68 func Test_quietOutput_Accept_printsFailingTests(t *testing.T) { 69 const expectedOutput = "You will see this." 70 var output bytes.Buffer 71 tested := newQuietOutput(&output) 72 err := tested.Accept( 73 result{ 74 Key: resultKey{Package: "indeed.com/some/package", Test: "Test_Some_test"}, 75 Outcome: "fail", 76 Output: expectedOutput, 77 }, 78 ) 79 require.NoError(t, err) 80 require.Equal(t, expectedOutput, output.String()) 81 } 82 83 func Test_quietOutput_Accept_printsPassingPackagesWithPASSRemoved(t *testing.T) { 84 const outputBeforeRemovingPASS = `PASS 85 ok oss.indeed.com/go/go-opine/internal/cmd 11.527s 86 ` 87 const expectedOutputWithPASSRemoved = "ok oss.indeed.com/go/go-opine/internal/cmd 11.527s\n" 88 var output bytes.Buffer 89 tested := newQuietOutput(&output) 90 err := tested.Accept( 91 result{ 92 Key: resultKey{Package: "indeed.com/some/package"}, 93 Outcome: "pass", 94 Output: outputBeforeRemovingPASS, 95 }, 96 ) 97 require.NoError(t, err) 98 require.Equal(t, expectedOutputWithPASSRemoved, output.String()) 99 } 100 101 func Test_quietOutput_Accept_printsFailingPackages(t *testing.T) { 102 const expectedOutput = `FAIL 103 FAIL oss.indeed.com/go/go-opine/internal/cmd 11.527s 104 ` 105 var output bytes.Buffer 106 tested := newQuietOutput(&output) 107 err := tested.Accept( 108 result{ 109 Key: resultKey{Package: "indeed.com/some/package"}, 110 Output: expectedOutput, 111 }, 112 ) 113 require.NoError(t, err) 114 require.Equal(t, expectedOutput, output.String()) 115 } 116 117 func Test_quietOutput_Accept_error(t *testing.T) { 118 expectedErr := errors.New("failed") 119 tested := newQuietOutput(&errorWriter{err: expectedErr}) 120 err := tested.Accept(result{Output: "success"}) 121 require.Equal(t, expectedErr, err) 122 } 123 124 type errorWriter struct { 125 err error 126 } 127 128 func (e *errorWriter) Write(p []byte) (int, error) { 129 return 0, e.err 130 }