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

     1  [short] skip
     2  
     3  # Test file
     4  ! go test p1_test.go
     5  stderr 'Logf format %d'
     6  go test -vet=off
     7  stdout '^ok'
     8  
     9  # Non-test file
    10  ! go test p1.go
    11  stderr 'Printf format %d'
    12  go test -x -vet=shift p1.go
    13  stderr '[\\/]vet.*-shift'
    14  stdout '\[no test files\]'
    15  go test -vet=off p1.go
    16  ! stderr '[\\/]vet.*-shift'
    17  stdout '\[no test files\]'
    18  
    19  # ensure all runs non-default vet
    20  ! go test -vet=all ./vetall/...
    21  stderr 'using resp before checking for errors'
    22  
    23  # Test issue #47309
    24  ! go test -vet=bools,xyz ./vetall/...
    25  stderr '-vet argument must be a supported analyzer'
    26  
    27  # Test with a single analyzer
    28  ! go test -vet=httpresponse ./vetall/...
    29  stderr 'using resp before checking for errors'
    30  
    31  # Test with a list of analyzers
    32  go test -vet=atomic,bools,nilfunc ./vetall/...
    33  stdout 'm/vetall.*\[no tests to run\]'
    34  
    35  # Test issue #22890
    36  go test m/vetcycle
    37  stdout 'm/vetcycle.*\[no test files\]'
    38  
    39  # Test with ...
    40  ! go test ./vetfail/...
    41  stderr 'Printf format %d'
    42  stdout 'ok\s+m/vetfail/p2'
    43  
    44  # Check there's no diagnosis of a bad build constraint in vetxonly mode.
    45  # Use -a so that we need to recompute the vet-specific export data for
    46  # vetfail/p1.
    47  go test -a m/vetfail/p2
    48  ! stderr 'invalid.*constraint'
    49  
    50  -- go.mod --
    51  module m
    52  
    53  go 1.16
    54  -- p1_test.go --
    55  package p
    56  
    57  import "testing"
    58  
    59  func Test(t *testing.T) {
    60  	t.Logf("%d") // oops
    61  }
    62  -- p1.go --
    63  package p
    64  
    65  import "fmt"
    66  
    67  func F() {
    68  	fmt.Printf("%d") // oops
    69  }
    70  -- vetall/p.go --
    71  package p
    72  
    73  import "net/http"
    74  
    75  func F() {
    76  	resp, err := http.Head("example.com")
    77  	defer resp.Body.Close()
    78  	if err != nil {
    79  		panic(err)
    80  	}
    81  	// (defer statement belongs here)
    82  }
    83  -- vetall/p_test.go --
    84  package p
    85  -- vetcycle/p.go --
    86  package p
    87  
    88  type (
    89  	_  interface{ m(B1) }
    90  	A1 interface{ a(D1) }
    91  	B1 interface{ A1 }
    92  	C1 interface {
    93  		B1 /* ERROR issue #18395 */
    94  	}
    95  	D1 interface{ C1 }
    96  )
    97  
    98  var _ A1 = C1 /* ERROR cannot use C1 */ (nil)
    99  -- vetfail/p1/p1.go --
   100  // +build !foo-bar
   101  
   102  package p1
   103  
   104  import "fmt"
   105  
   106  func F() {
   107  	fmt.Printf("%d", "hello") // causes vet error
   108  }
   109  -- vetfail/p2/p2.go --
   110  package p2
   111  
   112  import _ "m/vetfail/p1"
   113  
   114  func F() {
   115  }
   116  -- vetfail/p2/p2_test.go --
   117  package p2
   118  
   119  import "testing"
   120  
   121  func TestF(t *testing.T) {
   122  	F()
   123  }
   124  

View as plain text