...

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

Documentation: cmd/go/testdata/script

     1# https://golang.org/issue/46141: 'go mod tidy' for a Go 1.17 module should by
     2# default preserve enough checksums for the module to be used by Go 1.16.
     3#
     4# We don't have a copy of Go 1.16 handy, but we can simulate it by editing the
     5# 'go' version in the go.mod file to 1.16, without actually updating the
     6# requirements to match.
     7
     8[short] skip
     9
    10env MODFMT='{{with .Module}}{{.Path}} {{.Version}}{{end}}'
    11
    12
    13# This module selects the same versions in Go 1.16 and 1.17 for all modules
    14# that provide packages (or test dependencies of packages) imported by the
    15# main module. However, in Go 1.16 it selects a higher version of a
    16# transitive module dependency that is not otherwise relevant to the main module.
    17# As a result, Go 1.16 needs an additional checksum for the go.mod file of
    18# that irrelevant dependency.
    19#
    20# The Go 1.16 module graph looks like:
    21#
    22# m ---- lazy v0.1.0 ---- incompatible v1.0.0
    23#         |
    24#         + ------------- requireincompatible v0.1.0 ---- incompatible v2.0.0+incompatible
    25
    26cp go.mod go.mod.orig
    27go mod tidy
    28cmp go.mod go.mod.orig
    29
    30# Make sure that -diff behaves the same as tidy.
    31[exec:patch] mv go.mod go.mod.tidyResult
    32[exec:patch] mv go.sum go.sum.tidyResult
    33[exec:patch] cp go.mod.orig go.mod
    34[exec:patch] ! go mod tidy -diff
    35[exec:patch] cp stdout diff.patch
    36[exec:patch] exec patch -p1 -i diff.patch
    37[exec:patch] go mod tidy -diff
    38[exec:patch] ! stdout .
    39[exec:patch] cmp go.mod go.mod.tidyResult
    40[exec:patch] cmp go.sum go.sum.tidyResult
    41
    42go list -deps -test -f $MODFMT all
    43cp stdout out-117.txt
    44
    45go mod edit -go=1.16
    46go list -deps -test -f $MODFMT all
    47cmp stdout out-117.txt
    48
    49
    50# If we explicitly drop compatibility with 1.16, we retain fewer checksums,
    51# which gives a cleaner go.sum file but causes 1.16 to fail in readonly mode.
    52
    53cp go.mod.orig go.mod
    54go mod tidy -compat=1.17
    55cmp go.mod go.mod.orig
    56
    57# Make sure that -diff behaves the same as tidy.
    58[exec:patch] cp go.mod.orig go.mod
    59[exec:patch] rm go.sum
    60[exec:patch] go mod tidy -compat=1.17 -diff
    61[exec:patch] ! stdout .
    62
    63go list -deps -test -f $MODFMT all
    64cmp stdout out-117.txt
    65
    66go mod edit -go=1.16
    67! go list -deps -test -f $MODFMT all
    68stderr -count=1 '^go: example.net/lazy@v0.1.0 requires\n\texample.com/retract/incompatible@v1.0.0: missing go.sum entry for go.mod file; to add it:\n\tgo mod download example.com/retract/incompatible$'
    69
    70
    71-- go.mod --
    72// Module m imports packages from the same versions under Go 1.17
    73// as under Go 1.16, but under 1.16 its (implicit) external test dependencies
    74// are higher.
    75module example.com/m
    76
    77go 1.17
    78
    79replace (
    80	example.net/lazy v0.1.0 => ./lazy
    81	example.net/requireincompatible v0.1.0 => ./requireincompatible
    82)
    83
    84require example.net/lazy v0.1.0
    85-- m.go --
    86package m
    87
    88import _ "example.net/lazy"
    89-- lazy/go.mod --
    90// Module lazy requires example.com/retract/incompatible v1.0.0.
    91//
    92// When viewed from the outside it also has a transitive dependency
    93// on v2.0.0+incompatible, but in lazy mode that transitive dependency
    94// is pruned out.
    95module example.net/lazy
    96
    97go 1.17
    98
    99exclude example.com/retract/incompatible v2.0.0+incompatible
   100
   101require (
   102	example.com/retract/incompatible v1.0.0
   103	example.net/requireincompatible v0.1.0
   104)
   105-- lazy/lazy.go --
   106package lazy
   107-- lazy/unimported/unimported.go --
   108package unimported
   109
   110import _ "example.com/retract/incompatible"
   111-- requireincompatible/go.mod --
   112module example.net/requireincompatible
   113
   114go 1.15
   115
   116require example.com/retract/incompatible v2.0.0+incompatible

View as plain text