From 00e6a2338f2232d7e17d42eb0f2cfb33ebdaf59e Mon Sep 17 00:00:00 2001 From: Jelte Fennema Date: Tue, 10 Oct 2017 11:02:08 -0600 Subject: [PATCH 1/5] ensure: Make -no-vendor combined with -dry-run fail when Gopkg.lock is outdated --- cmd/dep/ensure.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index ef35e7f069..1a750233df 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) From 544c6007f31b51554a94e70c55b952c1c79aea32 Mon Sep 17 00:00:00 2001 From: Jelte Fennema Date: Tue, 10 Oct 2017 11:12:24 -0600 Subject: [PATCH 2/5] Update changelog for #1256 --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 39269de419..b5378915f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,8 @@ IMPROVEMENTS: Improving performance when updating dependencies with `-update`. (#1175) * `dep status` now concurrently fetches repo info. Improving status performance. (#1135) +* `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) # v0.3.1 From b0ab164884a6407cb8e07d31d2873b6b13836b97 Mon Sep 17 00:00:00 2001 From: Jelte Fennema Date: Wed, 11 Oct 2017 19:28:17 -0600 Subject: [PATCH 3/5] Use spaces in doc --- cmd/dep/ensure.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index 1a750233df..fa4393dced 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -112,9 +112,9 @@ dep ensure -update -no-vendor 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. + 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. ` From d19eb1769f2bb047338a8395f91c3041fddde784 Mon Sep 17 00:00:00 2001 From: Jelte Fennema Date: Thu, 12 Oct 2017 19:49:45 -0600 Subject: [PATCH 4/5] Add test cases for ensure -no-vendor -dry-run --- .../default/hasheq-novendor-dry/final/Gopkg.lock | 15 +++++++++++++++ .../default/hasheq-novendor-dry/final/Gopkg.toml | 4 ++++ .../hasheq-novendor-dry/initial/Gopkg.lock | 15 +++++++++++++++ .../hasheq-novendor-dry/initial/Gopkg.toml | 4 ++++ .../default/hasheq-novendor-dry/initial/main.go | 12 ++++++++++++ .../default/hasheq-novendor-dry/testcase.json | 5 +++++ .../hashneq-novendor-dry/final/Gopkg.lock | 16 ++++++++++++++++ .../hashneq-novendor-dry/final/Gopkg.toml | 4 ++++ .../hashneq-novendor-dry/initial/Gopkg.lock | 16 ++++++++++++++++ .../hashneq-novendor-dry/initial/Gopkg.toml | 4 ++++ .../default/hashneq-novendor-dry/initial/main.go | 12 ++++++++++++ .../default/hashneq-novendor-dry/testcase.json | 6 ++++++ 12 files changed, 113 insertions(+) create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/final/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/initial/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/initial/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor-dry/testcase.json create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/final/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/initial/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/initial/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hashneq-novendor-dry/testcase.json 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" +} From 9db18d89a877c74b62b802bfa344d8b42d55ffd7 Mon Sep 17 00:00:00 2001 From: Jelte Fennema Date: Thu, 12 Oct 2017 19:50:53 -0600 Subject: [PATCH 5/5] Changelog: Move -no-vendor -dry-run behaviour to NEW FEATURES section --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c3c371858..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: @@ -28,8 +30,6 @@ IMPROVEMENTS: Improving performance when updating dependencies with `-update`. (#1175) * `dep status` now concurrently fetches repo info. Improving status performance. (#1135) -* `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) * gps: Add SourceURLsForPath() to SourceManager. (#1166) * gps: Include output in error. (#1180)