diff --git a/CHANGELOG.md b/CHANGELOG.md index f461742cea..e3f66a113b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ NEW FEATURES: * Wildcard ignore support. (#1156) * Disable SourceManager lock by setting `DEPNOLOCK` environment variable. (#1206) +* `dep ensure -no-vendor -dry-run` now exits with an error when changes would +have to be made to `Gopkg.lock`. This is useful for CI. (#1256) BUG FIXES: diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index 4b4c623052..63e4868ad7 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -110,6 +110,12 @@ dep ensure -update -no-vendor As above, but only modify Gopkg.lock; leave vendor/ unchanged. +dep ensure -no-vendor -dry-run + + This fails with a non zero exit code if Gopkg.lock is not up to date with + the Gopkg.toml or the project imports. It can be useful to run this during + CI to check if Gopkg.lock is up to date. + ` var ( @@ -267,6 +273,10 @@ func (cmd *ensureCommand) runDefault(ctx *dep.Ctx, args []string, p *dep.Project return errors.WithMessage(sw.Write(p.AbsRoot, sm, true, logger), "grouped write of manifest, lock and vendor") } + if cmd.noVendor && cmd.dryRun { + return errors.New("Gopkg.lock was not up to date") + } + solution, err := solver.Solve() if err != nil { handleAllTheFailuresOfTheWorld(err) diff --git a/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/final/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/final/Gopkg.lock @@ -0,0 +1,15 @@ +# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. + + +[[projects]] + name = "github.com/sdboyer/deptest" + packages = ["."] + revision = "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" + version = "v1.0.0" + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + inputs-digest = "14b07b05e0f01051b03887ab2bf80b516bc5510ea92f75f76c894b1745d8850c" + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/final/Gopkg.toml new file mode 100644 index 0000000000..e242e02114 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/final/Gopkg.toml @@ -0,0 +1,4 @@ + +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/initial/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/initial/Gopkg.lock @@ -0,0 +1,15 @@ +# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. + + +[[projects]] + name = "github.com/sdboyer/deptest" + packages = ["."] + revision = "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" + version = "v1.0.0" + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + inputs-digest = "14b07b05e0f01051b03887ab2bf80b516bc5510ea92f75f76c894b1745d8850c" + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/initial/Gopkg.toml new file mode 100644 index 0000000000..e242e02114 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/initial/Gopkg.toml @@ -0,0 +1,4 @@ + +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/initial/main.go new file mode 100644 index 0000000000..1fe0d19d6a --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/initial/main.go @@ -0,0 +1,12 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +import ( + _ "github.com/sdboyer/deptest" +) + +func main() { +} diff --git a/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/testcase.json b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/testcase.json new file mode 100644 index 0000000000..f3bdbe7e90 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/testcase.json @@ -0,0 +1,5 @@ +{ + "commands": [ + ["ensure", "-no-vendor", "-dry-run"] + ] +} diff --git a/cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/final/Gopkg.lock new file mode 100644 index 0000000000..11cb12c378 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/final/Gopkg.lock @@ -0,0 +1,16 @@ +# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. + + +[[projects]] + name = "github.com/sdboyer/deptest" + packages = ["."] + revision = "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" + version = "v1.0.0" + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + # manually modified hash digest, it will not match any known inputs + inputs-digest = "94b07b05e0f01051b03887ab2bf80b516bc5510ea92f75f76c894b1745d8850c" + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/final/Gopkg.toml new file mode 100644 index 0000000000..e242e02114 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/final/Gopkg.toml @@ -0,0 +1,4 @@ + +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/initial/Gopkg.lock new file mode 100644 index 0000000000..11cb12c378 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/initial/Gopkg.lock @@ -0,0 +1,16 @@ +# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. + + +[[projects]] + name = "github.com/sdboyer/deptest" + packages = ["."] + revision = "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" + version = "v1.0.0" + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + # manually modified hash digest, it will not match any known inputs + inputs-digest = "94b07b05e0f01051b03887ab2bf80b516bc5510ea92f75f76c894b1745d8850c" + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/initial/Gopkg.toml new file mode 100644 index 0000000000..e242e02114 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/initial/Gopkg.toml @@ -0,0 +1,4 @@ + +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/initial/main.go new file mode 100644 index 0000000000..1fe0d19d6a --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/initial/main.go @@ -0,0 +1,12 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +import ( + _ "github.com/sdboyer/deptest" +) + +func main() { +} diff --git a/cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/testcase.json b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/testcase.json new file mode 100644 index 0000000000..2e54069437 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/testcase.json @@ -0,0 +1,6 @@ +{ + "commands": [ + ["ensure", "-no-vendor", "-dry-run"] + ], + "error-expected": "Gopkg.lock was not up to date" +}