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  }