# Check that if a proxy does not have a version of a module that could be # an upgrade, 'go list -m -u' still succeeds. # We use a local file proxy, since our test proxy doesn't have the behavior # we want to test, and we don't want it to be too clever. # Verifies #45305, where proxy.golang.org serves an empty /@v/list (200) # but has no /@latest (410) because the go.mod at the tip of the default # branch has a different major version suffix. env testproxy=$GOPROXY env GOPROXY=file:///$WORK/proxy env GOSUMDB=off # If the proxy does not return a list of versions (404/410) # or a latest version (404/410), we should see no error. go list -m example.com/noversion stdout '^example.com/noversion v0.0.0$' go list -m -u example.com/noversion stdout '^example.com/noversion v0.0.0$' # If the proxy returns an empty list of versions (200, not 404/410) # but does not have a latest version (404/410), we should see no error. go list -m example.com/nolatest stdout '^example.com/nolatest v0.0.0$' go list -m -u example.com/nolatest stdout '^example.com/nolatest v0.0.0$' # If proxy returns an invalid response, we should see an error. env GOPROXY=$testproxy/invalid ! go list -m -u example.com/nolatest stderr '^go: loading module retractions for example.com/nolatest@v0.0.0: invalid response from proxy "[^"]*": invalid character ''i'' looking for beginning of value$' -- go.mod -- module m go 1.17 require ( example.com/nolatest v0.0.0 example.com/noversion v0.0.0 ) -- go.sum -- example.com/nolatest v0.0.0/go.mod h1:HnLrCt6SJga5tCtJ7IzG9dOOCniY3G5C0VT7jfMdS0M= example.com/noversion v0.0.0/go.mod h1:2RUfWiCYsygSXPM2Igxx0FD3Kq33OnVdxm34eDDhXbQ= -- $WORK/proxy/example.com/nolatest/@v/list -- -- $WORK/proxy/example.com/nolatest/@v/v0.0.0.info -- {"Version":"v0.0.0"} -- $WORK/proxy/example.com/nolatest/@v/v0.0.0.mod -- module example.com/nolatest go 1.17 -- $WORK/proxy/example.com/noversion/@v/v0.0.0.info -- {"Version":"v0.0.0"} -- $WORK/proxy/example.com/noversion/@v/v0.0.0.mod -- module example.com/noversion go 1.17