...

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

Documentation: cmd/go/testdata/script

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

View as plain text