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

     1  env GODEBUG=gotestjsonbuildtext=0
     2  
     3  # There are several places where paths appear in JSON in regexps here.
     4  # For the path separator we use (/|\\\\).
     5  # Unfortunately, we can't just use ${/} because, while script test automatically
     6  # escapes Windows-style \ in regexps, it doesn't know that it needs to escape
     7  # them *again* for JSON. If we ever teach script test about matching JSON,
     8  # we can probably fix this.
     9  
    10  # Test a build error directly in a test file.
    11  ! go test -json -o=$devnull ./builderror
    12  stdout '"ImportPath":"m/builderror \[m/builderror\.test\]","Action":"build-output","Output":"# m/builderror \[m/builderror.test\]\\n"'
    13  stdout '"ImportPath":"m/builderror \[m/builderror\.test\]","Action":"build-output","Output":"builderror(/|\\\\)main_test.go:3:11: undefined: y\\n"'
    14  stdout '"ImportPath":"m/builderror \[m/builderror\.test\]","Action":"build-fail"'
    15  stdout '"Action":"start","Package":"m/builderror"'
    16  stdout '"Action":"output","Package":"m/builderror","Output":"FAIL\\tm/builderror \[build failed\]\\n"'
    17  stdout '"Action":"fail","Package":"m/builderror","Elapsed":.*,"FailedBuild":"m/builderror \[m/builderror\.test\]"'
    18  ! stderr '.'
    19  
    20  # Test a build error in an imported package. Make sure it's attributed to the right package.
    21  ! go test -json -o=$devnull ./builderror2
    22  stdout '"ImportPath":"m/builderror2/x","Action":"build-output","Output":"# m/builderror2/x\\n"'
    23  stdout '"ImportPath":"m/builderror2/x","Action":"build-output","Output":"builderror2(/|\\\\)x(/|\\\\)main.go:3:11: undefined: y\\n"'
    24  stdout '"ImportPath":"m/builderror2/x","Action":"build-fail"'
    25  stdout '"Action":"start","Package":"m/builderror2"'
    26  stdout '"Action":"output","Package":"m/builderror2","Output":"FAIL\\tm/builderror2 \[build failed\]\\n"'
    27  stdout '"Action":"fail","Package":"m/builderror2","Elapsed":.*,"FailedBuild":"m/builderror2/x"'
    28  ! stderr '.'
    29  
    30  # Test a loading error in a test file
    31  # TODO(#65335): ImportPath attribution is weird
    32  ! go test -json -o=$devnull ./loaderror
    33  stdout '"ImportPath":"x","Action":"build-output","Output":"# m/loaderror\\n"'
    34  stdout '"ImportPath":"x","Action":"build-output","Output":".*package x is not in std.*"'
    35  stdout '"ImportPath":"x","Action":"build-fail"'
    36  stdout '"Action":"start","Package":"m/loaderror"'
    37  stdout '"Action":"output","Package":"m/loaderror","Output":"FAIL\\tm/loaderror \[setup failed\]\\n"'
    38  stdout '"Action":"fail","Package":"m/loaderror","Elapsed":.*,"FailedBuild":"x"'
    39  ! stderr '.'
    40  
    41  # Test an import cycle loading error in a non test file. (#70820)
    42  ! go test -json -o=$devnull ./cycle/p
    43  stdout '"ImportPath":"m/cycle/q","Action":"build-output","Output":"# m/cycle/p\\n"'
    44  stdout '"ImportPath":"m/cycle/q","Action":"build-output","Output":"package m/cycle/p\\n"'
    45  stdout '"ImportPath":"m/cycle/q","Action":"build-output","Output":"\\timports m/cycle/q from p.go\\n"'
    46  stdout '"ImportPath":"m/cycle/q","Action":"build-output","Output":"\\timports m/cycle/q from q.go: import cycle not allowed\\n"'
    47  stdout '"ImportPath":"m/cycle/q","Action":"build-fail"'
    48  stdout '"Action":"start","Package":"m/cycle/p"'
    49  stdout '"Action":"output","Package":"m/cycle/p","Output":"FAIL\\tm/cycle/p \[setup failed\]\\n"'
    50  stdout '"Action":"fail","Package":"m/cycle/p","Elapsed":.*,"FailedBuild":"m/cycle/q"'
    51  ! stderr '.'
    52  
    53  # Test a vet error
    54  ! go test -json -o=$devnull ./veterror
    55  stdout '"ImportPath":"m/veterror \[m/veterror.test\]","Action":"build-output","Output":"# m/veterror\\n"'
    56  stdout '"ImportPath":"m/veterror \[m/veterror.test\]","Action":"build-output","Output":"# \[m/veterror\]\\n"'
    57  stdout '"ImportPath":"m/veterror \[m/veterror.test\]","Action":"build-output","Output":"veterror(/|\\\\)main_test.go:9:21: fmt.Printf format %s reads arg #1, but call has 0 args\\n"'
    58  stdout '"ImportPath":"m/veterror \[m/veterror.test\]","Action":"build-fail"'
    59  stdout '"Action":"start","Package":"m/veterror"'
    60  stdout '"Action":"output","Package":"m/veterror","Output":"FAIL\\tm/veterror \[build failed\]\\n"'
    61  stdout '"Action":"fail","Package":"m/veterror","Elapsed":.*,"FailedBuild":"m/veterror \[m/veterror.test\]"'
    62  ! stderr '.'
    63  
    64  # Test that the GODEBUG fallback works.
    65  env GODEBUG=gotestjsonbuildtext=1
    66  ! go test -json -o=$devnull ./builderror
    67  stderr '# m/builderror \[m/builderror.test\]\n'
    68  stderr 'builderror'${/}'main_test.go:3:11: undefined: y\n'
    69  stdout '"Action":"start","Package":"m/builderror"'
    70  stdout '"Action":"output","Package":"m/builderror","Output":"FAIL\\tm/builderror \[build failed\]\\n"'
    71  stdout '"Action":"fail","Package":"m/builderror","Elapsed":[0-9.]+\}'
    72  # FailedBuild should NOT appear in the output in this mode.
    73  ! stdout '"FailedBuild"'
    74  
    75  -- go.mod --
    76  module m
    77  go 1.21
    78  -- builderror/main_test.go --
    79  package builderror
    80  
    81  const x = y
    82  -- builderror2/x/main.go --
    83  package x
    84  
    85  const x = y
    86  -- builderror2/main_test.go --
    87  package builderror2
    88  
    89  import _ "m/builderror2/x"
    90  -- loaderror/main_test.go --
    91  // A bad import causes a "[setup failed]" message from cmd/go because
    92  // it fails in package graph setup, before it can even get to the
    93  // build.
    94  //
    95  // "[setup failed]" can also occur with various low-level failures in
    96  // cmd/go, like failing to create a temporary directory.
    97  
    98  package loaderror
    99  
   100  import _ "x"
   101  -- veterror/main_test.go --
   102  package veterror
   103  
   104  import (
   105          "fmt"
   106          "testing"
   107  )
   108  
   109  func TestVetError(t *testing.T) {
   110          fmt.Printf("%s")
   111  }
   112  -- cycle/p/p.go --
   113  package p
   114  
   115  import "m/cycle/q"
   116  -- cycle/q/q.go --
   117  package q
   118  
   119  import (
   120  	"m/cycle/q"
   121  )
   122  

View as plain text