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

     1  env GO111MODULE=on
     2  
     3  # Test that go mod edits and related mod flags work.
     4  # Also test that they can use a dummy name that isn't resolvable. golang.org/issue/24100
     5  
     6  # go mod init
     7  ! go mod init
     8  stderr 'cannot determine module path'
     9  ! exists go.mod
    10  
    11  go mod init x.x/y/z
    12  stderr 'creating new go.mod: module x.x/y/z'
    13  cmpenv go.mod $WORK/go.mod.init
    14  
    15  ! go mod init
    16  cmpenv go.mod $WORK/go.mod.init
    17  
    18  # go mod edits
    19  go mod edit -droprequire=x.1 -require=x.1@v1.0.0 -require=x.2@v1.1.0 -droprequire=x.2 -exclude='x.1 @ v1.2.0' -exclude=x.1@v1.2.1 -exclude=x.1@v2.0.0+incompatible -replace=x.1@v1.3.0=y.1@v1.4.0 -replace='x.1@v1.4.0 = ../z' -retract=v1.6.0 -retract=[v1.1.0,v1.2.0] -retract=[v1.3.0,v1.4.0] -retract=v1.0.0
    20  cmpenv go.mod $WORK/go.mod.edit1
    21  go mod edit -droprequire=x.1 -dropexclude=x.1@v1.2.1 -dropexclude=x.1@v2.0.0+incompatible -dropreplace=x.1@v1.3.0 -require=x.3@v1.99.0 -dropretract=v1.0.0 -dropretract=[v1.1.0,v1.2.0]
    22  cmpenv go.mod $WORK/go.mod.edit2
    23  
    24  # -exclude and -retract reject invalid versions.
    25  ! go mod edit -exclude=example.com/m@bad
    26  stderr '^go: -exclude=example.com/m@bad: version "bad" invalid: must be of the form v1.2.3$'
    27  ! go mod edit -retract=bad
    28  stderr '^go: -retract=bad: version "bad" invalid: must be of the form v1.2.3$'
    29  
    30  ! go mod edit -exclude=example.com/m@v2.0.0
    31  stderr '^go: -exclude=example.com/m@v2\.0\.0: version "v2\.0\.0" invalid: should be v2\.0\.0\+incompatible \(or module example\.com/m/v2\)$'
    32  
    33  ! go mod edit -exclude=example.com/m/v2@v1.0.0
    34  stderr '^go: -exclude=example.com/m/v2@v1\.0\.0: version "v1\.0\.0" invalid: should be v2, not v1$'
    35  
    36  ! go mod edit -exclude=gopkg.in/example.v1@v2.0.0
    37  stderr '^go: -exclude=gopkg\.in/example\.v1@v2\.0\.0: version "v2\.0\.0" invalid: should be v1, not v2$'
    38  
    39  cmpenv go.mod $WORK/go.mod.edit2
    40  
    41  # go mod edit -json
    42  go mod edit -json
    43  cmpenv stdout $WORK/go.mod.json
    44  
    45  # go mod edit -json (retractions with rationales)
    46  go mod edit -json $WORK/go.mod.retractrationale
    47  cmp stdout $WORK/go.mod.retractrationale.json
    48  
    49  # go mod edit -json (deprecation)
    50  go mod edit -json $WORK/go.mod.deprecation
    51  cmp stdout $WORK/go.mod.deprecation.json
    52  
    53  # go mod edit -json (empty mod file)
    54  go mod edit -json $WORK/go.mod.empty
    55  cmp stdout $WORK/go.mod.empty.json
    56  
    57  # go mod edit -replace
    58  go mod edit -replace=x.1@v1.3.0=y.1/v2@v2.3.5 -replace=x.1@v1.4.0=y.1/v2@v2.3.5
    59  cmpenv go.mod $WORK/go.mod.edit3
    60  go mod edit -replace=x.1=y.1/v2@v2.3.6
    61  cmpenv go.mod $WORK/go.mod.edit4
    62  go mod edit -dropreplace=x.1
    63  cmpenv go.mod $WORK/go.mod.edit5
    64  
    65  # go mod edit -fmt
    66  cp $WORK/go.mod.badfmt go.mod
    67  go mod edit -fmt -print # -print should avoid writing file
    68  cmpenv stdout $WORK/go.mod.goodfmt
    69  cmp go.mod $WORK/go.mod.badfmt
    70  go mod edit -fmt # without -print, should write file (and nothing to stdout)
    71  ! stdout .
    72  cmpenv go.mod $WORK/go.mod.goodfmt
    73  
    74  # go mod edit -module
    75  cd $WORK/m
    76  go mod init a.a/b/c
    77  go mod edit -module x.x/y/z
    78  cmpenv go.mod go.mod.edit
    79  
    80  # golang.org/issue/30513: don't require go-gettable module paths.
    81  cd $WORK/local
    82  go mod init foo
    83  go mod edit -module local-only -require=other-local@v1.0.0 -replace other-local@v1.0.0=./other
    84  cmpenv go.mod go.mod.edit
    85  
    86  -- x.go --
    87  package x
    88  
    89  -- w/w.go --
    90  package w
    91  
    92  -- $WORK/go.mod.init --
    93  module x.x/y/z
    94  
    95  go $goversion
    96  -- $WORK/go.mod.edit1 --
    97  module x.x/y/z
    98  
    99  go $goversion
   100  
   101  require x.1 v1.0.0
   102  
   103  exclude (
   104  	x.1 v1.2.0
   105  	x.1 v1.2.1
   106  	x.1 v2.0.0+incompatible
   107  )
   108  
   109  replace (
   110  	x.1 v1.3.0 => y.1 v1.4.0
   111  	x.1 v1.4.0 => ../z
   112  )
   113  
   114  retract (
   115  	v1.6.0
   116  	[v1.3.0, v1.4.0]
   117  	[v1.1.0, v1.2.0]
   118  	v1.0.0
   119  )
   120  -- $WORK/go.mod.edit2 --
   121  module x.x/y/z
   122  
   123  go $goversion
   124  
   125  exclude x.1 v1.2.0
   126  
   127  replace x.1 v1.4.0 => ../z
   128  
   129  retract (
   130  	v1.6.0
   131  	[v1.3.0, v1.4.0]
   132  )
   133  
   134  require x.3 v1.99.0
   135  -- $WORK/go.mod.json --
   136  {
   137  	"Module": {
   138  		"Path": "x.x/y/z"
   139  	},
   140  	"Go": "$goversion",
   141  	"Require": [
   142  		{
   143  			"Path": "x.3",
   144  			"Version": "v1.99.0"
   145  		}
   146  	],
   147  	"Exclude": [
   148  		{
   149  			"Path": "x.1",
   150  			"Version": "v1.2.0"
   151  		}
   152  	],
   153  	"Replace": [
   154  		{
   155  			"Old": {
   156  				"Path": "x.1",
   157  				"Version": "v1.4.0"
   158  			},
   159  			"New": {
   160  				"Path": "../z"
   161  			}
   162  		}
   163  	],
   164  	"Retract": [
   165  		{
   166  			"Low": "v1.6.0",
   167  			"High": "v1.6.0"
   168  		},
   169  		{
   170  			"Low": "v1.3.0",
   171  			"High": "v1.4.0"
   172  		}
   173  	]
   174  }
   175  -- $WORK/go.mod.edit3 --
   176  module x.x/y/z
   177  
   178  go $goversion
   179  
   180  exclude x.1 v1.2.0
   181  
   182  replace (
   183  	x.1 v1.3.0 => y.1/v2 v2.3.5
   184  	x.1 v1.4.0 => y.1/v2 v2.3.5
   185  )
   186  
   187  retract (
   188  	v1.6.0
   189  	[v1.3.0, v1.4.0]
   190  )
   191  
   192  require x.3 v1.99.0
   193  -- $WORK/go.mod.edit4 --
   194  module x.x/y/z
   195  
   196  go $goversion
   197  
   198  exclude x.1 v1.2.0
   199  
   200  replace x.1 => y.1/v2 v2.3.6
   201  
   202  retract (
   203  	v1.6.0
   204  	[v1.3.0, v1.4.0]
   205  )
   206  
   207  require x.3 v1.99.0
   208  -- $WORK/go.mod.edit5 --
   209  module x.x/y/z
   210  
   211  go $goversion
   212  
   213  exclude x.1 v1.2.0
   214  
   215  retract (
   216  	v1.6.0
   217  	[v1.3.0, v1.4.0]
   218  )
   219  
   220  require x.3 v1.99.0
   221  -- $WORK/local/go.mod.edit --
   222  module local-only
   223  
   224  go $goversion
   225  
   226  require other-local v1.0.0
   227  
   228  replace other-local v1.0.0 => ./other
   229  -- $WORK/go.mod.badfmt --
   230  module     x.x/y/z
   231  
   232  go 1.10
   233  
   234  exclude x.1     v1.2.0
   235  
   236  replace x.1    =>   y.1/v2 v2.3.6
   237  
   238  require x.3   v1.99.0
   239  
   240  retract [  "v1.8.1" , "v1.8.2" ]
   241  -- $WORK/go.mod.goodfmt --
   242  module x.x/y/z
   243  
   244  go 1.10
   245  
   246  exclude x.1 v1.2.0
   247  
   248  replace x.1 => y.1/v2 v2.3.6
   249  
   250  require x.3 v1.99.0
   251  
   252  retract [v1.8.1, v1.8.2]
   253  -- $WORK/m/go.mod.edit --
   254  module x.x/y/z
   255  
   256  go $goversion
   257  -- $WORK/go.mod.retractrationale --
   258  module x.x/y/z
   259  
   260  go 1.15
   261  
   262  // a
   263  retract v1.0.0
   264  
   265  // b
   266  retract (
   267    v1.0.1
   268    v1.0.2 // c
   269  )
   270  -- $WORK/go.mod.retractrationale.json --
   271  {
   272  	"Module": {
   273  		"Path": "x.x/y/z"
   274  	},
   275  	"Go": "1.15",
   276  	"Require": null,
   277  	"Exclude": null,
   278  	"Replace": null,
   279  	"Retract": [
   280  		{
   281  			"Low": "v1.0.0",
   282  			"High": "v1.0.0",
   283  			"Rationale": "a"
   284  		},
   285  		{
   286  			"Low": "v1.0.1",
   287  			"High": "v1.0.1",
   288  			"Rationale": "b"
   289  		},
   290  		{
   291  			"Low": "v1.0.2",
   292  			"High": "v1.0.2",
   293  			"Rationale": "c"
   294  		}
   295  	]
   296  }
   297  -- $WORK/go.mod.deprecation --
   298  // Deprecated: and the new one is not ready yet
   299  module m
   300  -- $WORK/go.mod.deprecation.json --
   301  {
   302  	"Module": {
   303  		"Path": "m",
   304  		"Deprecated": "and the new one is not ready yet"
   305  	},
   306  	"Require": null,
   307  	"Exclude": null,
   308  	"Replace": null,
   309  	"Retract": null
   310  }
   311  -- $WORK/go.mod.empty --
   312  -- $WORK/go.mod.empty.json --
   313  {
   314  	"Module": {
   315  		"Path": ""
   316  	},
   317  	"Require": null,
   318  	"Exclude": null,
   319  	"Replace": null,
   320  	"Retract": null
   321  }
   322  

View as plain text