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

     1  # https://golang.org/issue/45979: after 'go get' on a package,
     2  # that package should be importable without error.
     3  
     4  
     5  # We start out with an unresolved dependency.
     6  # 'go list' suggests that we run 'go get' on that dependency.
     7  
     8  ! go list -deps .
     9  stderr '^m.go:3:8: no required module provides package rsc\.io/quote; to add it:\n\tgo get rsc.io/quote$'
    10  
    11  
    12  # When we run the suggested 'go get' command, the new dependency can be used
    13  # immediately.
    14  #
    15  # 'go get' marks the new dependency as 'indirect', because it doesn't scan
    16  # enough source code to know whether it is direct, and it is easier and less
    17  # invasive to remove an incorrect indirect mark (e.g. using 'go get') than to
    18  # add one that is missing ('go mod tidy' or 'go mod vendor').
    19  
    20  go get rsc.io/quote
    21  grep 'rsc.io/quote v\d+\.\d+\.\d+ // indirect$' go.mod
    22  ! grep 'rsc.io/quote v\d+\.\d+\.\d+$' go.mod
    23  
    24  go list -deps .
    25  ! stderr .
    26  [!short] go build .
    27  [!short] ! stderr .
    28  
    29  
    30  # 'go get .' (or 'go mod tidy') removes the indirect mark.
    31  
    32  go get .
    33  grep 'rsc.io/quote v\d+\.\d+\.\d+$' go.mod
    34  ! grep 'rsc.io/quote v\d+\.\d+\.\d+ // indirect$' go.mod
    35  
    36  
    37  -- go.mod --
    38  module example.com/m
    39  
    40  go 1.17
    41  -- m.go --
    42  package m
    43  
    44  import _ "rsc.io/quote"
    45  

View as plain text