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  }