From 94fad51df050b848e63a8a11f68c82978314f26b Mon Sep 17 00:00:00 2001 From: sam boyer Date: Thu, 20 Apr 2017 21:54:46 -0400 Subject: [PATCH 01/34] Update some of docs and flags --- cmd/dep/ensure.go | 51 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 38 insertions(+), 13 deletions(-) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index 6a8b83e57f..496236d5e8 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -25,14 +25,36 @@ import ( const ensureShortHelp = `Ensure a dependency is safely vendored in the project` const ensureLongHelp = ` -Ensure is used to fetch project dependencies into the vendor folder, as well as -to set version constraints for specific dependencies. It takes user input, -solves the updated dependency graph of the project, writes any changes to the -lock file, and places dependencies in the vendor folder. +usage: dep ensure [-update | -add] [-no-vendor | -vendor-only] [...] -Package spec: +Project spec: + + [:alt source][@] + +Flags: + + -update: update all, or only the named, dependencies in Gopkg.lock + -add: add new dependencies + -no-vendor: update Gopkg.lock if needed, but do not update vendor/ + -vendor-only: populate vendor/ without updating Gopkg.lock + + +Ensure gets a project into a complete, compilable, and reproducible state: + + * All non-stdlib imports are fulfilled + * All constraints and overrides in Gopkg.toml are respected + * Gopkg.lock records precise versions for all dependencies + * vendor/ is populated according to Gopkg.lock + +Ensure has fast techniques to determine that some of these steps may be +unnecessary. If that determination is made, ensure may skip some steps. Flags +may be passed to bypass these checks; -vendor-only will allow an out-of-date +Gopkg.lock to populate vendor/, and -no-vendor will update Gopkg.lock (if +needed), but never touch vendor/. + +The effect of passing project spec arguments varies slightly depending on the +combination of flags that are passed. - [:alt location][@] Examples: @@ -91,16 +113,19 @@ func (cmd *ensureCommand) Hidden() bool { return false } func (cmd *ensureCommand) Register(fs *flag.FlagSet) { fs.BoolVar(&cmd.examples, "examples", false, "print detailed usage examples") - fs.BoolVar(&cmd.update, "update", false, "ensure dependencies are at the latest version allowed by the manifest") - fs.BoolVar(&cmd.dryRun, "n", false, "dry run, don't actually ensure anything") - fs.Var(&cmd.overrides, "override", "specify an override constraint spec (repeatable)") + fs.BoolVar(&cmd.update, "update", false, "update the named dependencies (or all, if none are named) in Gopkg.lock to the latest allowed by Gopkg.toml") + fs.BoolVar(&cmd.add, "add", false, "add new dependencies, or populate Gopkg.toml with constraints for existing dependencies") + fs.BoolVar(&cmd.vendorOnly, "vendor-only", false, "populate vendor/ from Gopkg.lock without updating it first") + fs.BoolVar(&cmd.noVendor, "no-vendor", false, "update Gopkg.lock (if needed), but do not update vendor/") } type ensureCommand struct { - examples bool - update bool - dryRun bool - overrides stringSlice + examples bool + update bool + add bool + noVendor bool + vendorOnly bool + overrides stringSlice } func (cmd *ensureCommand) Run(ctx *dep.Ctx, args []string) error { From 24a9b3b850f2bdaacbd761c26424777e0eb5f6e8 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Sun, 30 Apr 2017 00:40:11 -0400 Subject: [PATCH 02/34] Tweak usage text a bit --- cmd/dep/ensure.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index 496236d5e8..c10faf4f04 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -25,11 +25,11 @@ import ( const ensureShortHelp = `Ensure a dependency is safely vendored in the project` const ensureLongHelp = ` -usage: dep ensure [-update | -add] [-no-vendor | -vendor-only] [...] +usage: dep ensure [-update | -add] [-no-vendor | -vendor-only] [...] Project spec: - [:alt source][@] + [:alt source][@] Flags: From 2089f3e188a7075fac8734cf6b700c865186fb7c Mon Sep 17 00:00:00 2001 From: sam boyer Date: Sun, 30 Apr 2017 00:40:26 -0400 Subject: [PATCH 03/34] Basic structure & implementation of default case --- cmd/dep/ensure.go | 106 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index c10faf4f04..be80091ad2 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -134,6 +134,23 @@ func (cmd *ensureCommand) Run(ctx *dep.Ctx, args []string) error { return nil } + if cmd.add && cmd.update { + return errors.New("cannot pass both -add and -update") + } + + if cmd.update && cmd.vendorOnly { + return errors.New("-vendor-only makes -update a no-op; cannot pass them together") + } + + if cmd.add && cmd.vendorOnly { + return errors.New("-vendor-only makes -add a no-op; cannot pass them together") + } + + if cmd.vendorOnly && cmd.noVendor { + // TODO(sdboyer) can't think of anything not snarky right now + return errors.New("really?") + } + p, err := ctx.LoadProject("") if err != nil { return err @@ -159,6 +176,14 @@ func (cmd *ensureCommand) Run(ctx *dep.Ctx, args []string) error { return err } + var fail error + if cmd.add { + return cmd.runAdd(ctx, args, p, sm, params) + } else if cmd.update { + return cmd.runUpdate(ctx, args, p, sm, params) + } + return cmd.runDefault(ctx, args, p, sm, params) + if cmd.update { applyUpdateArgs(args, ¶ms) } else { @@ -201,6 +226,87 @@ func (cmd *ensureCommand) Run(ctx *dep.Ctx, args []string) error { return errors.Wrap(sw.Write(p.AbsRoot, sm, true), "grouped write of manifest, lock and vendor") } +func (cmd *ensureCommand) runDefault(ctx *dep.Ctx, args []string, p *dep.Project, sm gps.SourceManager, params gps.SolveParameters) error { + // Bare ensure doesn't take any args. + if len(args) != 0 { + if cmd.vendorOnly { + return errors.Errorf("dep ensure -vendor-only only populates vendor/ from %s; it takes no spec arguments.", dep.LockName) + } + return errors.New("dep ensure only takes spec arguments with -add or -update - did you want one of those?") + } + + sw := &dep.SafeWriter{} + if cmd.vendorOnly { + if p.Lock == nil { + return errors.Errorf("no %s exists from which to populate vendor/ directory", dep.LockName) + } + // Pass the same lock as old and new so that the writer will observe no + // difference and choose not to write it out. + err := sw.Prepare(nil, p.Lock, p.Lock, dep.VendorAlways) + if err != nil { + return err + } + + if cmd.dryRun { + fmt.Printf("Would have populated vendor/ directory from %s", dep.LockName) + return nil + } + + return errors.WithMessage(sw.Write(p.AbsRoot, sm, true), "grouped write of manifest, lock and vendor") + } + + solver, err := gps.Prepare(params, sm) + if err != nil { + return errors.Wrap(err, "ensure Prepare") + } + + if p.Lock != nil && bytes.Equal(p.Lock.InputHash(), solver.HashInputs()) { + // Memo matches, so there's probably nothing to do. + if cmd.noVendor { + // The user said not to touch vendor/, so definitely nothing to do. + return nil + } + + // TODO(sdboyer) The desired behavior at this point is to determine + // whether it's necessary to write out vendor, or if it's already + // consistent with the lock. However, we haven't yet determined what + // that "verification" is supposed to look like (#121); in the meantime, + // we unconditionally write out vendor/ so that `dep ensure`'s behavior + // is maximally compatible with what it will eventually become. + // vendor doesn't exist at all; be helpful and write it. + err := sw.Prepare(nil, p.Lock, p.Lock, dep.VendorAlways) + if err != nil { + return err + } + + if cmd.dryRun { + fmt.Printf("Would have populated vendor/ directory from %s", dep.LockName) + return nil + } + + return errors.WithMessage(sw.Write(p.AbsRoot, sm, true), "grouped write of manifest, lock and vendor") + } + + solution, err := solver.Solve() + if err != nil { + handleAllTheFailuresOfTheWorld(err) + return errors.Wrap(err, "ensure Solve()") + } + + sw.Prepare(nil, p.Lock, dep.LockFromInterface(solution), dep.VendorOnChanged) + if cmd.dryRun { + return sw.PrintPreparedActions() + } + + return nil +} + +func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm gps.SourceManager, params gps.SolveParameters) error { +} + +func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, sm gps.SourceManager, params gps.SolveParameters) error { +} + func applyUpdateArgs(args []string, params *gps.SolveParameters) { // When -update is specified without args, allow every project to change versions, regardless of the lock file if len(args) == 0 { From 817f06af3685df6f6b6d680a100e5b7cf1badc2e Mon Sep 17 00:00:00 2001 From: sam boyer Date: Sun, 30 Apr 2017 02:15:36 -0400 Subject: [PATCH 04/34] First bits of -update path --- cmd/dep/ensure.go | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index be80091ad2..266126bc04 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -184,15 +184,6 @@ func (cmd *ensureCommand) Run(ctx *dep.Ctx, args []string) error { } return cmd.runDefault(ctx, args, p, sm, params) - if cmd.update { - applyUpdateArgs(args, ¶ms) - } else { - err := applyEnsureArgs(args, cmd.overrides, p, sm, ¶ms) - if err != nil { - return err - } - } - solver, err := gps.Prepare(params, sm) if err != nil { return errors.Wrap(err, "ensure Prepare") @@ -301,13 +292,11 @@ func (cmd *ensureCommand) runDefault(ctx *dep.Ctx, args []string, p *dep.Project return nil } -func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm gps.SourceManager, params gps.SolveParameters) error { -} - func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, sm gps.SourceManager, params gps.SolveParameters) error { -} + if p.Lock == nil { + return errors.New("%s does not exist. nothing to do, as -update works by updating the values in %s.", dep.LockName, dep.LockName) + } -func applyUpdateArgs(args []string, params *gps.SolveParameters) { // When -update is specified without args, allow every project to change versions, regardless of the lock file if len(args) == 0 { params.ChangeAll = true @@ -316,10 +305,29 @@ func applyUpdateArgs(args []string, params *gps.SolveParameters) { // Allow any of specified project versions to change, regardless of the lock file for _, arg := range args { + // Ensure the provided path has a deducible project root + // TODO(sdboyer) do these concurrently + pc, err := getProjectConstraint(arg, sm) + if err != nil { + // TODO(sdboyer) return all errors, not just the first one we encounter + // TODO(sdboyer) ensure these errors are contextualized in a + // sensible way for -update + return err + } + + if !gps.IsAny(pc.Constraint) { + // TODO(sdboyer) constraints should be allowed to allow solves that + // target particular versions while remaining within declared constraints + return errors.Errorf("-update operates according to constraints declared in %s, not CLI arguments.\nYou passed in %s for %s", dep.ManifestName, pc.Constraint, pc.Ident.ProjectRoot) + } + params.ToChange = append(params.ToChange, gps.ProjectRoot(arg)) } } +func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm gps.SourceManager, params gps.SolveParameters) error { +} + func applyEnsureArgs(args []string, overrides stringSlice, p *dep.Project, sm gps.SourceManager, params *gps.SolveParameters) error { var errs []error for _, arg := range args { From 5b03cbba185e1b0607b28611acd26767c667cea3 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Sun, 30 Apr 2017 13:08:37 -0400 Subject: [PATCH 05/34] Fleshing out first pass of -update path --- cmd/dep/ensure.go | 53 ++++++++++++++++++++++++++++++++++++++++++++--- lock.go | 16 +++++++++++++- 2 files changed, 65 insertions(+), 4 deletions(-) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index 266126bc04..9d9a1a4db5 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -248,7 +248,7 @@ func (cmd *ensureCommand) runDefault(ctx *dep.Ctx, args []string, p *dep.Project solver, err := gps.Prepare(params, sm) if err != nil { - return errors.Wrap(err, "ensure Prepare") + return errors.Wrap(err, "prepare solver") } if p.Lock != nil && bytes.Equal(p.Lock.InputHash(), solver.HashInputs()) { @@ -297,13 +297,32 @@ func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, return errors.New("%s does not exist. nothing to do, as -update works by updating the values in %s.", dep.LockName, dep.LockName) } - // When -update is specified without args, allow every project to change versions, regardless of the lock file + // We'll need to discard this prepared solver as later work changes params, + // but solver preparation is cheap and worth doing up front in order to + // perform the fastpath check of hash comparison. + solver, err := gps.Prepare(params, sm) + if err != nil { + return errors.Wrap(err, "fastpath solver prepare") + } + + // Compare the hashes. If they're not equal, bail out and ask the user to + // run a straight `dep ensure` before updating. This is handholding the + // user a bit, but the extra effort required is minimal, and it ensures the + // user is isolating variables in the event of solve problems (was it the + // existing changes, or the -update that caused the problem?). + if bytes.Equal(p.Lock.InputHash(), solver.HashInputs()) { + return errors.Errorf("%s and %s are out of sync. run a plain `dep ensure` to resync them before attempting an -update.", dep.ManifestName, dep.LockName) + } + + // When -update is specified without args, allow every dependency to change + // versions, regardless of the lock file. if len(args) == 0 { params.ChangeAll = true return } - // Allow any of specified project versions to change, regardless of the lock file + // Allow any of specified project versions to change, regardless of the lock + // file. for _, arg := range args { // Ensure the provided path has a deducible project root // TODO(sdboyer) do these concurrently @@ -315,6 +334,10 @@ func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, return err } + if !p.Lock.HasProjectWithRoot(pc.Ident.ProjectRoot) { + return errors.Errorf("%s is not present in %s, cannot -update it", pc.Ident.ProjectRoot, dep.LockName) + } + if !gps.IsAny(pc.Constraint) { // TODO(sdboyer) constraints should be allowed to allow solves that // target particular versions while remaining within declared constraints @@ -323,6 +346,28 @@ func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, params.ToChange = append(params.ToChange, gps.ProjectRoot(arg)) } + + // Re-prepare a solver now that our params are complete. + solver, err = gps.Prepare(params, sm) + if err != nil { + return errors.Wrap(err, "fastpath solver prepare") + } + solution, err := solver.Solve() + if err != nil { + handleAllTheFailuresOfTheWorld(err) + return errors.Wrap(err, "ensure Solve()") + } + + var sw dep.SafeWriter + sw.Prepare(nil, p.Lock, dep.LockFromInterface(solution), dep.VendorOnChanged) + // TODO(sdboyer) special handling for warning cases as described in spec - + // e.g., named projects did not upgrade even though newer versions were + // available. + if cmd.dryRun { + return sw.PrintPreparedActions() + } + + return errors.Wrap(sw.Write(p.AbsRoot, sm, true), "grouped write of manifest, lock and vendor") } func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm gps.SourceManager, params gps.SolveParameters) error { @@ -402,6 +447,8 @@ func (s *stringSlice) Set(value string) error { } func getProjectConstraint(arg string, sm gps.SourceManager) (gps.ProjectConstraint, error) { + // TODO(sdboyer) this func needs to be broken out, now that we admit + // different info in specs constraint := gps.ProjectConstraint{ Constraint: gps.Any(), // default to any; avoids panics later } diff --git a/lock.go b/lock.go index c9d30552f1..52125b8873 100644 --- a/lock.go +++ b/lock.go @@ -5,11 +5,11 @@ package dep import ( + "bytes" "encoding/hex" "io" "sort" - "bytes" "github.com/golang/dep/gps" "github.com/pelletier/go-toml" "github.com/pkg/errors" @@ -95,6 +95,20 @@ func (l *Lock) Projects() []gps.LockedProject { return l.P } +// HasProjectWithRoot checks if the lock contains a project with the provided +// ProjectRoot. +// +// This check is O(n) in the number of projects. +func (l *Lock) HasProjectWithRoot(root gps.ProjectRoot) bool { + for _, p := range l.P { + if p.Ident().ProjectRoot == root { + return true + } + } + + return root +} + // toRaw converts the manifest into a representation suitable to write to the lock file func (l *Lock) toRaw() rawLock { raw := rawLock{ From d3a0679c7b6ef25bb7f0464f1344fbd33aee15a8 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Tue, 2 May 2017 00:32:44 -0400 Subject: [PATCH 06/34] First bits of -add path --- cmd/dep/ensure.go | 88 +++++++++++++++++++++++++++++++++++++++-------- manifest.go | 13 +++++++ 2 files changed, 86 insertions(+), 15 deletions(-) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index 9d9a1a4db5..ef04167495 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -138,17 +138,17 @@ func (cmd *ensureCommand) Run(ctx *dep.Ctx, args []string) error { return errors.New("cannot pass both -add and -update") } - if cmd.update && cmd.vendorOnly { - return errors.New("-vendor-only makes -update a no-op; cannot pass them together") - } - - if cmd.add && cmd.vendorOnly { - return errors.New("-vendor-only makes -add a no-op; cannot pass them together") - } - - if cmd.vendorOnly && cmd.noVendor { - // TODO(sdboyer) can't think of anything not snarky right now - return errors.New("really?") + if cmd.vendorOnly { + if cmd.update { + return errors.New("-vendor-only makes -update a no-op; cannot pass them together") + } + if cmd.add { + return errors.New("-vendor-only makes -add a no-op; cannot pass them together") + } + if cmd.noVendor { + // TODO(sdboyer) can't think of anything not snarky right now + return errors.New("really?") + } } p, err := ctx.LoadProject("") @@ -264,7 +264,6 @@ func (cmd *ensureCommand) runDefault(ctx *dep.Ctx, args []string, p *dep.Project // that "verification" is supposed to look like (#121); in the meantime, // we unconditionally write out vendor/ so that `dep ensure`'s behavior // is maximally compatible with what it will eventually become. - // vendor doesn't exist at all; be helpful and write it. err := sw.Prepare(nil, p.Lock, p.Lock, dep.VendorAlways) if err != nil { return err @@ -309,7 +308,8 @@ func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, // run a straight `dep ensure` before updating. This is handholding the // user a bit, but the extra effort required is minimal, and it ensures the // user is isolating variables in the event of solve problems (was it the - // existing changes, or the -update that caused the problem?). + // "pending" changes, or the -update that caused the problem?). + // TODO(sdboyer) reduce this to a warning? if bytes.Equal(p.Lock.InputHash(), solver.HashInputs()) { return errors.Errorf("%s and %s are out of sync. run a plain `dep ensure` to resync them before attempting an -update.", dep.ManifestName, dep.LockName) } @@ -329,8 +329,7 @@ func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, pc, err := getProjectConstraint(arg, sm) if err != nil { // TODO(sdboyer) return all errors, not just the first one we encounter - // TODO(sdboyer) ensure these errors are contextualized in a - // sensible way for -update + // TODO(sdboyer) ensure these errors are contextualized in a sensible way for -update return err } @@ -338,6 +337,10 @@ func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, return errors.Errorf("%s is not present in %s, cannot -update it", pc.Ident.ProjectRoot, dep.LockName) } + if p.Ident.Source != "" { + return errors.Errorf("cannot specify alternate sources on -update (%s)") + } + if !gps.IsAny(pc.Constraint) { // TODO(sdboyer) constraints should be allowed to allow solves that // target particular versions while remaining within declared constraints @@ -371,6 +374,61 @@ func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, } func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm gps.SourceManager, params gps.SolveParameters) error { + if len(args) == 0 { + return errors.New("must specify at least one project or package to add") + } + + // Compare the hashes. If they're not equal, bail out and ask the user to + // run a straight `dep ensure` before updating. This is handholding the + // user a bit, but the extra effort required is minimal, and it ensures the + // user is isolating variables in the event of solve problems (was it the + // "pending" changes, or the -add that caused the problem?). + // TODO(sdboyer) reduce this to a warning? + if bytes.Equal(p.Lock.InputHash(), solver.HashInputs()) { + return errors.Errorf("%s and %s are out of sync. run a plain `dep ensure` to resync them before attempting an -add.", dep.ManifestName, dep.LockName) + } + + rm, errmap := params.RootPackageTree.ToReachMap(true, true, false, p.Manifest.IgnoredPackages()) + // Having some problematic internal packages isn't cause for termination, + // but the user needs to be warned. + for fail := range errmap { + internal.Logf("Warning: %s", fail) + } + + exmap := make(map[string]bool) + exrmap := make(map[gps.ProjectRoot]bool) + for _, ex := range append(rm.Flatten(false), p.Manifest.RequiredPackages()...) { + exmap[ex] = true + root, err := sm.DeduceProjectRoot(ex) + if err != nil { + // This should be essentially impossible to hit, as it entails that + // we couldn't deduce the root for an import, but that some previous + // solve run WAS able to deduce the root. + return errors.Wrap(err, "could not deduce project root") + } + exrmap[root] = true + } + + for _, arg := range args { + // TODO(sdboyer) return all errors, not just the first one we encounter + // TODO(sdboyer) do these concurrently + pc, err := getProjectConstraint(arg, sm) + if err != nil { + // TODO(sdboyer) ensure these errors are contextualized in a sensible way for -add + return err + } + + inManifest := p.Manifest.HasConstraintsOn(pc.Ident.ProjectRoot) + inImports := exrmap[pc.Ident.ProjectRoot] + if inManifest && inImports { + return errors.Errorf("%s is already in %s and the project's direct imports, nothing to add", pc.Ident.ProjectRoot, dep.ManifestName) + } + + err = sm.SyncSourceFor(pc.Ident) + if err != nil { + return errors.Wrap(err, "failed to fetch source for %s", pc.Ident.ProjectRoot) + } + } } func applyEnsureArgs(args []string, overrides stringSlice, p *dep.Project, sm gps.SourceManager, params *gps.SolveParameters) error { diff --git a/manifest.go b/manifest.go index 621edf1a6a..3be48f0230 100644 --- a/manifest.go +++ b/manifest.go @@ -218,6 +218,19 @@ func (m *Manifest) IgnoredPackages() map[string]bool { return mp } +// HasConstraintsOn checks if the manifest contains either constraints or +// overrides on the provided ProjectRoot. +func (m *Manifest) HasConstraintsOn(root gps.ProjectRoot) bool { + if _, has := m.Dependencies[root]; has { + return true + } + if _, has := m.Ovr[root]; has { + return true + } + + return false +} + func (m *Manifest) RequiredPackages() map[string]bool { if len(m.Required) == 0 { return nil From 6f783e0683a5a508ccc47618e8dcfe9685cc1e91 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Tue, 9 May 2017 00:45:44 -0400 Subject: [PATCH 07/34] Further flesh out -add path Still missing varied error handling on the other side of the solve; need a bitfield to represent all of the state properties we infer about each spec argument. --- cmd/dep/ensure.go | 75 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 74 insertions(+), 1 deletion(-) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index ef04167495..b3f7af42a7 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -409,6 +409,9 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm exrmap[root] = true } + var reqlist []string + //pclist := make(map[gps.ProjectRoot]gps.ProjectConstraint) + for _, arg := range args { // TODO(sdboyer) return all errors, not just the first one we encounter // TODO(sdboyer) do these concurrently @@ -421,14 +424,84 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm inManifest := p.Manifest.HasConstraintsOn(pc.Ident.ProjectRoot) inImports := exrmap[pc.Ident.ProjectRoot] if inManifest && inImports { - return errors.Errorf("%s is already in %s and the project's direct imports, nothing to add", pc.Ident.ProjectRoot, dep.ManifestName) + return errors.Errorf("%s is already in %s and the project's direct imports or required list; nothing to add", pc.Ident.ProjectRoot, dep.ManifestName) } err = sm.SyncSourceFor(pc.Ident) if err != nil { return errors.Wrap(err, "failed to fetch source for %s", pc.Ident.ProjectRoot) } + + someConstraint = pc.Constraint != nil || pc.Ident.Source != "" + if inManifest { + if someConstraint { + return errors.Errorf("%s already contains constraints for %s, cannot specify a version constraint or alternate source", arg, dep.ManifestName) + } + + reqlist = append(reqlist, arg) + p.Manifest.Required = append(p.Manifest.Required, arg) + } else if inImports { + if !someConstraint { + if exmap[arg] { + return errors.Errorf("%s is already imported or required; -add must specify a constraint, but none were provided", arg) + } + + // TODO(sdboyer) this case seems like it's getting overly + // specific and risks muddying the water more than it helps + // No constraints, but the package isn't imported; require it. + reqlist = append(reqlist, arg) + p.Manifest.Required = append(p.Manifest.Required, arg) + } else { + p.Manifest.Dependencies[pc.Ident.ProjectRoot] = gps.ProjectProperties{ + Source: pc.Ident.Source, + Constraint: pc.Constraint, + } + + // Don't require on this branch if the arg was a ProjectRoot; + // most common here will be the user adding constraints to + // something they already imported, and if they specify the + // root, there's a good chance they don't actually want to + // require the project's root package, but are just trying to + // indicate which project should receive the constraints. + if !exmap[arg] && string(pc.Ident.ProjectRoot) != arg { + reqlist = append(reqlist, arg) + p.Manifest.Required = append(p.Manifest.Required, arg) + } + } + } else { + p.Manifest.Dependencies[pc.Ident.ProjectRoot] = gps.ProjectProperties{ + Source: pc.Ident.Source, + Constraint: pc.Constraint, + } + + reqlist = append(reqlist, arg) + p.Manifest.Required = append(p.Manifest.Required, arg) + } } + + // Re-prepare a solver now that our params are complete. + solver, err = gps.Prepare(params, sm) + if err != nil { + return errors.Wrap(err, "fastpath solver prepare") + } + solution, err := solver.Solve() + if err != nil { + // TODO(sdboyer) detect if the failure was specifically about some of + // the -add arguments + handleAllTheFailuresOfTheWorld(err) + return errors.Wrap(err, "ensure Solve()") + } + + var sw dep.SafeWriter + sw.Prepare(nil, p.Lock, dep.LockFromInterface(solution), dep.VendorOnChanged) + // TODO(sdboyer) special handling for warning cases as described in spec - + // e.g., named projects did not upgrade even though newer versions were + // available. + if cmd.dryRun { + return sw.PrintPreparedActions() + } + + return errors.Wrap(sw.Write(p.AbsRoot, sm, true), "grouped write of manifest, lock and vendor") } func applyEnsureArgs(args []string, overrides stringSlice, p *dep.Project, sm gps.SourceManager, params *gps.SolveParameters) error { From a2dda1954fa07dc23509e856f4ded13635aabcd9 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Wed, 10 May 2017 11:59:55 -0400 Subject: [PATCH 08/34] Fix static problems --- cmd/dep/ensure.go | 35 +---------------------------------- 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index b3f7af42a7..189cf2d5e9 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -12,7 +12,6 @@ import ( "go/build" "log" "os" - "path/filepath" "strconv" "strings" @@ -183,38 +182,6 @@ func (cmd *ensureCommand) Run(ctx *dep.Ctx, args []string) error { return cmd.runUpdate(ctx, args, p, sm, params) } return cmd.runDefault(ctx, args, p, sm, params) - - solver, err := gps.Prepare(params, sm) - if err != nil { - return errors.Wrap(err, "ensure Prepare") - } - solution, err := solver.Solve() - if err != nil { - handleAllTheFailuresOfTheWorld(err) - return errors.Wrap(err, "ensure Solve()") - } - - // check if vendor exists, because if the locks are the same but - // vendor does not exist we should write vendor - vendorExists, err := dep.IsNonEmptyDir(filepath.Join(p.AbsRoot, "vendor")) - if err != nil { - return errors.Wrap(err, "ensure vendor is a directory") - } - writeV := dep.VendorOnChanged - if !vendorExists && solution != nil { - writeV = dep.VendorAlways - } - - newLock := dep.LockFromInterface(solution) - sw, err := dep.NewSafeWriter(nil, p.Lock, newLock, writeV) - if err != nil { - return err - } - if cmd.dryRun { - return sw.PrintPreparedActions() - } - - return errors.Wrap(sw.Write(p.AbsRoot, sm, true), "grouped write of manifest, lock and vendor") } func (cmd *ensureCommand) runDefault(ctx *dep.Ctx, args []string, p *dep.Project, sm gps.SourceManager, params gps.SolveParameters) error { @@ -338,7 +305,7 @@ func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, } if p.Ident.Source != "" { - return errors.Errorf("cannot specify alternate sources on -update (%s)") + return errors.Errorf("cannot specify alternate sources on -update (%s)", p.Ident) } if !gps.IsAny(pc.Constraint) { From 48e3fcf32c79a468edcc54e06ebafcd3791d206b Mon Sep 17 00:00:00 2001 From: sam boyer Date: Sun, 4 Jun 2017 20:07:51 -0400 Subject: [PATCH 09/34] Fix compile errors --- cmd/dep/ensure.go | 62 +++++++++++++++++++++++++++++------------------ lock.go | 2 +- 2 files changed, 39 insertions(+), 25 deletions(-) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index 9b0cf09f50..d325a0d0f7 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -122,6 +122,7 @@ type ensureCommand struct { add bool noVendor bool vendorOnly bool + dryRun bool overrides stringSlice } @@ -173,7 +174,6 @@ func (cmd *ensureCommand) Run(ctx *dep.Ctx, args []string) error { return err } - var fail error if cmd.add { return cmd.runAdd(ctx, args, p, sm, params) } else if cmd.update { @@ -191,14 +191,13 @@ func (cmd *ensureCommand) runDefault(ctx *dep.Ctx, args []string, p *dep.Project return errors.New("dep ensure only takes spec arguments with -add or -update - did you want one of those?") } - sw := &dep.SafeWriter{} if cmd.vendorOnly { if p.Lock == nil { return errors.Errorf("no %s exists from which to populate vendor/ directory", dep.LockName) } // Pass the same lock as old and new so that the writer will observe no // difference and choose not to write it out. - err := sw.Prepare(nil, p.Lock, p.Lock, dep.VendorAlways) + sw, err := dep.NewSafeWriter(nil, p.Lock, p.Lock, dep.VendorAlways) if err != nil { return err } @@ -229,7 +228,7 @@ func (cmd *ensureCommand) runDefault(ctx *dep.Ctx, args []string, p *dep.Project // that "verification" is supposed to look like (#121); in the meantime, // we unconditionally write out vendor/ so that `dep ensure`'s behavior // is maximally compatible with what it will eventually become. - err := sw.Prepare(nil, p.Lock, p.Lock, dep.VendorAlways) + sw, err := dep.NewSafeWriter(nil, p.Lock, p.Lock, dep.VendorAlways) if err != nil { return err } @@ -248,9 +247,12 @@ func (cmd *ensureCommand) runDefault(ctx *dep.Ctx, args []string, p *dep.Project return errors.Wrap(err, "ensure Solve()") } - sw.Prepare(nil, p.Lock, dep.LockFromInterface(solution), dep.VendorOnChanged) + sw, err := dep.NewSafeWriter(nil, p.Lock, dep.LockFromInterface(solution), dep.VendorOnChanged) + if err != nil { + return err + } if cmd.dryRun { - return sw.PrintPreparedActions() + return sw.PrintPreparedActions(ctx.Loggers.Out) } return nil @@ -258,7 +260,7 @@ func (cmd *ensureCommand) runDefault(ctx *dep.Ctx, args []string, p *dep.Project func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, sm gps.SourceManager, params gps.SolveParameters) error { if p.Lock == nil { - return errors.New("%s does not exist. nothing to do, as -update works by updating the values in %s.", dep.LockName, dep.LockName) + return errors.Errorf("%s does not exist. nothing to do, as -update works by updating the values in %s.", dep.LockName, dep.LockName) } // We'll need to discard this prepared solver as later work changes params, @@ -283,7 +285,6 @@ func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, // versions, regardless of the lock file. if len(args) == 0 { params.ChangeAll = true - return } // Allow any of specified project versions to change, regardless of the lock @@ -302,8 +303,8 @@ func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, return errors.Errorf("%s is not present in %s, cannot -update it", pc.Ident.ProjectRoot, dep.LockName) } - if p.Ident.Source != "" { - return errors.Errorf("cannot specify alternate sources on -update (%s)", p.Ident) + if pc.Ident.Source != "" { + return errors.Errorf("cannot specify alternate sources on -update (%s)", pc.Ident) } if !gps.IsAny(pc.Constraint) { @@ -326,8 +327,10 @@ func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, return errors.Wrap(err, "ensure Solve()") } - var sw dep.SafeWriter - sw.Prepare(nil, p.Lock, dep.LockFromInterface(solution), dep.VendorOnChanged) + sw, err := dep.NewSafeWriter(nil, p.Lock, dep.LockFromInterface(solution), dep.VendorOnChanged) + if err != nil { + return err + } // TODO(sdboyer) special handling for warning cases as described in spec - // e.g., named projects did not upgrade even though newer versions were // available. @@ -343,6 +346,14 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm return errors.New("must specify at least one project or package to add") } + // We'll need to discard this prepared solver as later work changes params, + // but solver preparation is cheap and worth doing up front in order to + // perform the fastpath check of hash comparison. + solver, err := gps.Prepare(params, sm) + if err != nil { + return errors.Wrap(err, "fastpath solver prepare") + } + // Compare the hashes. If they're not equal, bail out and ask the user to // run a straight `dep ensure` before updating. This is handholding the // user a bit, but the extra effort required is minimal, and it ensures the @@ -357,25 +368,29 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm // Having some problematic internal packages isn't cause for termination, // but the user needs to be warned. for fail := range errmap { - internal.Logf("Warning: %s", fail) + ctx.Loggers.Err.Printf("Warning: %s", fail) } + // Compile unique sets of 1) all external packages imported or required, and + // 2) the project roots under which they fall. exmap := make(map[string]bool) exrmap := make(map[gps.ProjectRoot]bool) - for _, ex := range append(rm.Flatten(false), p.Manifest.RequiredPackages()...) { + + for _, ex := range append(rm.Flatten(false), p.Manifest.Required...) { exmap[ex] = true root, err := sm.DeduceProjectRoot(ex) if err != nil { - // This should be essentially impossible to hit, as it entails that - // we couldn't deduce the root for an import, but that some previous - // solve run WAS able to deduce the root. - return errors.Wrap(err, "could not deduce project root") + // This should be very uncommon to hit, as it entails that we + // couldn't deduce the root for an import, but that some previous + // solve run WAS able to deduce the root. It's most likely to occur + // if the user has e.g. not connected to their organization's VPN, + // and thus cannot access an internal go-get metadata service. + return errors.Wrapf(err, "could not deduce project root for %s", ex) } exrmap[root] = true } var reqlist []string - //pclist := make(map[gps.ProjectRoot]gps.ProjectConstraint) for _, arg := range args { // TODO(sdboyer) return all errors, not just the first one we encounter @@ -394,10 +409,10 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm err = sm.SyncSourceFor(pc.Ident) if err != nil { - return errors.Wrap(err, "failed to fetch source for %s", pc.Ident.ProjectRoot) + return errors.Wrapf(err, "failed to fetch source for %s", pc.Ident.ProjectRoot) } - someConstraint = pc.Constraint != nil || pc.Ident.Source != "" + someConstraint := pc.Constraint != nil || pc.Ident.Source != "" if inManifest { if someConstraint { return errors.Errorf("%s already contains constraints for %s, cannot specify a version constraint or alternate source", arg, dep.ManifestName) @@ -457,13 +472,12 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm return errors.Wrap(err, "ensure Solve()") } - var sw dep.SafeWriter - sw.Prepare(nil, p.Lock, dep.LockFromInterface(solution), dep.VendorOnChanged) + sw, err := dep.NewSafeWriter(nil, p.Lock, dep.LockFromInterface(solution), dep.VendorOnChanged) // TODO(sdboyer) special handling for warning cases as described in spec - // e.g., named projects did not upgrade even though newer versions were // available. if cmd.dryRun { - return sw.PrintPreparedActions() + return sw.PrintPreparedActions(ctx.Loggers.Out) } return errors.Wrap(sw.Write(p.AbsRoot, sm, true), "grouped write of manifest, lock and vendor") diff --git a/lock.go b/lock.go index cc60dc4648..27dba4df6b 100644 --- a/lock.go +++ b/lock.go @@ -106,7 +106,7 @@ func (l *Lock) HasProjectWithRoot(root gps.ProjectRoot) bool { } } - return root + return false } // toRaw converts the manifest into a representation suitable to write to the lock file From ca5a2facca5e03fe32628fe7c59c0aff20816084 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Sun, 4 Jun 2017 20:51:16 -0400 Subject: [PATCH 10/34] Reintroduce -dry-run flag --- cmd/dep/ensure.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index 9e20e90bcc..1bd8070a79 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -35,6 +35,7 @@ Flags: -add: add new dependencies -no-vendor: update Gopkg.lock if needed, but do not update vendor/ -vendor-only: populate vendor/ without updating Gopkg.lock + -dry-run: only report the changes that would be made Ensure gets a project into a complete, compilable, and reproducible state: @@ -115,6 +116,7 @@ func (cmd *ensureCommand) Register(fs *flag.FlagSet) { fs.BoolVar(&cmd.add, "add", false, "add new dependencies, or populate Gopkg.toml with constraints for existing dependencies") fs.BoolVar(&cmd.vendorOnly, "vendor-only", false, "populate vendor/ from Gopkg.lock without updating it first") fs.BoolVar(&cmd.noVendor, "no-vendor", false, "update Gopkg.lock (if needed), but do not update vendor/") + fs.BoolVar(&cmd.dryRun, "dry-run", false, "only report the changes that would be made") } type ensureCommand struct { From d89de7093a8817218a615f785fb69f305b70a35e Mon Sep 17 00:00:00 2001 From: sam boyer Date: Sun, 4 Jun 2017 20:51:29 -0400 Subject: [PATCH 11/34] Move ensure flag validation into separate method --- cmd/dep/ensure.go | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index 1bd8070a79..c0916118d6 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -135,21 +135,8 @@ func (cmd *ensureCommand) Run(ctx *dep.Ctx, args []string) error { return nil } - if cmd.add && cmd.update { - return errors.New("cannot pass both -add and -update") - } - - if cmd.vendorOnly { - if cmd.update { - return errors.New("-vendor-only makes -update a no-op; cannot pass them together") - } - if cmd.add { - return errors.New("-vendor-only makes -add a no-op; cannot pass them together") - } - if cmd.noVendor { - // TODO(sdboyer) can't think of anything not snarky right now - return errors.New("really?") - } + if err := cmd.validateFlags(); err != nil { + return err } p, err := ctx.LoadProject() @@ -185,6 +172,26 @@ func (cmd *ensureCommand) Run(ctx *dep.Ctx, args []string) error { return cmd.runDefault(ctx, args, p, sm, params) } +func (cmd *ensureCommand) validateFlags() error { + if cmd.add && cmd.update { + return errors.New("cannot pass both -add and -update") + } + + if cmd.vendorOnly { + if cmd.update { + return errors.New("-vendor-only makes -update a no-op; cannot pass them together") + } + if cmd.add { + return errors.New("-vendor-only makes -add a no-op; cannot pass them together") + } + if cmd.noVendor { + // TODO(sdboyer) can't think of anything not snarky right now + return errors.New("really?") + } + } + return nil +} + func (cmd *ensureCommand) runDefault(ctx *dep.Ctx, args []string, p *dep.Project, sm gps.SourceManager, params gps.SolveParameters) error { // Bare ensure doesn't take any args. if len(args) != 0 { From 7eea1540fd646df637636b3de99c16dc09839b38 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Sun, 4 Jun 2017 22:40:33 -0400 Subject: [PATCH 12/34] Failure case is when input hashes are NOT eq --- cmd/dep/ensure.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index c0916118d6..a04aa32f69 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -287,8 +287,8 @@ func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, // user is isolating variables in the event of solve problems (was it the // "pending" changes, or the -update that caused the problem?). // TODO(sdboyer) reduce this to a warning? - if bytes.Equal(p.Lock.InputHash(), solver.HashInputs()) { - return errors.Errorf("%s and %s are out of sync. run a plain `dep ensure` to resync them before attempting an -update.", dep.ManifestName, dep.LockName) + if !bytes.Equal(p.Lock.InputHash(), solver.HashInputs()) { + return errors.Errorf("%s and %s are out of sync. run a plain dep ensure to resync them before attempting an -update.", dep.ManifestName, dep.LockName) } // When -update is specified without args, allow every dependency to change @@ -370,8 +370,8 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm // user is isolating variables in the event of solve problems (was it the // "pending" changes, or the -add that caused the problem?). // TODO(sdboyer) reduce this to a warning? - if bytes.Equal(p.Lock.InputHash(), solver.HashInputs()) { - return errors.Errorf("%s and %s are out of sync. run a plain `dep ensure` to resync them before attempting an -add.", dep.ManifestName, dep.LockName) + if !bytes.Equal(p.Lock.InputHash(), solver.HashInputs()) { + return errors.Errorf("%s and %s are out of sync. run a plain dep ensure to resync them before attempting an -add.", dep.ManifestName, dep.LockName) } rm, errmap := params.RootPackageTree.ToReachMap(true, true, false, p.Manifest.IgnoredPackages()) From d341770e1476039f799a3152fcbefd52a54db7d1 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Sun, 4 Jun 2017 23:32:30 -0400 Subject: [PATCH 13/34] Fix several tests, usage output, * constraint use --- cmd/dep/ensure.go | 21 ++++++++++++------- .../ensure/update/case1/initial/Gopkg.lock | 12 +++++++++-- .../ensure/update/case2/final/Gopkg.lock | 8 ++++++- .../ensure/update/case2/initial/Gopkg.lock | 8 ++++++- .../ensure/update/case2/testcase.json | 2 +- 5 files changed, 38 insertions(+), 13 deletions(-) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index a04aa32f69..fbeb07bec5 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -23,8 +23,6 @@ import ( const ensureShortHelp = `Ensure a dependency is safely vendored in the project` const ensureLongHelp = ` -usage: dep ensure [-update | -add] [-no-vendor | -vendor-only] [...] - Project spec: [:alt source][@] @@ -104,8 +102,10 @@ dep ensure -override github.com/pkg/foo@^1.0.1 a last resort, especially if your project may be imported by others. ` -func (cmd *ensureCommand) Name() string { return "ensure" } -func (cmd *ensureCommand) Args() string { return "[spec...]" } +func (cmd *ensureCommand) Name() string { return "ensure" } +func (cmd *ensureCommand) Args() string { + return "[-update | -add] [-no-vendor | -vendor-only] [...]" +} func (cmd *ensureCommand) ShortHelp() string { return ensureShortHelp } func (cmd *ensureCommand) LongHelp() string { return ensureLongHelp } func (cmd *ensureCommand) Hidden() bool { return false } @@ -575,7 +575,7 @@ func getProjectConstraint(arg string, sm gps.SourceManager) (gps.ProjectConstrai // try to split on '@' // When there is no `@`, use any version - versionStr := "*" + var versionStr string atIndex := strings.Index(arg, "@") if atIndex > 0 { parts := strings.SplitN(arg, "@", 2) @@ -604,9 +604,14 @@ func getProjectConstraint(arg string, sm gps.SourceManager) (gps.ProjectConstrai } pi := gps.ProjectIdentifier{ProjectRoot: pr, Source: source} - c, err := deduceConstraint(versionStr, pi, sm) - if err != nil { - return emptyPC, err + var c gps.Constraint + if versionStr != "" { + c, err = deduceConstraint(versionStr, pi, sm) + if err != nil { + return emptyPC, err + } + } else { + c = gps.Any() } return gps.ProjectConstraint{Ident: pi, Constraint: c}, nil } diff --git a/cmd/dep/testdata/harness_tests/ensure/update/case1/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/case1/initial/Gopkg.lock index 04268862a1..7265a5552e 100644 --- a/cmd/dep/testdata/harness_tests/ensure/update/case1/initial/Gopkg.lock +++ b/cmd/dep/testdata/harness_tests/ensure/update/case1/initial/Gopkg.lock @@ -1,13 +1,21 @@ -memo = "9a5243dd3fa20feeaa20398e7283d6c566532e2af1aae279a010df34793761c5" +# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. + [[projects]] name = "github.com/sdboyer/deptest" version = "v0.8.0" revision = "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" packages = ["."] - + [[projects]] name = "github.com/sdboyer/deptestdos" version = "v2.0.0" revision = "5c607206be5decd28e6263ffffdcee067266015e" packages = ["."] + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + inputs-digest = "1b381263a360eafafe3ef7f9be626672668d17250a3c9a8debd169d1b5e2eebb" + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/update/case2/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/case2/final/Gopkg.lock index 4068ebbd34..680da97d99 100644 --- a/cmd/dep/testdata/harness_tests/ensure/update/case2/final/Gopkg.lock +++ b/cmd/dep/testdata/harness_tests/ensure/update/case2/final/Gopkg.lock @@ -1,6 +1,5 @@ # This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. -memo = "9a5243dd3fa20feeaa20398e7283d6c566532e2af1aae279a010df34793761c5" [[projects]] name = "github.com/sdboyer/deptest" @@ -13,3 +12,10 @@ memo = "9a5243dd3fa20feeaa20398e7283d6c566532e2af1aae279a010df34793761c5" version = "v2.0.0" revision = "5c607206be5decd28e6263ffffdcee067266015e" packages = ["."] + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + inputs-digest = "9a5243dd3fa20feeaa20398e7283d6c566532e2af1aae279a010df34793761c5" + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/update/case2/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/case2/initial/Gopkg.lock index 4068ebbd34..680da97d99 100644 --- a/cmd/dep/testdata/harness_tests/ensure/update/case2/initial/Gopkg.lock +++ b/cmd/dep/testdata/harness_tests/ensure/update/case2/initial/Gopkg.lock @@ -1,6 +1,5 @@ # This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. -memo = "9a5243dd3fa20feeaa20398e7283d6c566532e2af1aae279a010df34793761c5" [[projects]] name = "github.com/sdboyer/deptest" @@ -13,3 +12,10 @@ memo = "9a5243dd3fa20feeaa20398e7283d6c566532e2af1aae279a010df34793761c5" version = "v2.0.0" revision = "5c607206be5decd28e6263ffffdcee067266015e" packages = ["."] + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + inputs-digest = "9a5243dd3fa20feeaa20398e7283d6c566532e2af1aae279a010df34793761c5" + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/update/case2/testcase.json b/cmd/dep/testdata/harness_tests/ensure/update/case2/testcase.json index f0ac6111e5..16678ba8b7 100644 --- a/cmd/dep/testdata/harness_tests/ensure/update/case2/testcase.json +++ b/cmd/dep/testdata/harness_tests/ensure/update/case2/testcase.json @@ -1,6 +1,6 @@ { "commands": [ - ["ensure", "-n", "-update", "github.com/sdboyer/deptest"] + ["ensure", "-dry-run", "-update", "github.com/sdboyer/deptest"] ], "error-expected": "", "vendor-final": [] From 05772120f529fe7b53bddd86e03a668da1a3aac3 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Sun, 4 Jun 2017 23:54:13 -0400 Subject: [PATCH 14/34] Remove ensure -override test cases --- .../ensure/override/case1/final/Gopkg.lock | 15 ---- .../ensure/override/case1/final/Gopkg.toml | 71 ------------------- .../ensure/override/case1/initial/main.go | 15 ---- .../ensure/override/case1/testcase.json | 10 --- 4 files changed, 111 deletions(-) delete mode 100644 cmd/dep/testdata/harness_tests/ensure/override/case1/final/Gopkg.lock delete mode 100644 cmd/dep/testdata/harness_tests/ensure/override/case1/final/Gopkg.toml delete mode 100644 cmd/dep/testdata/harness_tests/ensure/override/case1/initial/main.go delete mode 100644 cmd/dep/testdata/harness_tests/ensure/override/case1/testcase.json diff --git a/cmd/dep/testdata/harness_tests/ensure/override/case1/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/override/case1/final/Gopkg.lock deleted file mode 100644 index ccd3cc61fc..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/override/case1/final/Gopkg.lock +++ /dev/null @@ -1,15 +0,0 @@ -# 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 = "8bca9526e654e56e05d9075d1f33fa5b649bf6d58aa7d71ca39e7fbea8468e07" - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/override/case1/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/override/case1/final/Gopkg.toml deleted file mode 100644 index 1bfe549576..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/override/case1/final/Gopkg.toml +++ /dev/null @@ -1,71 +0,0 @@ - -## Gopkg.toml example (these lines may be deleted) - -## "metadata" defines metadata about the project that could be used by other independent -## systems. The metadata defined here will be ignored by dep. -# [metadata] -# key1 = "value that convey data to other systems" -# system1-data = "value that is used by a system" -# system2-data = "value that is used by another system" - -## "required" lists a set of packages (not projects) that must be included in -## Gopkg.lock. This list is merged with the set of packages imported by the current -## project. Use it when your project needs a package it doesn't explicitly import - -## including "main" packages. -# required = ["github.com/user/thing/cmd/thing"] - -## "ignored" lists a set of packages (not projects) that are ignored when -## dep statically analyzes source code. Ignored packages can be in this project, -## or in a dependency. -# ignored = ["github.com/user/project/badpkg"] - -## Constraints are rules for how directly imported projects -## may be incorporated into the depgraph. They are respected by -## dep whether coming from the Gopkg.toml of the current project or a dependency. -# [[constraint]] -## Required: the root import path of the project being constrained. -# name = "github.com/user/project" -# -## Recommended: the version constraint to enforce for the project. -## Only one of "branch", "version" or "revision" can be specified. -# version = "1.0.0" -# branch = "master" -# revision = "abc123" -# -## Optional: an alternate location (URL or import path) for the project's source. -# source = "https://github.com/myfork/package.git" -# -## "metadata" defines metadata about the dependency or override that could be used -## by other independent systems. The metadata defined here will be ignored by dep. -# [metadata] -# key1 = "value that convey data to other systems" -# system1-data = "value that is used by a system" -# system2-data = "value that is used by another system" - -## Overrides have the same structure as [[constraint]], but supersede all -## [[constraint]] declarations from all projects. Only [[override]] from -## the current project's are applied. -## -## Overrides are a sledgehammer. Use them only as a last resort. -# [[override]] -## Required: the root import path of the project being constrained. -# name = "github.com/user/project" -# -## Optional: specifying a version constraint override will cause all other -## constraints on this project to be ignored; only the overridden constraint -## need be satisfied. -## Again, only one of "branch", "version" or "revision" can be specified. -# version = "1.0.0" -# branch = "master" -# revision = "abc123" -# -## Optional: specifying an alternate source location as an override will -## enforce that the alternate location is used for that project, regardless of -## what source location any dependent projects specify. -# source = "https://github.com/myfork/package.git" - - - -[[constraint]] - name = "github.com/sdboyer/deptest" - version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/override/case1/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/override/case1/initial/main.go deleted file mode 100644 index 2953533407..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/override/case1/initial/main.go +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 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 ( - "fmt" - - stuff "github.com/sdboyer/deptest" -) - -func main() { - fmt.Println(stuff.Thing) -} diff --git a/cmd/dep/testdata/harness_tests/ensure/override/case1/testcase.json b/cmd/dep/testdata/harness_tests/ensure/override/case1/testcase.json deleted file mode 100644 index 72e29594ac..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/override/case1/testcase.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "commands": [ - ["init", "-skip-tools"], - ["ensure", "-override", "github.com/sdboyer/deptest@=1.0.0"] - ], - "error-expected": "", - "vendor-final": [ - "github.com/sdboyer/deptest" - ] -} From 8d4226190b760668d990c9a4135e02434a23d25d Mon Sep 17 00:00:00 2001 From: sam boyer Date: Sun, 4 Jun 2017 23:55:20 -0400 Subject: [PATCH 15/34] Hide output from glide importer tests --- cmd/dep/glide_importer_test.go | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/cmd/dep/glide_importer_test.go b/cmd/dep/glide_importer_test.go index c0a5987cf8..03acf6b4f4 100644 --- a/cmd/dep/glide_importer_test.go +++ b/cmd/dep/glide_importer_test.go @@ -6,8 +6,8 @@ package main import ( "bytes" + "io/ioutil" "log" - "os" "path/filepath" "strings" "testing" @@ -20,20 +20,17 @@ import ( const testGlideProjectRoot = "github.com/golang/notexist" -func newTestLoggers() *dep.Loggers { - return &dep.Loggers{ - Out: log.New(os.Stdout, "", 0), - Err: log.New(os.Stderr, "", 0), - Verbose: true, - } -} +var ( + discardLogger = log.New(ioutil.Discard, "", 0) + discardLoggers = &dep.Loggers{Out: discardLogger, Err: discardLogger} +) func newTestContext(h *test.Helper) *dep.Ctx { h.TempDir("src") pwd := h.Path(".") return &dep.Ctx{ GOPATH: pwd, - Loggers: newTestLoggers(), + Loggers: discardLoggers, } } @@ -103,8 +100,7 @@ func TestGlideConfig_Import_MissingLockFile(t *testing.T) { h.Must(err) defer sm.Release() - logger := log.New(os.Stderr, "", 0) - g := newGlideImporter(logger, true, sm) + g := newGlideImporter(discardLogger, true, sm) if !g.HasDepMetadata(projectRoot) { t.Fatal("The glide importer should gracefully handle when only glide.yaml is present") } @@ -262,8 +258,7 @@ func TestGlideConfig_Convert_TestProject(t *testing.T) { func TestGlideConfig_Convert_Ignore(t *testing.T) { pkg := "github.com/sdboyer/deptest" - logger := log.New(os.Stderr, "", 0) - g := newGlideImporter(logger, true, nil) + g := newGlideImporter(discardLogger, true, nil) g.yaml = glideYaml{ Ignores: []string{pkg}, } @@ -283,8 +278,7 @@ func TestGlideConfig_Convert_Ignore(t *testing.T) { } func TestGlideConfig_Convert_ExcludeDir(t *testing.T) { - logger := log.New(os.Stderr, "", 0) - g := newGlideImporter(logger, true, nil) + g := newGlideImporter(discardLogger, true, nil) g.yaml = glideYaml{ ExcludeDirs: []string{"samples"}, } @@ -304,8 +298,7 @@ func TestGlideConfig_Convert_ExcludeDir(t *testing.T) { } func TestGlideConfig_Convert_ExcludeDir_IgnoresMismatchedPackageName(t *testing.T) { - logger := log.New(os.Stderr, "", 0) - g := newGlideImporter(logger, true, nil) + g := newGlideImporter(discardLogger, true, nil) g.yaml = glideYaml{ Name: "github.com/golang/mismatched-package-name", ExcludeDirs: []string{"samples"}, @@ -358,8 +351,7 @@ func TestGlideConfig_Convert_WarnsForUnusedFields(t *testing.T) { } func TestGlideConfig_Convert_BadInput_EmptyPackageName(t *testing.T) { - logger := log.New(os.Stderr, "", 0) - g := newGlideImporter(logger, true, nil) + g := newGlideImporter(discardLogger, true, nil) g.yaml = glideYaml{ Imports: []glidePackage{{Name: ""}}, } From 9c05d3755c1370499a8e82a150893afd036ddeed Mon Sep 17 00:00:00 2001 From: sam boyer Date: Mon, 5 Jun 2017 01:14:24 -0400 Subject: [PATCH 16/34] Actually perform write in default ensure case --- cmd/dep/ensure.go | 2 +- .../ensure/empty/case3/initial/Gopkg.lock | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index fbeb07bec5..b349e1b75a 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -265,7 +265,7 @@ func (cmd *ensureCommand) runDefault(ctx *dep.Ctx, args []string, p *dep.Project return sw.PrintPreparedActions(ctx.Loggers.Out) } - return nil + return errors.Wrap(sw.Write(p.AbsRoot, sm, false), "grouped write of manifest, lock and vendor") } func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, sm gps.SourceManager, params gps.SolveParameters) error { diff --git a/cmd/dep/testdata/harness_tests/ensure/empty/case3/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/empty/case3/initial/Gopkg.lock index 4fc4f785c5..5bfebb27d0 100644 --- a/cmd/dep/testdata/harness_tests/ensure/empty/case3/initial/Gopkg.lock +++ b/cmd/dep/testdata/harness_tests/ensure/empty/case3/initial/Gopkg.lock @@ -1,7 +1,15 @@ -memo = "e5c16e09ed6f0a1a2b3cf472c34b7fd50861dd070e81d5e623f72e8173f0c065" +# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. + [[projects]] branch = "master" name = "github.com/sdboyer/deptest" packages = ["."] revision = "3f4c3bea144e112a69bbe5d8d01c1b09a544253f" + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + inputs-digest = "8114537cd7d93f5eacebdea7dfec0c3c10919d7f952d056e2a3142fee1c33aee" + solver-name = "gps-cdcl" + solver-version = 1 From 8da156c82fa4b88b1705051f976598288163c9cb Mon Sep 17 00:00:00 2001 From: sam boyer Date: Sun, 11 Jun 2017 22:53:02 -0400 Subject: [PATCH 17/34] Remove tests of defunct ensure behavior --- .../ensure/package/case1/final/Gopkg.lock | 15 ------------- .../ensure/package/case1/final/Gopkg.toml | 4 ---- .../ensure/package/case1/initial/Gopkg.lock | 7 ------- .../ensure/package/case1/initial/Gopkg.toml | 4 ---- .../ensure/package/case1/initial/main.go | 12 ----------- .../ensure/package/case1/testcase.json | 13 ------------ .../ensure/package/case2/final/Gopkg.lock | 15 ------------- .../ensure/package/case2/final/Gopkg.toml | 4 ---- .../ensure/package/case2/initial/Gopkg.lock | 7 ------- .../ensure/package/case2/initial/Gopkg.toml | 4 ---- .../ensure/package/case2/initial/main.go | 12 ----------- .../ensure/package/case2/testcase.json | 13 ------------ .../ensure/update/case2/final/Gopkg.lock | 21 ------------------- .../ensure/update/case2/final/Gopkg.toml | 3 --- .../ensure/update/case2/initial/Gopkg.lock | 21 ------------------- .../ensure/update/case2/initial/Gopkg.toml | 3 --- .../ensure/update/case2/initial/main.go | 18 ---------------- .../ensure/update/case2/testcase.json | 7 ------- 18 files changed, 183 deletions(-) delete mode 100644 cmd/dep/testdata/harness_tests/ensure/package/case1/final/Gopkg.lock delete mode 100644 cmd/dep/testdata/harness_tests/ensure/package/case1/final/Gopkg.toml delete mode 100644 cmd/dep/testdata/harness_tests/ensure/package/case1/initial/Gopkg.lock delete mode 100644 cmd/dep/testdata/harness_tests/ensure/package/case1/initial/Gopkg.toml delete mode 100644 cmd/dep/testdata/harness_tests/ensure/package/case1/initial/main.go delete mode 100644 cmd/dep/testdata/harness_tests/ensure/package/case1/testcase.json delete mode 100644 cmd/dep/testdata/harness_tests/ensure/package/case2/final/Gopkg.lock delete mode 100644 cmd/dep/testdata/harness_tests/ensure/package/case2/final/Gopkg.toml delete mode 100644 cmd/dep/testdata/harness_tests/ensure/package/case2/initial/Gopkg.lock delete mode 100644 cmd/dep/testdata/harness_tests/ensure/package/case2/initial/Gopkg.toml delete mode 100644 cmd/dep/testdata/harness_tests/ensure/package/case2/initial/main.go delete mode 100644 cmd/dep/testdata/harness_tests/ensure/package/case2/testcase.json delete mode 100644 cmd/dep/testdata/harness_tests/ensure/update/case2/final/Gopkg.lock delete mode 100644 cmd/dep/testdata/harness_tests/ensure/update/case2/final/Gopkg.toml delete mode 100644 cmd/dep/testdata/harness_tests/ensure/update/case2/initial/Gopkg.lock delete mode 100644 cmd/dep/testdata/harness_tests/ensure/update/case2/initial/Gopkg.toml delete mode 100644 cmd/dep/testdata/harness_tests/ensure/update/case2/initial/main.go delete mode 100644 cmd/dep/testdata/harness_tests/ensure/update/case2/testcase.json diff --git a/cmd/dep/testdata/harness_tests/ensure/package/case1/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/package/case1/final/Gopkg.lock deleted file mode 100644 index c7f497e7a1..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/package/case1/final/Gopkg.lock +++ /dev/null @@ -1,15 +0,0 @@ -# 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/package/case1/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/package/case1/final/Gopkg.toml deleted file mode 100644 index bbd0a05ba9..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/package/case1/final/Gopkg.toml +++ /dev/null @@ -1,4 +0,0 @@ - -[[constraint]] - name = "github.com/sdboyer/deptest" - version = "0.8.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/package/case1/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/package/case1/initial/Gopkg.lock deleted file mode 100644 index 7d21016835..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/package/case1/initial/Gopkg.lock +++ /dev/null @@ -1,7 +0,0 @@ -memo = "88d2718cda70cce45158f953d2c6ead79c1db38e67e9704aff72be8fddb096e7" - -[[projects]] - name = "github.com/sdboyer/deptest" - packages = ["."] - revision = "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" - version = "v0.8.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/package/case1/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/package/case1/initial/Gopkg.toml deleted file mode 100644 index bbd0a05ba9..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/package/case1/initial/Gopkg.toml +++ /dev/null @@ -1,4 +0,0 @@ - -[[constraint]] - name = "github.com/sdboyer/deptest" - version = "0.8.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/package/case1/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/package/case1/initial/main.go deleted file mode 100644 index e23fcf34c5..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/package/case1/initial/main.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2017 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/package/case1/testcase.json b/cmd/dep/testdata/harness_tests/ensure/package/case1/testcase.json deleted file mode 100644 index c14af6577e..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/package/case1/testcase.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "commands": [ - ["ensure", "github.com/sdboyer/deptest@v1.0.0"] - ], - "error-expected": "", - "gopath-initial": { - "github.com/sdboyer/deptest": "v0.8.0", - "github.com/sdboyer/deptestdos": "a0196baa11ea047dd65037287451d36b861b00ea" - }, - "vendor-final": [ - "github.com/sdboyer/deptest" - ] -} diff --git a/cmd/dep/testdata/harness_tests/ensure/package/case2/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/package/case2/final/Gopkg.lock deleted file mode 100644 index 47206963e8..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/package/case2/final/Gopkg.lock +++ /dev/null @@ -1,15 +0,0 @@ -# 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 = "v0.8.0" - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - inputs-digest = "b4e7a61f3a7fd8bbb1db94ed05b0d3675fb796d6058ff0a6fa95a47be0a171eb" - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/package/case2/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/package/case2/final/Gopkg.toml deleted file mode 100644 index bbd0a05ba9..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/package/case2/final/Gopkg.toml +++ /dev/null @@ -1,4 +0,0 @@ - -[[constraint]] - name = "github.com/sdboyer/deptest" - version = "0.8.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/package/case2/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/package/case2/initial/Gopkg.lock deleted file mode 100644 index 7d21016835..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/package/case2/initial/Gopkg.lock +++ /dev/null @@ -1,7 +0,0 @@ -memo = "88d2718cda70cce45158f953d2c6ead79c1db38e67e9704aff72be8fddb096e7" - -[[projects]] - name = "github.com/sdboyer/deptest" - packages = ["."] - revision = "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" - version = "v0.8.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/package/case2/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/package/case2/initial/Gopkg.toml deleted file mode 100644 index bbd0a05ba9..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/package/case2/initial/Gopkg.toml +++ /dev/null @@ -1,4 +0,0 @@ - -[[constraint]] - name = "github.com/sdboyer/deptest" - version = "0.8.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/package/case2/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/package/case2/initial/main.go deleted file mode 100644 index e23fcf34c5..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/package/case2/initial/main.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2017 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/package/case2/testcase.json b/cmd/dep/testdata/harness_tests/ensure/package/case2/testcase.json deleted file mode 100644 index e737374376..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/package/case2/testcase.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "commands": [ - ["ensure", "github.com/sdboyer/deptest"] - ], - "error-expected": "", - "gopath-initial": { - "github.com/sdboyer/deptest": "v0.8.0", - "github.com/sdboyer/deptestdos": "a0196baa11ea047dd65037287451d36b861b00ea" - }, - "vendor-final": [ - "github.com/sdboyer/deptest" - ] -} diff --git a/cmd/dep/testdata/harness_tests/ensure/update/case2/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/case2/final/Gopkg.lock deleted file mode 100644 index 680da97d99..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/update/case2/final/Gopkg.lock +++ /dev/null @@ -1,21 +0,0 @@ -# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. - - -[[projects]] - name = "github.com/sdboyer/deptest" - version = "v0.8.0" - revision = "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" - packages = ["."] - -[[projects]] - name = "github.com/sdboyer/deptestdos" - version = "v2.0.0" - revision = "5c607206be5decd28e6263ffffdcee067266015e" - packages = ["."] - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - inputs-digest = "9a5243dd3fa20feeaa20398e7283d6c566532e2af1aae279a010df34793761c5" - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/update/case2/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/case2/final/Gopkg.toml deleted file mode 100644 index 532da96a0d..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/update/case2/final/Gopkg.toml +++ /dev/null @@ -1,3 +0,0 @@ -[[constraint]] - name = "github.com/sdboyer/deptest" - version = "~0.8.0" \ No newline at end of file diff --git a/cmd/dep/testdata/harness_tests/ensure/update/case2/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/case2/initial/Gopkg.lock deleted file mode 100644 index 680da97d99..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/update/case2/initial/Gopkg.lock +++ /dev/null @@ -1,21 +0,0 @@ -# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. - - -[[projects]] - name = "github.com/sdboyer/deptest" - version = "v0.8.0" - revision = "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" - packages = ["."] - -[[projects]] - name = "github.com/sdboyer/deptestdos" - version = "v2.0.0" - revision = "5c607206be5decd28e6263ffffdcee067266015e" - packages = ["."] - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - inputs-digest = "9a5243dd3fa20feeaa20398e7283d6c566532e2af1aae279a010df34793761c5" - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/update/case2/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/case2/initial/Gopkg.toml deleted file mode 100644 index 532da96a0d..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/update/case2/initial/Gopkg.toml +++ /dev/null @@ -1,3 +0,0 @@ -[[constraint]] - name = "github.com/sdboyer/deptest" - version = "~0.8.0" \ No newline at end of file diff --git a/cmd/dep/testdata/harness_tests/ensure/update/case2/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/update/case2/initial/main.go deleted file mode 100644 index 2eae5b511d..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/update/case2/initial/main.go +++ /dev/null @@ -1,18 +0,0 @@ -// 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" - "github.com/sdboyer/deptestdos" -) - -func main() { - err := nil - if err != nil { - deptest.Map["yo yo!"] - } - deptestdos.diMeLo("whatev") -} diff --git a/cmd/dep/testdata/harness_tests/ensure/update/case2/testcase.json b/cmd/dep/testdata/harness_tests/ensure/update/case2/testcase.json deleted file mode 100644 index 16678ba8b7..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/update/case2/testcase.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "commands": [ - ["ensure", "-dry-run", "-update", "github.com/sdboyer/deptest"] - ], - "error-expected": "", - "vendor-final": [] -} From 424b7ff8855c5667accfdd259dca40422555f505 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Wed, 14 Jun 2017 23:20:19 -0400 Subject: [PATCH 18/34] Remove more unused code --- cmd/dep/ensure.go | 60 ----------------------------------------------- 1 file changed, 60 deletions(-) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index b349e1b75a..f806b4b258 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -10,7 +10,6 @@ import ( "flag" "fmt" "go/build" - "log" "strconv" "strings" @@ -493,65 +492,6 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm return errors.Wrap(sw.Write(p.AbsRoot, sm, true), "grouped write of manifest, lock and vendor") } -func applyEnsureArgs(logger *log.Logger, args []string, overrides stringSlice, p *dep.Project, sm gps.SourceManager, params *gps.SolveParameters) error { - var errs []error - for _, arg := range args { - pc, err := getProjectConstraint(arg, sm) - if err != nil { - errs = append(errs, err) - continue - } - - if gps.IsAny(pc.Constraint) && pc.Ident.Source == "" { - // If the input specified neither a network name nor a constraint, - // then the strict thing to do would be to remove the entry - // entirely. But that would probably be quite surprising for users, - // and it's what rm is for, so just ignore the input. - // - // TODO(sdboyer): for this case - or just in general - do we want to - // add project args to the requires list temporarily for this run? - if _, has := p.Manifest.Constraints[pc.Ident.ProjectRoot]; !has { - logger.Printf("dep: No constraint or alternate source specified for %q, omitting from manifest\n", pc.Ident.ProjectRoot) - } - // If it's already in the manifest, no need to log - continue - } - - p.Manifest.Constraints[pc.Ident.ProjectRoot] = gps.ProjectProperties{ - Source: pc.Ident.Source, - Constraint: pc.Constraint, - } - } - - for _, ovr := range overrides { - pc, err := getProjectConstraint(ovr, sm) - if err != nil { - errs = append(errs, err) - continue - } - - // Empty overrides are fine (in contrast to deps), because they actually - // carry meaning - they force the constraints entirely open for a given - // project. Inadvisable, but meaningful. - - p.Manifest.Ovr[pc.Ident.ProjectRoot] = gps.ProjectProperties{ - Source: pc.Ident.Source, - Constraint: pc.Constraint, - } - } - - if len(errs) > 0 { - var buf bytes.Buffer - for _, err := range errs { - fmt.Fprintln(&buf, err) - } - - return errors.New(buf.String()) - } - - return nil -} - type stringSlice []string func (s *stringSlice) String() string { From f4f7aba8cb57a9ad1894819fdc0af6b04c040ccd Mon Sep 17 00:00:00 2001 From: sam boyer Date: Wed, 14 Jun 2017 23:27:13 -0400 Subject: [PATCH 19/34] Tests for ensure flag/arg validation --- cmd/dep/ensure_test.go | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/cmd/dep/ensure_test.go b/cmd/dep/ensure_test.go index 478e686e13..c659f75ff6 100644 --- a/cmd/dep/ensure_test.go +++ b/cmd/dep/ensure_test.go @@ -74,3 +74,43 @@ func TestDeduceConstraint_InvalidInput(t *testing.T) { } } } + +func TestInvalidEnsureFlagCombinations(t *testing.T) { + ec := &ensureCommand{ + update: true, + add: true, + } + + if err := ec.validateFlags(); err == nil { + t.Error("-add and -update together should fail validation") + } + + ec.vendorOnly, ec.add = true, false + if err := ec.validateFlags(); err == nil { + t.Error("-vendor-only with -update should fail validation") + } + + ec.add, ec.update = true, false + if err := ec.validateFlags(); err == nil { + t.Error("-vendor-only with -add should fail validation") + } + + ec.noVendor, ec.add = true, false + if err := ec.validateFlags(); err == nil { + t.Error("-vendor-only with -no-vendor should fail validation") + } + ec.noVendor = false + + // Also verify that the plain ensure path takes no args. This is a shady + // test, as lots of other things COULD return errors, and we don't check + // anything other than the error being non-nil. For now, it works well + // because a panic will quickly result if the initial arg length validation + // checks are incorrectly handled. + if err := ec.runDefault(nil, []string{"foo"}, nil, nil, gps.SolveParameters{}); err == nil { + t.Errorf("no args to plain ensure with -vendor-only") + } + ec.vendorOnly = false + if err := ec.runDefault(nil, []string{"foo"}, nil, nil, gps.SolveParameters{}); err == nil { + t.Errorf("no args to plain ensure") + } +} From 6e855dfae45fac8e9e6a9a3199ab7f8657a9376c Mon Sep 17 00:00:00 2001 From: sam boyer Date: Fri, 16 Jun 2017 23:27:02 -0400 Subject: [PATCH 20/34] SafeWriter should not write out an unchanged lock --- txn_writer.go | 20 +++++++++++++------- txn_writer_test.go | 24 ++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/txn_writer.go b/txn_writer.go index 342b1c5116..ffdf505446 100644 --- a/txn_writer.go +++ b/txn_writer.go @@ -108,6 +108,7 @@ type SafeWriter struct { lock *Lock lockDiff *gps.LockDiff writeVendor bool + writeLock bool } // NewSafeWriter sets up a SafeWriter to write a set of config yaml, lock and vendor tree. @@ -129,20 +130,25 @@ func NewSafeWriter(manifest *Manifest, oldLock, newLock *Lock, vendor VendorBeha Manifest: manifest, lock: newLock, } + if oldLock != nil { if newLock == nil { return nil, errors.New("must provide newLock when oldLock is specified") } + sw.lockDiff = gps.DiffLocks(oldLock, newLock) + if sw.lockDiff != nil { + sw.writeLock = true + } + } else if newLock != nil { + sw.writeLock = true } switch vendor { case VendorAlways: sw.writeVendor = true case VendorOnChanged: - if sw.lockDiff != nil || (newLock != nil && oldLock == nil) { - sw.writeVendor = true - } + sw.writeVendor = sw.lockDiff != nil || (newLock != nil && oldLock == nil) } if sw.writeVendor && newLock == nil { @@ -307,7 +313,7 @@ func (sw *SafeWriter) Write(root string, sm gps.SourceManager, examples bool) er return err } - if !sw.HasManifest() && !sw.HasLock() && !sw.writeVendor { + if !sw.HasManifest() && !sw.writeLock && !sw.writeVendor { // nothing to do return nil } @@ -341,7 +347,7 @@ func (sw *SafeWriter) Write(root string, sm gps.SourceManager, examples bool) er } } - if sw.HasLock() { + if sw.writeLock { l, err := sw.lock.MarshalTOML() if err != nil { return errors.Wrap(err, "failed to marshal lock to TOML") @@ -394,7 +400,7 @@ func (sw *SafeWriter) Write(root string, sm gps.SourceManager, examples bool) er } } - if sw.HasLock() { + if sw.writeLock { if _, err := os.Stat(lpath); err == nil { // Move out the old one. tmploc := filepath.Join(td, LockName+".orig") @@ -468,7 +474,7 @@ func (sw *SafeWriter) PrintPreparedActions(output *log.Logger) error { output.Println(string(m)) } - if sw.HasLock() { + if sw.writeLock { if sw.lockDiff == nil { output.Printf("Would have written the following %s:\n", LockName) l, err := sw.lock.MarshalTOML() diff --git a/txn_writer_test.go b/txn_writer_test.go index c0f0b9187a..ad550cd92d 100644 --- a/txn_writer_test.go +++ b/txn_writer_test.go @@ -182,6 +182,9 @@ func TestSafeWriter_ManifestAndUnmodifiedLock(t *testing.T) { if !sw.HasLock() { t.Fatal("Expected the payload to contain the lock.") } + if sw.writeLock { + t.Fatal("Did not expect that the writer should plan to write the lock") + } if sw.writeVendor { t.Fatal("Did not expect the payload to contain the vendor directory") } @@ -224,6 +227,9 @@ func TestSafeWriter_ManifestAndUnmodifiedLockWithForceVendor(t *testing.T) { if !sw.HasLock() { t.Fatal("Expected the payload to contain the lock") } + if sw.writeLock { + t.Fatal("Did not expect that the writer should plan to write the lock") + } if !sw.writeVendor { t.Fatal("Expected the payload to contain the vendor directory") } @@ -269,6 +275,9 @@ func TestSafeWriter_ModifiedLock(t *testing.T) { t.Fatal("Did not expect the manifest to be written") } if !sw.HasLock() { + t.Fatal("Expected the payload to contain the lock") + } + if !sw.writeLock { t.Fatal("Expected that the writer should plan to write the lock") } if !sw.writeVendor { @@ -318,6 +327,9 @@ func TestSafeWriter_ModifiedLockSkipVendor(t *testing.T) { if !sw.HasLock() { t.Fatal("Expected the payload to contain the lock") } + if !sw.writeLock { + t.Fatal("Expected that the writer should plan to write the lock") + } if sw.writeVendor { t.Fatal("Did not expect the payload to contain the vendor directory") } @@ -362,6 +374,9 @@ func TestSafeWriter_ForceVendorWhenVendorAlreadyExists(t *testing.T) { if !sw.HasLock() { t.Fatal("Expected the payload to contain the lock") } + if !sw.writeLock { + t.Fatal("Expected that the writer should plan to write the lock") + } if !sw.writeVendor { t.Fatal("Expected the payload to contain the vendor directory ") } @@ -408,6 +423,9 @@ func TestSafeWriter_NewLock(t *testing.T) { if !sw.HasLock() { t.Fatal("Expected the payload to contain the lock") } + if !sw.writeLock { + t.Fatal("Expected that the writer should plan to write the lock") + } if !sw.writeVendor { t.Fatal("Expected the payload to contain the vendor directory") } @@ -452,6 +470,9 @@ func TestSafeWriter_NewLockSkipVendor(t *testing.T) { if !sw.HasLock() { t.Fatal("Expected the payload to contain the lock") } + if !sw.writeLock { + t.Fatal("Expected that the writer should plan to write the lock") + } if sw.writeVendor { t.Fatal("Did not expect the payload to contain the vendor directory") } @@ -543,6 +564,9 @@ func TestSafeWriter_VendorDotGitPreservedWithForceVendor(t *testing.T) { if !sw.HasLock() { t.Fatal("Expected the payload to contain the lock") } + if sw.writeLock { + t.Fatal("Did not expect that the writer should plan to write the lock") + } if !sw.writeVendor { t.Fatal("Expected the payload to contain the vendor directory") } From 8239b961adb9c04095e599a9841738b0282503ae Mon Sep 17 00:00:00 2001 From: sam boyer Date: Sat, 17 Jun 2017 00:40:49 -0400 Subject: [PATCH 21/34] Add a swath of tests for ensure, ensure -update This should cover most of their input permutations and error cases. --- .../default/hasheq-dry/final/Gopkg.lock | 15 +++++ .../default/hasheq-dry/final/Gopkg.toml | 4 ++ .../default/hasheq-dry/initial/Gopkg.lock | 15 +++++ .../default/hasheq-dry/initial/Gopkg.toml | 4 ++ .../ensure/default/hasheq-dry/initial/main.go | 12 ++++ .../ensure/default/hasheq-dry/testcase.json | 5 ++ .../default/hasheq-novendor/final/Gopkg.lock | 15 +++++ .../default/hasheq-novendor/final/Gopkg.toml | 4 ++ .../hasheq-novendor/initial/Gopkg.lock | 15 +++++ .../hasheq-novendor/initial/Gopkg.toml | 4 ++ .../default/hasheq-novendor/initial/main.go | 12 ++++ .../default/hasheq-novendor/testcase.json | 5 ++ .../ensure/default/hasheq/final/Gopkg.lock | 15 +++++ .../ensure/default/hasheq/final/Gopkg.toml | 4 ++ .../ensure/default/hasheq/initial/Gopkg.lock | 15 +++++ .../ensure/default/hasheq/initial/Gopkg.toml | 4 ++ .../ensure/default/hasheq/initial/main.go | 12 ++++ .../ensure/default/hasheq/testcase.json | 8 +++ .../hashneq-vendoronly/final/Gopkg.lock | 16 +++++ .../hashneq-vendoronly/final/Gopkg.toml | 4 ++ .../hashneq-vendoronly/initial/Gopkg.lock | 16 +++++ .../hashneq-vendoronly/initial/Gopkg.toml | 4 ++ .../hashneq-vendoronly/initial/main.go | 12 ++++ .../default/hashneq-vendoronly/testcase.json | 8 +++ .../lockless-vendoronly/final/Gopkg.toml | 4 ++ .../default/lockless-vendoronly/final/main.go | 12 ++++ .../lockless-vendoronly/initial/Gopkg.toml | 4 ++ .../lockless-vendoronly/initial/main.go | 12 ++++ .../default/lockless-vendoronly/testcase.json | 6 ++ .../ensure/default/specargs/final/Gopkg.lock | 15 +++++ .../ensure/default/specargs/final/Gopkg.toml | 4 ++ .../default/specargs/initial/Gopkg.lock | 15 +++++ .../default/specargs/initial/Gopkg.toml | 4 ++ .../ensure/default/specargs/initial/main.go | 12 ++++ .../ensure/default/specargs/testcase.json | 6 ++ .../ensure/empty/case1/final/Gopkg.toml | 67 ------------------- .../ensure/empty/case1/testcase.json | 3 +- .../ensure/update/desync/final/Gopkg.lock | 21 ++++++ .../ensure/update/desync/final/Gopkg.toml | 3 + .../ensure/update/desync/final/main.go | 18 +++++ .../ensure/update/desync/initial/Gopkg.lock | 21 ++++++ .../ensure/update/desync/initial/Gopkg.toml | 3 + .../ensure/update/desync/initial/main.go | 18 +++++ .../ensure/update/desync/testcase.json | 6 ++ .../ensure/update/lockless/final/Gopkg.toml | 4 ++ .../ensure/update/lockless/final/main.go | 12 ++++ .../ensure/update/lockless/initial/Gopkg.toml | 4 ++ .../ensure/update/lockless/initial/main.go | 12 ++++ .../ensure/update/lockless/testcase.json | 6 ++ .../update/nonroot-arg/final/Gopkg.lock | 15 +++++ .../update/nonroot-arg/final/Gopkg.toml | 3 + .../update/nonroot-arg/initial/Gopkg.lock | 15 +++++ .../update/nonroot-arg/initial/Gopkg.toml | 3 + .../ensure/update/nonroot-arg/initial/main.go | 13 ++++ .../ensure/update/nonroot-arg/testcase.json | 6 ++ .../update/not-in-lock/final/Gopkg.lock | 15 +++++ .../update/not-in-lock/final/Gopkg.toml | 3 + .../update/not-in-lock/initial/Gopkg.lock | 15 +++++ .../update/not-in-lock/initial/Gopkg.toml | 3 + .../ensure/update/not-in-lock/initial/main.go | 13 ++++ .../ensure/update/not-in-lock/testcase.json | 6 ++ .../spec-with-constraint/final/Gopkg.lock | 15 +++++ .../spec-with-constraint/final/Gopkg.toml | 3 + .../spec-with-constraint/initial/Gopkg.lock | 15 +++++ .../spec-with-constraint/initial/Gopkg.toml | 3 + .../spec-with-constraint/initial/main.go | 13 ++++ .../update/spec-with-constraint/testcase.json | 6 ++ .../update/spec-with-source/final/Gopkg.lock | 15 +++++ .../update/spec-with-source/final/Gopkg.toml | 3 + .../spec-with-source/initial/Gopkg.lock | 15 +++++ .../spec-with-source/initial/Gopkg.toml | 3 + .../update/spec-with-source/initial/main.go | 13 ++++ .../update/spec-with-source/testcase.json | 6 ++ 73 files changed, 671 insertions(+), 69 deletions(-) create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq-dry/final/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq-dry/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq-dry/initial/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq-dry/initial/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq-dry/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq-dry/testcase.json create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor/final/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor/initial/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor/initial/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor/testcase.json create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq/final/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq/initial/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq/initial/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hasheq/testcase.json create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hashneq-vendoronly/final/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hashneq-vendoronly/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hashneq-vendoronly/initial/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hashneq-vendoronly/initial/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hashneq-vendoronly/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/hashneq-vendoronly/testcase.json create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/final/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/initial/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/testcase.json create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/specargs/final/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/specargs/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/specargs/initial/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/specargs/initial/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/specargs/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/default/specargs/testcase.json create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/desync/final/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/desync/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/desync/final/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/desync/initial/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/desync/initial/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/desync/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/desync/testcase.json create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/lockless/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/lockless/final/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/lockless/initial/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/lockless/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/lockless/testcase.json create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/final/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/initial/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/initial/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/testcase.json create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/final/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/initial/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/initial/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/testcase.json create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/final/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/initial/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/initial/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/testcase.json create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/final/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/initial/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/initial/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/testcase.json diff --git a/cmd/dep/testdata/harness_tests/ensure/default/hasheq-dry/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-dry/final/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-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-dry/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-dry/final/Gopkg.toml new file mode 100644 index 0000000000..e242e02114 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-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-dry/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-dry/initial/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-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-dry/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-dry/initial/Gopkg.toml new file mode 100644 index 0000000000..e242e02114 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-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-dry/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-dry/initial/main.go new file mode 100644 index 0000000000..1fe0d19d6a --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-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-dry/testcase.json b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-dry/testcase.json new file mode 100644 index 0000000000..21daf3e990 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-dry/testcase.json @@ -0,0 +1,5 @@ +{ + "commands": [ + ["ensure", "-dry-run"] + ] +} diff --git a/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor/final/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor/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/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor/final/Gopkg.toml new file mode 100644 index 0000000000..e242e02114 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor/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/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor/initial/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor/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/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor/initial/Gopkg.toml new file mode 100644 index 0000000000..e242e02114 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor/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/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor/initial/main.go new file mode 100644 index 0000000000..1fe0d19d6a --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor/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/testcase.json b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor/testcase.json new file mode 100644 index 0000000000..7692eecf88 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq-novendor/testcase.json @@ -0,0 +1,5 @@ +{ + "commands": [ + ["ensure", "-no-vendor"] + ] +} diff --git a/cmd/dep/testdata/harness_tests/ensure/default/hasheq/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/default/hasheq/final/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq/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/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/default/hasheq/final/Gopkg.toml new file mode 100644 index 0000000000..e242e02114 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq/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/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/default/hasheq/initial/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq/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/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/default/hasheq/initial/Gopkg.toml new file mode 100644 index 0000000000..e242e02114 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq/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/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/default/hasheq/initial/main.go new file mode 100644 index 0000000000..1fe0d19d6a --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq/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/testcase.json b/cmd/dep/testdata/harness_tests/ensure/default/hasheq/testcase.json new file mode 100644 index 0000000000..19da527090 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hasheq/testcase.json @@ -0,0 +1,8 @@ +{ + "commands": [ + ["ensure"] + ], + "vendor-final": [ + "github.com/sdboyer/deptest" + ] +} diff --git a/cmd/dep/testdata/harness_tests/ensure/default/hashneq-vendoronly/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-vendoronly/final/Gopkg.lock new file mode 100644 index 0000000000..11cb12c378 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-vendoronly/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-vendoronly/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-vendoronly/final/Gopkg.toml new file mode 100644 index 0000000000..e242e02114 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-vendoronly/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-vendoronly/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-vendoronly/initial/Gopkg.lock new file mode 100644 index 0000000000..11cb12c378 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-vendoronly/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-vendoronly/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-vendoronly/initial/Gopkg.toml new file mode 100644 index 0000000000..e242e02114 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-vendoronly/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-vendoronly/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-vendoronly/initial/main.go new file mode 100644 index 0000000000..1fe0d19d6a --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-vendoronly/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-vendoronly/testcase.json b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-vendoronly/testcase.json new file mode 100644 index 0000000000..8a28875978 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/hashneq-vendoronly/testcase.json @@ -0,0 +1,8 @@ +{ + "commands": [ + ["ensure", "-vendor-only"] + ], + "vendor-final": [ + "github.com/sdboyer/deptest" + ] +} diff --git a/cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/final/Gopkg.toml new file mode 100644 index 0000000000..e242e02114 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/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/lockless-vendoronly/final/main.go b/cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/final/main.go new file mode 100644 index 0000000000..1fe0d19d6a --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/final/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/lockless-vendoronly/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/initial/Gopkg.toml new file mode 100644 index 0000000000..e242e02114 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/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/lockless-vendoronly/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/initial/main.go new file mode 100644 index 0000000000..1fe0d19d6a --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/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/lockless-vendoronly/testcase.json b/cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/testcase.json new file mode 100644 index 0000000000..6dc9735c09 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/testcase.json @@ -0,0 +1,6 @@ +{ + "commands": [ + ["ensure", "-vendor-only"] + ], + "error-expected": "no Gopkg.lock exists from which to populate vendor/" +} diff --git a/cmd/dep/testdata/harness_tests/ensure/default/specargs/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/default/specargs/final/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/specargs/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/specargs/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/default/specargs/final/Gopkg.toml new file mode 100644 index 0000000000..e242e02114 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/specargs/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/specargs/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/default/specargs/initial/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/specargs/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/specargs/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/default/specargs/initial/Gopkg.toml new file mode 100644 index 0000000000..e242e02114 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/specargs/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/specargs/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/default/specargs/initial/main.go new file mode 100644 index 0000000000..1fe0d19d6a --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/specargs/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/specargs/testcase.json b/cmd/dep/testdata/harness_tests/ensure/default/specargs/testcase.json new file mode 100644 index 0000000000..f194308fe2 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/default/specargs/testcase.json @@ -0,0 +1,6 @@ +{ + "commands": [ + ["ensure", "foobar.com/baz"] + ], + "error-expected": "dep ensure only takes spec arguments with -add or -update" +} diff --git a/cmd/dep/testdata/harness_tests/ensure/empty/case1/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/empty/case1/final/Gopkg.toml index 1bfe549576..e242e02114 100644 --- a/cmd/dep/testdata/harness_tests/ensure/empty/case1/final/Gopkg.toml +++ b/cmd/dep/testdata/harness_tests/ensure/empty/case1/final/Gopkg.toml @@ -1,71 +1,4 @@ -## Gopkg.toml example (these lines may be deleted) - -## "metadata" defines metadata about the project that could be used by other independent -## systems. The metadata defined here will be ignored by dep. -# [metadata] -# key1 = "value that convey data to other systems" -# system1-data = "value that is used by a system" -# system2-data = "value that is used by another system" - -## "required" lists a set of packages (not projects) that must be included in -## Gopkg.lock. This list is merged with the set of packages imported by the current -## project. Use it when your project needs a package it doesn't explicitly import - -## including "main" packages. -# required = ["github.com/user/thing/cmd/thing"] - -## "ignored" lists a set of packages (not projects) that are ignored when -## dep statically analyzes source code. Ignored packages can be in this project, -## or in a dependency. -# ignored = ["github.com/user/project/badpkg"] - -## Constraints are rules for how directly imported projects -## may be incorporated into the depgraph. They are respected by -## dep whether coming from the Gopkg.toml of the current project or a dependency. -# [[constraint]] -## Required: the root import path of the project being constrained. -# name = "github.com/user/project" -# -## Recommended: the version constraint to enforce for the project. -## Only one of "branch", "version" or "revision" can be specified. -# version = "1.0.0" -# branch = "master" -# revision = "abc123" -# -## Optional: an alternate location (URL or import path) for the project's source. -# source = "https://github.com/myfork/package.git" -# -## "metadata" defines metadata about the dependency or override that could be used -## by other independent systems. The metadata defined here will be ignored by dep. -# [metadata] -# key1 = "value that convey data to other systems" -# system1-data = "value that is used by a system" -# system2-data = "value that is used by another system" - -## Overrides have the same structure as [[constraint]], but supersede all -## [[constraint]] declarations from all projects. Only [[override]] from -## the current project's are applied. -## -## Overrides are a sledgehammer. Use them only as a last resort. -# [[override]] -## Required: the root import path of the project being constrained. -# name = "github.com/user/project" -# -## Optional: specifying a version constraint override will cause all other -## constraints on this project to be ignored; only the overridden constraint -## need be satisfied. -## Again, only one of "branch", "version" or "revision" can be specified. -# version = "1.0.0" -# branch = "master" -# revision = "abc123" -# -## Optional: specifying an alternate source location as an override will -## enforce that the alternate location is used for that project, regardless of -## what source location any dependent projects specify. -# source = "https://github.com/myfork/package.git" - - - [[constraint]] name = "github.com/sdboyer/deptest" version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/empty/case1/testcase.json b/cmd/dep/testdata/harness_tests/ensure/empty/case1/testcase.json index 620bc4e060..0cf0fd903b 100644 --- a/cmd/dep/testdata/harness_tests/ensure/empty/case1/testcase.json +++ b/cmd/dep/testdata/harness_tests/ensure/empty/case1/testcase.json @@ -1,9 +1,8 @@ { "commands": [ - ["init", "-skip-tools"], + ["init", "-skip-tools", "-no-examples"], ["ensure", "-update"] ], - "error-expected": "", "vendor-final": [ "github.com/sdboyer/deptest" ] diff --git a/cmd/dep/testdata/harness_tests/ensure/update/desync/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/desync/final/Gopkg.lock new file mode 100644 index 0000000000..41dd2d4190 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/desync/final/Gopkg.lock @@ -0,0 +1,21 @@ +# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. + + +[[projects]] + name = "github.com/sdboyer/deptest" + version = "v0.8.0" + revision = "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" + packages = ["."] + +[[projects]] + name = "github.com/sdboyer/deptestdos" + version = "v2.0.0" + revision = "5c607206be5decd28e6263ffffdcee067266015e" + packages = ["."] + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + inputs-digest = "9b381263a360eafafe3ef7f9be626672668d17250a3c9a8debd169d1b5e2eebb" + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/update/desync/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/desync/final/Gopkg.toml new file mode 100644 index 0000000000..532da96a0d --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/desync/final/Gopkg.toml @@ -0,0 +1,3 @@ +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "~0.8.0" \ No newline at end of file diff --git a/cmd/dep/testdata/harness_tests/ensure/update/desync/final/main.go b/cmd/dep/testdata/harness_tests/ensure/update/desync/final/main.go new file mode 100644 index 0000000000..2eae5b511d --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/desync/final/main.go @@ -0,0 +1,18 @@ +// 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" + "github.com/sdboyer/deptestdos" +) + +func main() { + err := nil + if err != nil { + deptest.Map["yo yo!"] + } + deptestdos.diMeLo("whatev") +} diff --git a/cmd/dep/testdata/harness_tests/ensure/update/desync/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/desync/initial/Gopkg.lock new file mode 100644 index 0000000000..41dd2d4190 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/desync/initial/Gopkg.lock @@ -0,0 +1,21 @@ +# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. + + +[[projects]] + name = "github.com/sdboyer/deptest" + version = "v0.8.0" + revision = "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" + packages = ["."] + +[[projects]] + name = "github.com/sdboyer/deptestdos" + version = "v2.0.0" + revision = "5c607206be5decd28e6263ffffdcee067266015e" + packages = ["."] + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + inputs-digest = "9b381263a360eafafe3ef7f9be626672668d17250a3c9a8debd169d1b5e2eebb" + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/update/desync/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/desync/initial/Gopkg.toml new file mode 100644 index 0000000000..532da96a0d --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/desync/initial/Gopkg.toml @@ -0,0 +1,3 @@ +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "~0.8.0" \ No newline at end of file diff --git a/cmd/dep/testdata/harness_tests/ensure/update/desync/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/update/desync/initial/main.go new file mode 100644 index 0000000000..2eae5b511d --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/desync/initial/main.go @@ -0,0 +1,18 @@ +// 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" + "github.com/sdboyer/deptestdos" +) + +func main() { + err := nil + if err != nil { + deptest.Map["yo yo!"] + } + deptestdos.diMeLo("whatev") +} diff --git a/cmd/dep/testdata/harness_tests/ensure/update/desync/testcase.json b/cmd/dep/testdata/harness_tests/ensure/update/desync/testcase.json new file mode 100644 index 0000000000..0e5a8b0b96 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/desync/testcase.json @@ -0,0 +1,6 @@ +{ + "commands": [ + ["ensure", "-update"] + ], + "error-expected": "Gopkg.toml and Gopkg.lock are out of sync. Run a plain dep ensure to resync them before attempting to -update" +} diff --git a/cmd/dep/testdata/harness_tests/ensure/update/lockless/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/lockless/final/Gopkg.toml new file mode 100644 index 0000000000..e242e02114 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/lockless/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/update/lockless/final/main.go b/cmd/dep/testdata/harness_tests/ensure/update/lockless/final/main.go new file mode 100644 index 0000000000..1fe0d19d6a --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/lockless/final/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/update/lockless/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/lockless/initial/Gopkg.toml new file mode 100644 index 0000000000..e242e02114 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/lockless/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/update/lockless/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/update/lockless/initial/main.go new file mode 100644 index 0000000000..1fe0d19d6a --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/lockless/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/update/lockless/testcase.json b/cmd/dep/testdata/harness_tests/ensure/update/lockless/testcase.json new file mode 100644 index 0000000000..a69d08d0f6 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/lockless/testcase.json @@ -0,0 +1,6 @@ +{ + "commands": [ + ["ensure", "-update"] + ], + "error-expected": "-update works by updating the versions recorded in Gopkg.lock, but Gopkg.lock does not exist" +} diff --git a/cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/final/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/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/update/nonroot-arg/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/final/Gopkg.toml new file mode 100644 index 0000000000..51ff69b358 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/final/Gopkg.toml @@ -0,0 +1,3 @@ +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/initial/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/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/update/nonroot-arg/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/initial/Gopkg.toml new file mode 100644 index 0000000000..51ff69b358 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/initial/Gopkg.toml @@ -0,0 +1,3 @@ +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/initial/main.go new file mode 100644 index 0000000000..c5b8da51da --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/initial/main.go @@ -0,0 +1,13 @@ +// 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() { + _ := deptest.Map["yo yo!"] +} diff --git a/cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/testcase.json b/cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/testcase.json new file mode 100644 index 0000000000..4b4b4fe059 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/testcase.json @@ -0,0 +1,6 @@ +{ + "commands": [ + ["ensure", "-update", "github.com/sdboyer/deptest/subpkg"] + ], + "error-expected": "github.com/sdboyer/deptest/subpkg is not a project root, try github.com/sdboyer/deptest instead" +} diff --git a/cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/final/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/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/update/not-in-lock/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/final/Gopkg.toml new file mode 100644 index 0000000000..51ff69b358 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/final/Gopkg.toml @@ -0,0 +1,3 @@ +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/initial/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/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/update/not-in-lock/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/initial/Gopkg.toml new file mode 100644 index 0000000000..51ff69b358 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/initial/Gopkg.toml @@ -0,0 +1,3 @@ +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/initial/main.go new file mode 100644 index 0000000000..c5b8da51da --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/initial/main.go @@ -0,0 +1,13 @@ +// 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() { + _ := deptest.Map["yo yo!"] +} diff --git a/cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/testcase.json b/cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/testcase.json new file mode 100644 index 0000000000..0fda36edd2 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/testcase.json @@ -0,0 +1,6 @@ +{ + "commands": [ + ["ensure", "-update", "github.com/sdboyer/deptesttres"] + ], + "error-expected": "github.com/sdboyer/deptesttres is not present in Gopkg.lock, cannot -update it" +} diff --git a/cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/final/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/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/update/spec-with-constraint/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/final/Gopkg.toml new file mode 100644 index 0000000000..51ff69b358 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/final/Gopkg.toml @@ -0,0 +1,3 @@ +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/initial/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/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/update/spec-with-constraint/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/initial/Gopkg.toml new file mode 100644 index 0000000000..51ff69b358 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/initial/Gopkg.toml @@ -0,0 +1,3 @@ +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/initial/main.go new file mode 100644 index 0000000000..c5b8da51da --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/initial/main.go @@ -0,0 +1,13 @@ +// 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() { + _ := deptest.Map["yo yo!"] +} diff --git a/cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/testcase.json b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/testcase.json new file mode 100644 index 0000000000..7332bc493d --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/testcase.json @@ -0,0 +1,6 @@ +{ + "commands": [ + ["ensure", "-update", "github.com/sdboyer/deptest:github.com/other/deptest"] + ], + "error-expected": "cannot specify alternate sources on -update (github.com/other/deptest)" +} diff --git a/cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/final/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/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/update/spec-with-source/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/final/Gopkg.toml new file mode 100644 index 0000000000..51ff69b358 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/final/Gopkg.toml @@ -0,0 +1,3 @@ +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/initial/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/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/update/spec-with-source/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/initial/Gopkg.toml new file mode 100644 index 0000000000..51ff69b358 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/initial/Gopkg.toml @@ -0,0 +1,3 @@ +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/initial/main.go new file mode 100644 index 0000000000..c5b8da51da --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/initial/main.go @@ -0,0 +1,13 @@ +// 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() { + _ := deptest.Map["yo yo!"] +} diff --git a/cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/testcase.json b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/testcase.json new file mode 100644 index 0000000000..27c8a5fc96 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/testcase.json @@ -0,0 +1,6 @@ +{ + "commands": [ + ["ensure", "-update", "github.com/sdboyer/deptest@1.0.0"] + ], + "error-expected": "version constraint ^1.0.0 passed for github.com/sdboyer/deptest, but -update follows constraints declared in" +} From 05b2e9f931fb6efe7b6c03134e3562f25e484ee0 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Sun, 18 Jun 2017 00:18:50 -0400 Subject: [PATCH 22/34] Improve errors for many ensure failure modes --- cmd/dep/ensure.go | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index f806b4b258..598f2c6c5e 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -8,7 +8,6 @@ import ( "bytes" "encoding/hex" "flag" - "fmt" "go/build" "strconv" "strings" @@ -195,14 +194,14 @@ func (cmd *ensureCommand) runDefault(ctx *dep.Ctx, args []string, p *dep.Project // Bare ensure doesn't take any args. if len(args) != 0 { if cmd.vendorOnly { - return errors.Errorf("dep ensure -vendor-only only populates vendor/ from %s; it takes no spec arguments.", dep.LockName) + return errors.Errorf("dep ensure -vendor-only only populates vendor/ from %s; it takes no spec arguments", dep.LockName) } - return errors.New("dep ensure only takes spec arguments with -add or -update - did you want one of those?") + return errors.New("dep ensure only takes spec arguments with -add or -update") } if cmd.vendorOnly { if p.Lock == nil { - return errors.Errorf("no %s exists from which to populate vendor/ directory", dep.LockName) + return errors.Errorf("no %s exists from which to populate vendor/", dep.LockName) } // Pass the same lock as old and new so that the writer will observe no // difference and choose not to write it out. @@ -212,7 +211,7 @@ func (cmd *ensureCommand) runDefault(ctx *dep.Ctx, args []string, p *dep.Project } if cmd.dryRun { - fmt.Printf("Would have populated vendor/ directory from %s", dep.LockName) + ctx.Loggers.Out.Printf("Would have populated vendor/ directory from %s", dep.LockName) return nil } @@ -243,7 +242,7 @@ func (cmd *ensureCommand) runDefault(ctx *dep.Ctx, args []string, p *dep.Project } if cmd.dryRun { - fmt.Printf("Would have populated vendor/ directory from %s", dep.LockName) + ctx.Loggers.Out.Printf("Would have populated vendor/ directory from %s", dep.LockName) return nil } @@ -269,7 +268,7 @@ func (cmd *ensureCommand) runDefault(ctx *dep.Ctx, args []string, p *dep.Project func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, sm gps.SourceManager, params gps.SolveParameters) error { if p.Lock == nil { - return errors.Errorf("%s does not exist. nothing to do, as -update works by updating the values in %s.", dep.LockName, dep.LockName) + return errors.Errorf("-update works by updating the versions recorded in %s, but %s does not exist", dep.LockName, dep.LockName) } // We'll need to discard this prepared solver as later work changes params, @@ -287,7 +286,7 @@ func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, // "pending" changes, or the -update that caused the problem?). // TODO(sdboyer) reduce this to a warning? if !bytes.Equal(p.Lock.InputHash(), solver.HashInputs()) { - return errors.Errorf("%s and %s are out of sync. run a plain dep ensure to resync them before attempting an -update.", dep.ManifestName, dep.LockName) + return errors.Errorf("%s and %s are out of sync. Run a plain dep ensure to resync them before attempting to -update", dep.ManifestName, dep.LockName) } // When -update is specified without args, allow every dependency to change @@ -313,13 +312,13 @@ func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, } if pc.Ident.Source != "" { - return errors.Errorf("cannot specify alternate sources on -update (%s)", pc.Ident) + return errors.Errorf("cannot specify alternate sources on -update (%s)", pc.Ident.Source) } if !gps.IsAny(pc.Constraint) { // TODO(sdboyer) constraints should be allowed to allow solves that // target particular versions while remaining within declared constraints - return errors.Errorf("-update operates according to constraints declared in %s, not CLI arguments.\nYou passed in %s for %s", dep.ManifestName, pc.Constraint, pc.Ident.ProjectRoot) + return errors.Errorf("version constraint %s passed for %s, but -update follows constraints declared in %s, not CLI arguments", pc.Constraint, pc.Ident.ProjectRoot, dep.ManifestName) } params.ToChange = append(params.ToChange, gps.ProjectRoot(arg)) @@ -352,7 +351,7 @@ func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm gps.SourceManager, params gps.SolveParameters) error { if len(args) == 0 { - return errors.New("must specify at least one project or package to add") + return errors.New("must specify at least one project or package to -add") } // We'll need to discard this prepared solver as later work changes params, @@ -370,7 +369,7 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm // "pending" changes, or the -add that caused the problem?). // TODO(sdboyer) reduce this to a warning? if !bytes.Equal(p.Lock.InputHash(), solver.HashInputs()) { - return errors.Errorf("%s and %s are out of sync. run a plain dep ensure to resync them before attempting an -add.", dep.ManifestName, dep.LockName) + return errors.Errorf("%s and %s are out of sync. Run a plain dep ensure to resync them before attempting to -add", dep.ManifestName, dep.LockName) } rm, errmap := params.RootPackageTree.ToReachMap(true, true, false, p.Manifest.IgnoredPackages()) From 9b9f762097fe4c5024acfb963bd0175d308bcde4 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Sun, 18 Jun 2017 10:34:49 -0400 Subject: [PATCH 23/34] Add a handful of ensure -add test cases --- cmd/dep/ensure.go | 2 +- .../ensure/add/desync/final/Gopkg.lock | 21 +++++++++++++++++++ .../ensure/add/desync/final/Gopkg.toml | 3 +++ .../ensure/add/desync/final/main.go | 18 ++++++++++++++++ .../ensure/add/desync/initial/Gopkg.lock | 21 +++++++++++++++++++ .../ensure/add/desync/initial/Gopkg.toml | 3 +++ .../ensure/add/desync/initial/main.go | 18 ++++++++++++++++ .../ensure/add/desync/testcase.json | 6 ++++++ .../add/exists-manifest/final/Gopkg.lock | 15 +++++++++++++ .../add/exists-manifest/final/Gopkg.toml | 3 +++ .../add/exists-manifest/initial/Gopkg.lock | 15 +++++++++++++ .../add/exists-manifest/initial/Gopkg.toml | 3 +++ .../add/exists-manifest/initial/main.go | 13 ++++++++++++ .../ensure/add/exists-manifest/testcase.json | 6 ++++++ .../ensure/add/exists/final/Gopkg.lock | 15 +++++++++++++ .../ensure/add/exists/final/Gopkg.toml | 3 +++ .../ensure/add/exists/initial/Gopkg.lock | 15 +++++++++++++ .../ensure/add/exists/initial/Gopkg.toml | 3 +++ .../ensure/add/exists/initial/main.go | 13 ++++++++++++ .../ensure/add/exists/testcase.json | 6 ++++++ .../ensure/add/noarg/final/Gopkg.lock | 21 +++++++++++++++++++ .../ensure/add/noarg/final/Gopkg.toml | 3 +++ .../ensure/add/noarg/final/main.go | 18 ++++++++++++++++ .../ensure/add/noarg/initial/Gopkg.lock | 21 +++++++++++++++++++ .../ensure/add/noarg/initial/Gopkg.toml | 3 +++ .../ensure/add/noarg/initial/main.go | 18 ++++++++++++++++ .../ensure/add/noarg/testcase.json | 6 ++++++ .../ensure/add/nonroot-arg/final/Gopkg.lock | 15 +++++++++++++ .../ensure/add/nonroot-arg/final/Gopkg.toml | 3 +++ .../ensure/add/nonroot-arg/initial/Gopkg.lock | 15 +++++++++++++ .../ensure/add/nonroot-arg/initial/Gopkg.toml | 3 +++ .../ensure/add/nonroot-arg/initial/main.go | 13 ++++++++++++ .../ensure/add/nonroot-arg/testcase.json | 6 ++++++ internal/test/integration_testcase.go | 2 +- 34 files changed, 347 insertions(+), 2 deletions(-) create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/desync/final/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/desync/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/desync/final/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/desync/initial/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/desync/initial/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/desync/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/desync/testcase.json create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/final/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/testcase.json create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/exists/final/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/exists/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/exists/initial/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/exists/initial/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/exists/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/exists/testcase.json create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/noarg/final/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/noarg/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/noarg/final/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/noarg/initial/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/noarg/initial/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/noarg/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/noarg/testcase.json create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/final/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/initial/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/initial/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/testcase.json diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index 00cee36f8c..4c8afcadec 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -413,7 +413,7 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm inManifest := p.Manifest.HasConstraintsOn(pc.Ident.ProjectRoot) inImports := exrmap[pc.Ident.ProjectRoot] if inManifest && inImports { - return errors.Errorf("%s is already in %s and the project's direct imports or required list; nothing to add", pc.Ident.ProjectRoot, dep.ManifestName) + return errors.Errorf("nothing to -add, %s is already in %s and the project's direct imports or required list", pc.Ident.ProjectRoot, dep.ManifestName) } err = sm.SyncSourceFor(pc.Ident) diff --git a/cmd/dep/testdata/harness_tests/ensure/add/desync/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/desync/final/Gopkg.lock new file mode 100644 index 0000000000..41dd2d4190 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/desync/final/Gopkg.lock @@ -0,0 +1,21 @@ +# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. + + +[[projects]] + name = "github.com/sdboyer/deptest" + version = "v0.8.0" + revision = "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" + packages = ["."] + +[[projects]] + name = "github.com/sdboyer/deptestdos" + version = "v2.0.0" + revision = "5c607206be5decd28e6263ffffdcee067266015e" + packages = ["."] + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + inputs-digest = "9b381263a360eafafe3ef7f9be626672668d17250a3c9a8debd169d1b5e2eebb" + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/add/desync/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/desync/final/Gopkg.toml new file mode 100644 index 0000000000..532da96a0d --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/desync/final/Gopkg.toml @@ -0,0 +1,3 @@ +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "~0.8.0" \ No newline at end of file diff --git a/cmd/dep/testdata/harness_tests/ensure/add/desync/final/main.go b/cmd/dep/testdata/harness_tests/ensure/add/desync/final/main.go new file mode 100644 index 0000000000..2eae5b511d --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/desync/final/main.go @@ -0,0 +1,18 @@ +// 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" + "github.com/sdboyer/deptestdos" +) + +func main() { + err := nil + if err != nil { + deptest.Map["yo yo!"] + } + deptestdos.diMeLo("whatev") +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/desync/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/desync/initial/Gopkg.lock new file mode 100644 index 0000000000..41dd2d4190 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/desync/initial/Gopkg.lock @@ -0,0 +1,21 @@ +# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. + + +[[projects]] + name = "github.com/sdboyer/deptest" + version = "v0.8.0" + revision = "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" + packages = ["."] + +[[projects]] + name = "github.com/sdboyer/deptestdos" + version = "v2.0.0" + revision = "5c607206be5decd28e6263ffffdcee067266015e" + packages = ["."] + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + inputs-digest = "9b381263a360eafafe3ef7f9be626672668d17250a3c9a8debd169d1b5e2eebb" + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/add/desync/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/desync/initial/Gopkg.toml new file mode 100644 index 0000000000..532da96a0d --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/desync/initial/Gopkg.toml @@ -0,0 +1,3 @@ +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "~0.8.0" \ No newline at end of file diff --git a/cmd/dep/testdata/harness_tests/ensure/add/desync/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/add/desync/initial/main.go new file mode 100644 index 0000000000..2eae5b511d --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/desync/initial/main.go @@ -0,0 +1,18 @@ +// 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" + "github.com/sdboyer/deptestdos" +) + +func main() { + err := nil + if err != nil { + deptest.Map["yo yo!"] + } + deptestdos.diMeLo("whatev") +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/desync/testcase.json b/cmd/dep/testdata/harness_tests/ensure/add/desync/testcase.json new file mode 100644 index 0000000000..19ec11bca4 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/desync/testcase.json @@ -0,0 +1,6 @@ +{ + "commands": [ + ["ensure", "-add", "foobar.com/baz"] + ], + "error-expected": "Gopkg.toml and Gopkg.lock are out of sync. Run a plain dep ensure to resync them before attempting to -add" +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/final/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/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/add/exists-manifest/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/final/Gopkg.toml new file mode 100644 index 0000000000..51ff69b358 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/final/Gopkg.toml @@ -0,0 +1,3 @@ +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/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/add/exists-manifest/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/Gopkg.toml new file mode 100644 index 0000000000..51ff69b358 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/Gopkg.toml @@ -0,0 +1,3 @@ +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/main.go new file mode 100644 index 0000000000..c5b8da51da --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/main.go @@ -0,0 +1,13 @@ +// 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() { + _ := deptest.Map["yo yo!"] +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/testcase.json b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/testcase.json new file mode 100644 index 0000000000..5cf7b6d442 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/testcase.json @@ -0,0 +1,6 @@ +{ + "commands": [ + ["ensure", "-add", "github.com/sdboyer/deptesttres"] + ], + "error-expected": "nothing to -add, github.com/sdboyer/deptest is already in Gopkg.toml and the project's direct imports or required list" +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/exists/final/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists/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/add/exists/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/exists/final/Gopkg.toml new file mode 100644 index 0000000000..51ff69b358 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists/final/Gopkg.toml @@ -0,0 +1,3 @@ +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/exists/initial/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists/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/add/exists/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/exists/initial/Gopkg.toml new file mode 100644 index 0000000000..51ff69b358 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists/initial/Gopkg.toml @@ -0,0 +1,3 @@ +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/add/exists/initial/main.go new file mode 100644 index 0000000000..c5b8da51da --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists/initial/main.go @@ -0,0 +1,13 @@ +// 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() { + _ := deptest.Map["yo yo!"] +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists/testcase.json b/cmd/dep/testdata/harness_tests/ensure/add/exists/testcase.json new file mode 100644 index 0000000000..e4ec92f9d3 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists/testcase.json @@ -0,0 +1,6 @@ +{ + "commands": [ + ["ensure", "-add", "github.com/sdboyer/deptest"] + ], + "error-expected": "nothing to -add, github.com/sdboyer/deptest is already in Gopkg.toml and the project's direct imports or required list" +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/noarg/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/noarg/final/Gopkg.lock new file mode 100644 index 0000000000..41dd2d4190 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/noarg/final/Gopkg.lock @@ -0,0 +1,21 @@ +# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. + + +[[projects]] + name = "github.com/sdboyer/deptest" + version = "v0.8.0" + revision = "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" + packages = ["."] + +[[projects]] + name = "github.com/sdboyer/deptestdos" + version = "v2.0.0" + revision = "5c607206be5decd28e6263ffffdcee067266015e" + packages = ["."] + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + inputs-digest = "9b381263a360eafafe3ef7f9be626672668d17250a3c9a8debd169d1b5e2eebb" + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/add/noarg/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/noarg/final/Gopkg.toml new file mode 100644 index 0000000000..532da96a0d --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/noarg/final/Gopkg.toml @@ -0,0 +1,3 @@ +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "~0.8.0" \ No newline at end of file diff --git a/cmd/dep/testdata/harness_tests/ensure/add/noarg/final/main.go b/cmd/dep/testdata/harness_tests/ensure/add/noarg/final/main.go new file mode 100644 index 0000000000..2eae5b511d --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/noarg/final/main.go @@ -0,0 +1,18 @@ +// 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" + "github.com/sdboyer/deptestdos" +) + +func main() { + err := nil + if err != nil { + deptest.Map["yo yo!"] + } + deptestdos.diMeLo("whatev") +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/noarg/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/noarg/initial/Gopkg.lock new file mode 100644 index 0000000000..41dd2d4190 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/noarg/initial/Gopkg.lock @@ -0,0 +1,21 @@ +# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. + + +[[projects]] + name = "github.com/sdboyer/deptest" + version = "v0.8.0" + revision = "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" + packages = ["."] + +[[projects]] + name = "github.com/sdboyer/deptestdos" + version = "v2.0.0" + revision = "5c607206be5decd28e6263ffffdcee067266015e" + packages = ["."] + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + inputs-digest = "9b381263a360eafafe3ef7f9be626672668d17250a3c9a8debd169d1b5e2eebb" + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/add/noarg/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/noarg/initial/Gopkg.toml new file mode 100644 index 0000000000..532da96a0d --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/noarg/initial/Gopkg.toml @@ -0,0 +1,3 @@ +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "~0.8.0" \ No newline at end of file diff --git a/cmd/dep/testdata/harness_tests/ensure/add/noarg/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/add/noarg/initial/main.go new file mode 100644 index 0000000000..2eae5b511d --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/noarg/initial/main.go @@ -0,0 +1,18 @@ +// 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" + "github.com/sdboyer/deptestdos" +) + +func main() { + err := nil + if err != nil { + deptest.Map["yo yo!"] + } + deptestdos.diMeLo("whatev") +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/noarg/testcase.json b/cmd/dep/testdata/harness_tests/ensure/add/noarg/testcase.json new file mode 100644 index 0000000000..b8b36480f6 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/noarg/testcase.json @@ -0,0 +1,6 @@ +{ + "commands": [ + ["ensure", "-add"] + ], + "error-expected": "must specify at least one project or package to -add" +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/final/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/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/add/nonroot-arg/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/final/Gopkg.toml new file mode 100644 index 0000000000..51ff69b358 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/final/Gopkg.toml @@ -0,0 +1,3 @@ +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/initial/Gopkg.lock new file mode 100644 index 0000000000..c7f497e7a1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/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/add/nonroot-arg/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/initial/Gopkg.toml new file mode 100644 index 0000000000..51ff69b358 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/initial/Gopkg.toml @@ -0,0 +1,3 @@ +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/initial/main.go new file mode 100644 index 0000000000..c5b8da51da --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/initial/main.go @@ -0,0 +1,13 @@ +// 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() { + _ := deptest.Map["yo yo!"] +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/testcase.json b/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/testcase.json new file mode 100644 index 0000000000..cff3e2e981 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/testcase.json @@ -0,0 +1,6 @@ +{ + "commands": [ + ["ensure", "-add", "github.com/sdboyer/deptest/subpkg"] + ], + "error-expected": "github.com/sdboyer/deptest/subpkg is not a project root, try github.com/sdboyer/deptest instead" +} diff --git a/internal/test/integration_testcase.go b/internal/test/integration_testcase.go index 02b1a0c6f0..cc6e376386 100644 --- a/internal/test/integration_testcase.go +++ b/internal/test/integration_testcase.go @@ -139,7 +139,7 @@ func (tc *IntegrationTestCase) CompareError(err error, stderr string) { if wantExists && gotExists { switch c := strings.Count(got, want); c { case 0: - tc.t.Errorf("expected error containing %s, got error %s", want, got) + tc.t.Errorf("error did not contain expected string:\n\t(GOT): %s\n\t(WNT): %s", want, got) case 1: default: tc.t.Errorf("expected error %s matches %d times to actual error %s", want, c, got) From 9707806fdf37319054c29d9cc99de4a6db976688 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Mon, 19 Jun 2017 02:03:56 -0400 Subject: [PATCH 24/34] Split out getProjectConstraints, tweak errs, etc. --- cmd/dep/ensure.go | 107 ++++++++++++++------------ internal/test/integration_testcase.go | 2 +- 2 files changed, 59 insertions(+), 50 deletions(-) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index 4c8afcadec..7366cdc659 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -301,12 +301,16 @@ func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, for _, arg := range args { // Ensure the provided path has a deducible project root // TODO(sdboyer) do these concurrently - pc, err := getProjectConstraint(arg, sm) + pc, path, err := getProjectConstraint(arg, sm) if err != nil { // TODO(sdboyer) return all errors, not just the first one we encounter // TODO(sdboyer) ensure these errors are contextualized in a sensible way for -update return err } + if path != string(pc.Ident.ProjectRoot) { + // TODO(sdboyer): does this really merit an abortive error? + return errors.Errorf("%s is not a project root, try %s instead", path, pc.Ident.ProjectRoot) + } if !p.Lock.HasProjectWithRoot(pc.Ident.ProjectRoot) { return errors.Errorf("%s is not present in %s, cannot -update it", pc.Ident.ProjectRoot, dep.LockName) @@ -369,7 +373,7 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm // user is isolating variables in the event of solve problems (was it the // "pending" changes, or the -add that caused the problem?). // TODO(sdboyer) reduce this to a warning? - if !bytes.Equal(p.Lock.InputHash(), solver.HashInputs()) { + if p.Lock != nil && !bytes.Equal(p.Lock.InputHash(), solver.HashInputs()) { return errors.Errorf("%s and %s are out of sync. Run a plain dep ensure to resync them before attempting to -add", dep.ManifestName, dep.LockName) } @@ -404,7 +408,7 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm for _, arg := range args { // TODO(sdboyer) return all errors, not just the first one we encounter // TODO(sdboyer) do these concurrently - pc, err := getProjectConstraint(arg, sm) + pc, path, err := getProjectConstraint(arg, sm) if err != nil { // TODO(sdboyer) ensure these errors are contextualized in a sensible way for -add return err @@ -421,40 +425,40 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm return errors.Wrapf(err, "failed to fetch source for %s", pc.Ident.ProjectRoot) } - someConstraint := pc.Constraint != nil || pc.Ident.Source != "" + someConstraint := !gps.IsAny(pc.Constraint) || pc.Ident.Source != "" if inManifest { if someConstraint { - return errors.Errorf("%s already contains constraints for %s, cannot specify a version constraint or alternate source", arg, dep.ManifestName) + return errors.Errorf("%s already contains rules for %s, cannot specify a version constraint or alternate source", dep.ManifestName, path) } - reqlist = append(reqlist, arg) - p.Manifest.Required = append(p.Manifest.Required, arg) + reqlist = append(reqlist, path) + p.Manifest.Required = append(p.Manifest.Required, path) } else if inImports { if !someConstraint { - if exmap[arg] { - return errors.Errorf("%s is already imported or required; -add must specify a constraint, but none were provided", arg) + if exmap[path] { + return errors.Errorf("%s is already imported or required; -add must specify a constraint, but none were provided", path) } + // No constraints, but the package isn't imported; require it. // TODO(sdboyer) this case seems like it's getting overly // specific and risks muddying the water more than it helps - // No constraints, but the package isn't imported; require it. - reqlist = append(reqlist, arg) - p.Manifest.Required = append(p.Manifest.Required, arg) + reqlist = append(reqlist, path) + p.Manifest.Required = append(p.Manifest.Required, path) } else { p.Manifest.Constraints[pc.Ident.ProjectRoot] = gps.ProjectProperties{ Source: pc.Ident.Source, Constraint: pc.Constraint, } - // Don't require on this branch if the arg was a ProjectRoot; + // Don't require on this branch if the path was a ProjectRoot; // most common here will be the user adding constraints to // something they already imported, and if they specify the // root, there's a good chance they don't actually want to // require the project's root package, but are just trying to // indicate which project should receive the constraints. - if !exmap[arg] && string(pc.Ident.ProjectRoot) != arg { - reqlist = append(reqlist, arg) - p.Manifest.Required = append(p.Manifest.Required, arg) + if !exmap[path] && string(pc.Ident.ProjectRoot) != path { + reqlist = append(reqlist, path) + p.Manifest.Required = append(p.Manifest.Required, path) } } } else { @@ -463,8 +467,8 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm Constraint: pc.Constraint, } - reqlist = append(reqlist, arg) - p.Manifest.Required = append(p.Manifest.Required, arg) + reqlist = append(reqlist, path) + p.Manifest.Required = append(p.Manifest.Required, path) } } @@ -489,7 +493,14 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm return sw.PrintPreparedActions(ctx.Out) } - return errors.Wrap(sw.Write(p.AbsRoot, sm, true), "grouped write of manifest, lock and vendor") + err = errors.Wrap(sw.Write(p.AbsRoot, sm, true), "grouped write of manifest, lock and vendor") + if err != nil { + return err + } + + // TODO(sdboyer) handle appending of constraints to Gopkg.toml here, plus + // info messages to user + return nil } type stringSlice []string @@ -506,54 +517,52 @@ func (s *stringSlice) Set(value string) error { return nil } -func getProjectConstraint(arg string, sm gps.SourceManager) (gps.ProjectConstraint, error) { - // TODO(sdboyer) this func needs to be broken out, now that we admit - // different info in specs +func getProjectConstraint(arg string, sm gps.SourceManager) (gps.ProjectConstraint, string, error) { emptyPC := gps.ProjectConstraint{ Constraint: gps.Any(), // default to any; avoids panics later } + path, source, versionStr := parseSpecArg(arg) + pr, err := sm.DeduceProjectRoot(path) + if err != nil { + return emptyPC, "", errors.Wrapf(err, "could not infer project root from dependency path: %s", path) // this should go through to the user + } + + pi := gps.ProjectIdentifier{ProjectRoot: pr, Source: source} + var c gps.Constraint + if versionStr != "" { + c, err = deduceConstraint(versionStr, pi, sm) + if err != nil { + return emptyPC, "", err + } + } else { + c = gps.Any() + } + return gps.ProjectConstraint{Ident: pi, Constraint: c}, path, nil +} + +// parseSpecArg takes a spec, as provided to dep ensure on the CLI, and splits +// it into its constitutent path, source, and constraint parts. +func parseSpecArg(arg string) (path, source, constraint string) { + path = arg // try to split on '@' // When there is no `@`, use any version - var versionStr string atIndex := strings.Index(arg, "@") if atIndex > 0 { parts := strings.SplitN(arg, "@", 2) - arg = parts[0] - versionStr = parts[1] + path = parts[0] + constraint = parts[1] } - // TODO: if we decide to keep equals..... - // split on colon if there is a network location - var source string colonIndex := strings.Index(arg, ":") if colonIndex > 0 { parts := strings.SplitN(arg, ":", 2) - arg = parts[0] + path = parts[0] source = parts[1] } - pr, err := sm.DeduceProjectRoot(arg) - if err != nil { - return emptyPC, errors.Wrapf(err, "could not infer project root from dependency path: %s", arg) // this should go through to the user - } - - if string(pr) != arg { - return emptyPC, errors.Errorf("dependency path %s is not a project root, try %s instead", arg, pr) - } - - pi := gps.ProjectIdentifier{ProjectRoot: pr, Source: source} - var c gps.Constraint - if versionStr != "" { - c, err = deduceConstraint(versionStr, pi, sm) - if err != nil { - return emptyPC, err - } - } else { - c = gps.Any() - } - return gps.ProjectConstraint{Ident: pi, Constraint: c}, nil + return path, source, constraint } // deduceConstraint tries to puzzle out what kind of version is given in a string - diff --git a/internal/test/integration_testcase.go b/internal/test/integration_testcase.go index cc6e376386..e45813b019 100644 --- a/internal/test/integration_testcase.go +++ b/internal/test/integration_testcase.go @@ -139,7 +139,7 @@ func (tc *IntegrationTestCase) CompareError(err error, stderr string) { if wantExists && gotExists { switch c := strings.Count(got, want); c { case 0: - tc.t.Errorf("error did not contain expected string:\n\t(GOT): %s\n\t(WNT): %s", want, got) + tc.t.Errorf("error did not contain expected string:\n\t(GOT): %s\n\t(WNT): %s", got, want) case 1: default: tc.t.Errorf("expected error %s matches %d times to actual error %s", want, c, got) From 61b89544a4c1a1734a0de7fc4ba13c6eba2f6115 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Mon, 19 Jun 2017 02:04:44 -0400 Subject: [PATCH 25/34] Several more ensure -add tests --- .../initial => exists-imports/final}/Gopkg.lock | 8 ++++---- .../ensure/add/exists-imports/final/Gopkg.toml | 3 +++ .../ensure/add/exists-imports/initial/Gopkg.toml | 0 .../initial/main.go | 6 +++--- .../ensure/add/exists-imports/testcase.json | 8 ++++++++ .../final/Gopkg.lock | 8 +++++++- .../exists-manifest-constraint/final/Gopkg.toml | 7 +++++++ .../exists-manifest-constraint/initial/Gopkg.lock | 15 +++++++++++++++ .../exists-manifest-constraint/initial/Gopkg.toml | 7 +++++++ .../exists-manifest-constraint/initial/main.go | 13 +++++++++++++ .../add/exists-manifest-constraint/testcase.json | 9 +++++++++ .../ensure/add/exists-manifest/final/Gopkg.lock | 8 ++++---- .../ensure/add/exists-manifest/final/Gopkg.toml | 4 ++++ .../ensure/add/exists-manifest/initial/Gopkg.lock | 8 ++++---- .../ensure/add/exists-manifest/initial/Gopkg.toml | 4 ++++ .../ensure/add/exists-manifest/initial/main.go | 6 +++--- .../ensure/add/exists-manifest/testcase.json | 4 ++-- .../ensure/add/nonroot-arg/final/Gopkg.toml | 3 --- .../ensure/add/nonroot-arg/initial/Gopkg.toml | 3 --- .../ensure/add/nonroot-arg/testcase.json | 6 ------ 20 files changed, 97 insertions(+), 33 deletions(-) rename cmd/dep/testdata/harness_tests/ensure/add/{nonroot-arg/initial => exists-imports/final}/Gopkg.lock (53%) create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/exists-imports/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/exists-imports/initial/Gopkg.toml rename cmd/dep/testdata/harness_tests/ensure/add/{nonroot-arg => exists-imports}/initial/main.go (56%) create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/exists-imports/testcase.json rename cmd/dep/testdata/harness_tests/ensure/add/{nonroot-arg => exists-manifest-constraint}/final/Gopkg.lock (59%) create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/initial/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/initial/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/testcase.json delete mode 100644 cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/final/Gopkg.toml delete mode 100644 cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/initial/Gopkg.toml delete mode 100644 cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/testcase.json diff --git a/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/exists-imports/final/Gopkg.lock similarity index 53% rename from cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/initial/Gopkg.lock rename to cmd/dep/testdata/harness_tests/ensure/add/exists-imports/final/Gopkg.lock index c7f497e7a1..744669485c 100644 --- a/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/initial/Gopkg.lock +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-imports/final/Gopkg.lock @@ -2,14 +2,14 @@ [[projects]] - name = "github.com/sdboyer/deptest" + branch = "master" + name = "github.com/sdboyer/deptesttres" packages = ["."] - revision = "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" - version = "v1.0.0" + revision = "54aaeb0023e1f3dcf5f98f31dd8c565457945a12" [solve-meta] analyzer-name = "dep" analyzer-version = 1 - inputs-digest = "14b07b05e0f01051b03887ab2bf80b516bc5510ea92f75f76c894b1745d8850c" + inputs-digest = "d1fe1d4f4dd98b75908b524bd73d43a4b9e3ce0b9522ea6ce9d6c9ea15190c1d" solver-name = "gps-cdcl" solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-imports/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/exists-imports/final/Gopkg.toml new file mode 100644 index 0000000000..7cba6f98a0 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-imports/final/Gopkg.toml @@ -0,0 +1,3 @@ +[[constraint]] + name = "github.com/sdboyer/deptesttres" + branch = "master" diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-imports/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/exists-imports/initial/Gopkg.toml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/add/exists-imports/initial/main.go similarity index 56% rename from cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/initial/main.go rename to cmd/dep/testdata/harness_tests/ensure/add/exists-imports/initial/main.go index c5b8da51da..8049e4ec2c 100644 --- a/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/initial/main.go +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-imports/initial/main.go @@ -1,13 +1,13 @@ -// Copyright 2016 The Go Authors. All rights reserved. +// Copyright 2017 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" + "github.com/sdboyer/deptesttres" ) func main() { - _ := deptest.Map["yo yo!"] + type a deptesttres.Bar } diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-imports/testcase.json b/cmd/dep/testdata/harness_tests/ensure/add/exists-imports/testcase.json new file mode 100644 index 0000000000..69755349e4 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-imports/testcase.json @@ -0,0 +1,8 @@ +{ + "commands": [ + ["ensure", "-add", "github.com/sdboyer/deptesttres@master"] + ], + "vendor-final": [ + "github.com/sdboyer/deptesttres" + ] +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/final/Gopkg.lock similarity index 59% rename from cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/final/Gopkg.lock rename to cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/final/Gopkg.lock index c7f497e7a1..e235bce702 100644 --- a/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/final/Gopkg.lock +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/final/Gopkg.lock @@ -7,9 +7,15 @@ revision = "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" version = "v1.0.0" +[[projects]] + branch = "master" + name = "github.com/sdboyer/deptesttres" + packages = ["."] + revision = "54aaeb0023e1f3dcf5f98f31dd8c565457945a12" + [solve-meta] analyzer-name = "dep" analyzer-version = 1 - inputs-digest = "14b07b05e0f01051b03887ab2bf80b516bc5510ea92f75f76c894b1745d8850c" + inputs-digest = "d1fe1d4f4dd98b75908b524bd73d43a4b9e3ce0b9522ea6ce9d6c9ea15190c1d" solver-name = "gps-cdcl" solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/final/Gopkg.toml new file mode 100644 index 0000000000..598accd86c --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/final/Gopkg.toml @@ -0,0 +1,7 @@ +[[constraint]] + name = "github.com/sdboyer/deptesttres" + branch = "master" + +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/initial/Gopkg.lock new file mode 100644 index 0000000000..66ef021c68 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/initial/Gopkg.lock @@ -0,0 +1,15 @@ +# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. + + +[[projects]] + branch = "master" + name = "github.com/sdboyer/deptesttres" + packages = ["."] + revision = "54aaeb0023e1f3dcf5f98f31dd8c565457945a12" + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + inputs-digest = "342afd8c8a616d084eb7b67bf3a891710eca3ce5abc3cf60af0dae4ccfdcd001" + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/initial/Gopkg.toml new file mode 100644 index 0000000000..598accd86c --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/initial/Gopkg.toml @@ -0,0 +1,7 @@ +[[constraint]] + name = "github.com/sdboyer/deptesttres" + branch = "master" + +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/initial/main.go new file mode 100644 index 0000000000..8049e4ec2c --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/initial/main.go @@ -0,0 +1,13 @@ +// Copyright 2017 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/deptesttres" +) + +func main() { + type a deptesttres.Bar +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/testcase.json b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/testcase.json new file mode 100644 index 0000000000..6a19d7c2b1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest-constraint/testcase.json @@ -0,0 +1,9 @@ +{ + "commands": [ + ["ensure", "-add", "github.com/sdboyer/deptest"] + ], + "vendor-final": [ + "github.com/sdboyer/deptest", + "github.com/sdboyer/deptesttres" + ] +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/final/Gopkg.lock index c7f497e7a1..66ef021c68 100644 --- a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/final/Gopkg.lock +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/final/Gopkg.lock @@ -2,14 +2,14 @@ [[projects]] - name = "github.com/sdboyer/deptest" + branch = "master" + name = "github.com/sdboyer/deptesttres" packages = ["."] - revision = "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" - version = "v1.0.0" + revision = "54aaeb0023e1f3dcf5f98f31dd8c565457945a12" [solve-meta] analyzer-name = "dep" analyzer-version = 1 - inputs-digest = "14b07b05e0f01051b03887ab2bf80b516bc5510ea92f75f76c894b1745d8850c" + inputs-digest = "342afd8c8a616d084eb7b67bf3a891710eca3ce5abc3cf60af0dae4ccfdcd001" solver-name = "gps-cdcl" solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/final/Gopkg.toml index 51ff69b358..598accd86c 100644 --- a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/final/Gopkg.toml +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/final/Gopkg.toml @@ -1,3 +1,7 @@ +[[constraint]] + name = "github.com/sdboyer/deptesttres" + branch = "master" + [[constraint]] name = "github.com/sdboyer/deptest" version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/Gopkg.lock index c7f497e7a1..66ef021c68 100644 --- a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/Gopkg.lock +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/Gopkg.lock @@ -2,14 +2,14 @@ [[projects]] - name = "github.com/sdboyer/deptest" + branch = "master" + name = "github.com/sdboyer/deptesttres" packages = ["."] - revision = "ff2948a2ac8f538c4ecd55962e919d1e13e74baf" - version = "v1.0.0" + revision = "54aaeb0023e1f3dcf5f98f31dd8c565457945a12" [solve-meta] analyzer-name = "dep" analyzer-version = 1 - inputs-digest = "14b07b05e0f01051b03887ab2bf80b516bc5510ea92f75f76c894b1745d8850c" + inputs-digest = "342afd8c8a616d084eb7b67bf3a891710eca3ce5abc3cf60af0dae4ccfdcd001" solver-name = "gps-cdcl" solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/Gopkg.toml index 51ff69b358..598accd86c 100644 --- a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/Gopkg.toml +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/Gopkg.toml @@ -1,3 +1,7 @@ +[[constraint]] + name = "github.com/sdboyer/deptesttres" + branch = "master" + [[constraint]] name = "github.com/sdboyer/deptest" version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/main.go index c5b8da51da..8049e4ec2c 100644 --- a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/main.go +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/main.go @@ -1,13 +1,13 @@ -// Copyright 2016 The Go Authors. All rights reserved. +// Copyright 2017 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" + "github.com/sdboyer/deptesttres" ) func main() { - _ := deptest.Map["yo yo!"] + type a deptesttres.Bar } diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/testcase.json b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/testcase.json index 5cf7b6d442..a0d78d31b6 100644 --- a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/testcase.json +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/testcase.json @@ -1,6 +1,6 @@ { "commands": [ - ["ensure", "-add", "github.com/sdboyer/deptesttres"] + ["ensure", "-add", "github.com/sdboyer/deptest@1.0.0"] ], - "error-expected": "nothing to -add, github.com/sdboyer/deptest is already in Gopkg.toml and the project's direct imports or required list" + "error-expected": "Gopkg.toml already contains rules for github.com/sdboyer/deptest, cannot specify a version constraint" } diff --git a/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/final/Gopkg.toml deleted file mode 100644 index 51ff69b358..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/final/Gopkg.toml +++ /dev/null @@ -1,3 +0,0 @@ -[[constraint]] - name = "github.com/sdboyer/deptest" - version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/initial/Gopkg.toml deleted file mode 100644 index 51ff69b358..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/initial/Gopkg.toml +++ /dev/null @@ -1,3 +0,0 @@ -[[constraint]] - name = "github.com/sdboyer/deptest" - version = "1.0.0" diff --git a/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/testcase.json b/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/testcase.json deleted file mode 100644 index cff3e2e981..0000000000 --- a/cmd/dep/testdata/harness_tests/ensure/add/nonroot-arg/testcase.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "commands": [ - ["ensure", "-add", "github.com/sdboyer/deptest/subpkg"] - ], - "error-expected": "github.com/sdboyer/deptest/subpkg is not a project root, try github.com/sdboyer/deptest instead" -} From f38e02bbef0968d1b26b9a20d6aec2f20b2090d9 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Sun, 30 Jul 2017 23:16:45 -0400 Subject: [PATCH 26/34] Add handling of feedback, etc. on ensure -add --- cmd/dep/ensure.go | 181 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 149 insertions(+), 32 deletions(-) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index 7366cdc659..7862960438 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -9,6 +9,9 @@ import ( "encoding/hex" "flag" "go/build" + "os" + "path/filepath" + "sort" "strconv" "strings" @@ -34,10 +37,10 @@ Flags: -dry-run: only report the changes that would be made -Ensure gets a project into a complete, compilable, and reproducible state: +Ensure gets a project into a complete, reproducible, and likely compilable state: * All non-stdlib imports are fulfilled - * All constraints and overrides in Gopkg.toml are respected + * All rules in Gopkg.toml are respected * Gopkg.lock records precise versions for all dependencies * vendor/ is populated according to Gopkg.lock @@ -336,6 +339,9 @@ func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, } solution, err := solver.Solve() if err != nil { + // TODO(sdboyer) special handling for warning cases as described in spec + // - e.g., named projects did not upgrade even though newer versions + // were available. handleAllTheFailuresOfTheWorld(err) return errors.Wrap(err, "ensure Solve()") } @@ -344,9 +350,6 @@ func (cmd *ensureCommand) runUpdate(ctx *dep.Ctx, args []string, p *dep.Project, if err != nil { return err } - // TODO(sdboyer) special handling for warning cases as described in spec - - // e.g., named projects did not upgrade even though newer versions were - // available. if cmd.dryRun { return sw.PrintPreparedActions(ctx.Out) } @@ -403,11 +406,38 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm exrmap[root] = true } - var reqlist []string + // Note: these flags are only partialy used by the latter parts of the + // algorithm; rather, it relies on inference. However, they remain in their + // entirety as future needs may make further use of them, being a handy, + // terse way of expressing the original context of the arg inputs. + type addType uint8 + const ( + // Straightforward case - this induces a temporary require, and thus + // a warning message about it being ephemeral. + isInManifest addType = 1 << iota + // If solving works, we'll pull this constraint from the in-memory + // manifest (where we recorded it earlier) and then append it to the + // manifest on disk. + isInImportsWithConstraint + // If solving works, we'll extract a constraint from the lock and + // append it into the manifest on disk, similar to init's behavior. + isInImportsNoConstraint + // This gets a message AND a hoist from the solution up into the + // manifest on disk. + isInNeither + ) + + type addInstruction struct { + id gps.ProjectIdentifier + ephReq map[string]bool + constraint gps.Constraint + typ addType + } + addInstructions := make(map[gps.ProjectRoot]addInstruction) for _, arg := range args { // TODO(sdboyer) return all errors, not just the first one we encounter - // TODO(sdboyer) do these concurrently + // TODO(sdboyer) do these concurrently? pc, path, err := getProjectConstraint(arg, sm) if err != nil { // TODO(sdboyer) ensure these errors are contextualized in a sensible way for -add @@ -426,30 +456,44 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm } someConstraint := !gps.IsAny(pc.Constraint) || pc.Ident.Source != "" + + instr, has := addInstructions[pc.Ident.ProjectRoot] + if has { + // Multiple packages from the same project were specified as + // arguments; make sure they agree on declared constraints. + // TODO(sdboyer) until we have a general method for checking constraint equality, only allow one to declare + if someConstraint { + if !gps.IsAny(instr.constraint) || instr.id.Source != "" { + return errors.Errorf("can only specify rules once per project being added; rules were given at least twice for %s", pc.Ident.ProjectRoot) + } + instr.constraint = pc.Constraint + instr.id = pc.Ident + } + } else { + instr.ephReq = make(map[string]bool) + instr.constraint = pc.Constraint + instr.id = pc.Ident + } + if inManifest { if someConstraint { return errors.Errorf("%s already contains rules for %s, cannot specify a version constraint or alternate source", dep.ManifestName, path) } - reqlist = append(reqlist, path) - p.Manifest.Required = append(p.Manifest.Required, path) + instr.ephReq[path] = true + instr.typ |= isInManifest + //p.Manifest.Required = append(p.Manifest.Required, path) } else if inImports { if !someConstraint { if exmap[path] { - return errors.Errorf("%s is already imported or required; -add must specify a constraint, but none were provided", path) + return errors.Errorf("%s is already imported or required, so -add is only valid with a constraint", path) } // No constraints, but the package isn't imported; require it. - // TODO(sdboyer) this case seems like it's getting overly - // specific and risks muddying the water more than it helps - reqlist = append(reqlist, path) - p.Manifest.Required = append(p.Manifest.Required, path) + // TODO(sdboyer) this case seems like it's getting overly specific and risks muddying the water more than it helps + instr.ephReq[path] = true + instr.typ |= isInImportsNoConstraint } else { - p.Manifest.Constraints[pc.Ident.ProjectRoot] = gps.ProjectProperties{ - Source: pc.Ident.Source, - Constraint: pc.Constraint, - } - // Don't require on this branch if the path was a ProjectRoot; // most common here will be the user adding constraints to // something they already imported, and if they specify the @@ -457,19 +501,37 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm // require the project's root package, but are just trying to // indicate which project should receive the constraints. if !exmap[path] && string(pc.Ident.ProjectRoot) != path { - reqlist = append(reqlist, path) - p.Manifest.Required = append(p.Manifest.Required, path) + instr.ephReq[path] = true } + instr.typ |= isInImportsWithConstraint } } else { - p.Manifest.Constraints[pc.Ident.ProjectRoot] = gps.ProjectProperties{ - Source: pc.Ident.Source, - Constraint: pc.Constraint, - } + instr.typ |= isInNeither + instr.ephReq[path] = true + } - reqlist = append(reqlist, path) + addInstructions[pc.Ident.ProjectRoot] = instr + } + + // We're now sure all of our add instructions are individually and mutually + // valid, so it's safe to begin modifying the input parameters. + for pr, instr := range addInstructions { + // The arg processing logic above only adds to the ephReq list if + // that package definitely needs to be on that list, so we don't + // need to check instr.typ here - if it's in instr.ephReq, it + // definitely needs to be added to the manifest's required list. + for path := range instr.ephReq { p.Manifest.Required = append(p.Manifest.Required, path) } + + // Only two branches can possibly be adding rules, though the + // isInNeither case may or may not have an empty constraint. + if instr.typ&(isInNeither|isInImportsWithConstraint) != 0 { + p.Manifest.Constraints[pr] = gps.ProjectProperties{ + Source: instr.id.Source, + Constraint: instr.constraint, + } + } } // Re-prepare a solver now that our params are complete. @@ -485,10 +547,33 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm return errors.Wrap(err, "ensure Solve()") } + // Prep post-actions and feedback from adds. + var reqlist []string + appender := &dep.Manifest{ + Constraints: make(gps.ProjectConstraints), + } + for pr, instr := range addInstructions { + for path := range instr.ephReq { + reqlist = append(reqlist, path) + } + + if !gps.IsAny(instr.constraint) || instr.id.Source != "" { + appender.Constraints[pr] = gps.ProjectProperties{ + Source: instr.id.Source, + Constraint: instr.constraint, + } + } else { + // TODO(sdboyer) hoist a constraint into the manifest from the lock + } + } + + extra, err := appender.MarshalTOML() + if err != nil { + return errors.Wrap(err, "could not marshal manifest into TOML") + } + sort.Strings(reqlist) + sw, err := dep.NewSafeWriter(nil, p.Lock, dep.LockFromSolution(solution), dep.VendorOnChanged) - // TODO(sdboyer) special handling for warning cases as described in spec - - // e.g., named projects did not upgrade even though newer versions were - // available. if cmd.dryRun { return sw.PrintPreparedActions(ctx.Out) } @@ -498,9 +583,41 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm return err } - // TODO(sdboyer) handle appending of constraints to Gopkg.toml here, plus - // info messages to user - return nil + // FIXME(sdboyer) manifest writes ABSOLUTELY need verification - follow up! + f, err := os.OpenFile(filepath.Join(p.AbsRoot, dep.ManifestName), os.O_APPEND|os.O_WRONLY, 0666) + if err != nil { + return errors.Wrapf(err, "opening %s failed", dep.ManifestName) + } + + _, err = f.Write(append([]byte("\n"), extra...)) + if err != nil { + return errors.Wrapf(err, "writing to %s failed", dep.ManifestName) + } + + switch len(reqlist) { + case 0: + // nothing to tell the user + case 1: + if cmd.noVendor { + ctx.Out.Printf("%q is not imported by your project, and has been temporarily added to %s.\n", reqlist[0], dep.LockName) + ctx.Out.Printf("If you run \"dep ensure\" again before actually importing it, it will disappear from %s. Running \"dep ensure -vendor-only\" is safe, and will guarantee it is present in vendor/.", dep.LockName) + } else { + ctx.Out.Printf("%q is not imported by your project, and has been temporarily added to %s and vendor/.\n", reqlist[0], dep.LockName) + ctx.Out.Printf("If you run \"dep ensure\" again before actually importing it, it will disappear from %s and vendor/.", dep.LockName) + } + default: + if cmd.noVendor { + ctx.Out.Printf("The following packages are not imported by your project, and have been temporarily added to %s:\n", dep.LockName) + ctx.Out.Printf("\t%s\n", strings.Join(reqlist, "\n\t")) + ctx.Out.Printf("If you run \"dep ensure\" again before actually importing them, they will disappear from %s. Running \"dep ensure -vendor-only\" is safe, and will guarantee they are present in vendor/.", dep.LockName) + } else { + ctx.Out.Printf("The following packages are not imported by your project, and have been temporarily added to %s and vendor/:\n", dep.LockName) + ctx.Out.Printf("\t%s\n", strings.Join(reqlist, "\n\t")) + ctx.Out.Printf("If you run \"dep ensure\" again before actually importing them, they will disappear from %s and vendor/.", dep.LockName) + } + } + + return errors.Wrapf(f.Close(), "closing %s", dep.ManifestName) } type stringSlice []string From 97441d7790d536f3335cfaf027236c28769182e8 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Mon, 31 Jul 2017 12:20:58 -0400 Subject: [PATCH 27/34] All tests passing --- cmd/dep/ensure.go | 4 ++-- .../harness_tests/ensure/add/exists-imports/final/Gopkg.lock | 2 +- .../harness_tests/ensure/add/exists-imports/final/Gopkg.toml | 3 ++- .../harness_tests/ensure/empty/case1/final/Gopkg.toml | 1 + 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index ea9bfe6098..cd86107d88 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -587,7 +587,7 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm return errors.Wrapf(err, "opening %s failed", dep.ManifestName) } - _, err = f.Write(append([]byte("\n"), extra...)) + _, err = f.Write(extra) if err != nil { return errors.Wrapf(err, "writing to %s failed", dep.ManifestName) } @@ -638,7 +638,7 @@ func getProjectConstraint(arg string, sm gps.SourceManager) (gps.ProjectConstrai // try to split on '@' // When there is no `@`, use any version - versionStr := "*" + var versionStr string atIndex := strings.Index(arg, "@") if atIndex > 0 { parts := strings.SplitN(arg, "@", 2) diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-imports/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/exists-imports/final/Gopkg.lock index 744669485c..66ef021c68 100644 --- a/cmd/dep/testdata/harness_tests/ensure/add/exists-imports/final/Gopkg.lock +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-imports/final/Gopkg.lock @@ -10,6 +10,6 @@ [solve-meta] analyzer-name = "dep" analyzer-version = 1 - inputs-digest = "d1fe1d4f4dd98b75908b524bd73d43a4b9e3ce0b9522ea6ce9d6c9ea15190c1d" + inputs-digest = "342afd8c8a616d084eb7b67bf3a891710eca3ce5abc3cf60af0dae4ccfdcd001" solver-name = "gps-cdcl" solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-imports/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/exists-imports/final/Gopkg.toml index 7cba6f98a0..bbc8cc1688 100644 --- a/cmd/dep/testdata/harness_tests/ensure/add/exists-imports/final/Gopkg.toml +++ b/cmd/dep/testdata/harness_tests/ensure/add/exists-imports/final/Gopkg.toml @@ -1,3 +1,4 @@ + [[constraint]] - name = "github.com/sdboyer/deptesttres" branch = "master" + name = "github.com/sdboyer/deptesttres" diff --git a/cmd/dep/testdata/harness_tests/ensure/empty/case1/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/empty/case1/final/Gopkg.toml index 51ff69b358..e242e02114 100644 --- a/cmd/dep/testdata/harness_tests/ensure/empty/case1/final/Gopkg.toml +++ b/cmd/dep/testdata/harness_tests/ensure/empty/case1/final/Gopkg.toml @@ -1,3 +1,4 @@ + [[constraint]] name = "github.com/sdboyer/deptest" version = "1.0.0" From 9825b72307451a39330a3ba4014c6c13acd26e28 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Mon, 31 Jul 2017 14:34:50 -0400 Subject: [PATCH 28/34] Create err subdirs for error cases --- .../harness_tests/ensure/add/{ => errs}/desync/final/Gopkg.lock | 0 .../harness_tests/ensure/add/{ => errs}/desync/final/Gopkg.toml | 0 .../harness_tests/ensure/add/{ => errs}/desync/final/main.go | 0 .../harness_tests/ensure/add/{ => errs}/desync/initial/Gopkg.lock | 0 .../harness_tests/ensure/add/{ => errs}/desync/initial/Gopkg.toml | 0 .../harness_tests/ensure/add/{ => errs}/desync/initial/main.go | 0 .../harness_tests/ensure/add/{ => errs}/desync/testcase.json | 0 .../ensure/add/{ => errs}/exists-manifest/final/Gopkg.lock | 0 .../ensure/add/{ => errs}/exists-manifest/final/Gopkg.toml | 0 .../ensure/add/{ => errs}/exists-manifest/initial/Gopkg.lock | 0 .../ensure/add/{ => errs}/exists-manifest/initial/Gopkg.toml | 0 .../ensure/add/{ => errs}/exists-manifest/initial/main.go | 0 .../ensure/add/{ => errs}/exists-manifest/testcase.json | 0 .../harness_tests/ensure/add/{ => errs}/exists/final/Gopkg.lock | 0 .../harness_tests/ensure/add/{ => errs}/exists/final/Gopkg.toml | 0 .../harness_tests/ensure/add/{ => errs}/exists/initial/Gopkg.lock | 0 .../harness_tests/ensure/add/{ => errs}/exists/initial/Gopkg.toml | 0 .../harness_tests/ensure/add/{ => errs}/exists/initial/main.go | 0 .../harness_tests/ensure/add/{ => errs}/exists/testcase.json | 0 .../harness_tests/ensure/add/{ => errs}/noarg/final/Gopkg.lock | 0 .../harness_tests/ensure/add/{ => errs}/noarg/final/Gopkg.toml | 0 .../harness_tests/ensure/add/{ => errs}/noarg/final/main.go | 0 .../harness_tests/ensure/add/{ => errs}/noarg/initial/Gopkg.lock | 0 .../harness_tests/ensure/add/{ => errs}/noarg/initial/Gopkg.toml | 0 .../harness_tests/ensure/add/{ => errs}/noarg/initial/main.go | 0 .../harness_tests/ensure/add/{ => errs}/noarg/testcase.json | 0 .../default/{ => errs}/lockless-vendoronly/final/Gopkg.toml | 0 .../ensure/default/{ => errs}/lockless-vendoronly/final/main.go | 0 .../default/{ => errs}/lockless-vendoronly/initial/Gopkg.toml | 0 .../ensure/default/{ => errs}/lockless-vendoronly/initial/main.go | 0 .../ensure/default/{ => errs}/lockless-vendoronly/testcase.json | 0 .../ensure/default/{ => errs}/specargs/final/Gopkg.lock | 0 .../ensure/default/{ => errs}/specargs/final/Gopkg.toml | 0 .../ensure/default/{ => errs}/specargs/initial/Gopkg.lock | 0 .../ensure/default/{ => errs}/specargs/initial/Gopkg.toml | 0 .../ensure/default/{ => errs}/specargs/initial/main.go | 0 .../ensure/default/{ => errs}/specargs/testcase.json | 0 .../ensure/update/{ => errs}/desync/final/Gopkg.lock | 0 .../ensure/update/{ => errs}/desync/final/Gopkg.toml | 0 .../harness_tests/ensure/update/{ => errs}/desync/final/main.go | 0 .../ensure/update/{ => errs}/desync/initial/Gopkg.lock | 0 .../ensure/update/{ => errs}/desync/initial/Gopkg.toml | 0 .../harness_tests/ensure/update/{ => errs}/desync/initial/main.go | 0 .../harness_tests/ensure/update/{ => errs}/desync/testcase.json | 0 .../ensure/update/{ => errs}/lockless/final/Gopkg.toml | 0 .../harness_tests/ensure/update/{ => errs}/lockless/final/main.go | 0 .../ensure/update/{ => errs}/lockless/initial/Gopkg.toml | 0 .../ensure/update/{ => errs}/lockless/initial/main.go | 0 .../harness_tests/ensure/update/{ => errs}/lockless/testcase.json | 0 .../ensure/update/{ => errs}/nonroot-arg/final/Gopkg.lock | 0 .../ensure/update/{ => errs}/nonroot-arg/final/Gopkg.toml | 0 .../ensure/update/{ => errs}/nonroot-arg/initial/Gopkg.lock | 0 .../ensure/update/{ => errs}/nonroot-arg/initial/Gopkg.toml | 0 .../ensure/update/{ => errs}/nonroot-arg/initial/main.go | 0 .../ensure/update/{ => errs}/nonroot-arg/testcase.json | 0 .../ensure/update/{ => errs}/not-in-lock/final/Gopkg.lock | 0 .../ensure/update/{ => errs}/not-in-lock/final/Gopkg.toml | 0 .../ensure/update/{ => errs}/not-in-lock/initial/Gopkg.lock | 0 .../ensure/update/{ => errs}/not-in-lock/initial/Gopkg.toml | 0 .../ensure/update/{ => errs}/not-in-lock/initial/main.go | 0 .../ensure/update/{ => errs}/not-in-lock/testcase.json | 0 .../update/{ => errs}/spec-with-constraint/final/Gopkg.lock | 0 .../update/{ => errs}/spec-with-constraint/final/Gopkg.toml | 0 .../update/{ => errs}/spec-with-constraint/initial/Gopkg.lock | 0 .../update/{ => errs}/spec-with-constraint/initial/Gopkg.toml | 0 .../ensure/update/{ => errs}/spec-with-constraint/initial/main.go | 0 .../ensure/update/{ => errs}/spec-with-constraint/testcase.json | 0 .../ensure/update/{ => errs}/spec-with-source/final/Gopkg.lock | 0 .../ensure/update/{ => errs}/spec-with-source/final/Gopkg.toml | 0 .../ensure/update/{ => errs}/spec-with-source/initial/Gopkg.lock | 0 .../ensure/update/{ => errs}/spec-with-source/initial/Gopkg.toml | 0 .../ensure/update/{ => errs}/spec-with-source/initial/main.go | 0 .../ensure/update/{ => errs}/spec-with-source/testcase.json | 0 73 files changed, 0 insertions(+), 0 deletions(-) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/desync/final/Gopkg.lock (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/desync/final/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/desync/final/main.go (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/desync/initial/Gopkg.lock (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/desync/initial/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/desync/initial/main.go (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/desync/testcase.json (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/exists-manifest/final/Gopkg.lock (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/exists-manifest/final/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/exists-manifest/initial/Gopkg.lock (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/exists-manifest/initial/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/exists-manifest/initial/main.go (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/exists-manifest/testcase.json (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/exists/final/Gopkg.lock (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/exists/final/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/exists/initial/Gopkg.lock (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/exists/initial/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/exists/initial/main.go (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/exists/testcase.json (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/noarg/final/Gopkg.lock (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/noarg/final/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/noarg/final/main.go (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/noarg/initial/Gopkg.lock (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/noarg/initial/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/noarg/initial/main.go (100%) rename cmd/dep/testdata/harness_tests/ensure/add/{ => errs}/noarg/testcase.json (100%) rename cmd/dep/testdata/harness_tests/ensure/default/{ => errs}/lockless-vendoronly/final/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/default/{ => errs}/lockless-vendoronly/final/main.go (100%) rename cmd/dep/testdata/harness_tests/ensure/default/{ => errs}/lockless-vendoronly/initial/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/default/{ => errs}/lockless-vendoronly/initial/main.go (100%) rename cmd/dep/testdata/harness_tests/ensure/default/{ => errs}/lockless-vendoronly/testcase.json (100%) rename cmd/dep/testdata/harness_tests/ensure/default/{ => errs}/specargs/final/Gopkg.lock (100%) rename cmd/dep/testdata/harness_tests/ensure/default/{ => errs}/specargs/final/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/default/{ => errs}/specargs/initial/Gopkg.lock (100%) rename cmd/dep/testdata/harness_tests/ensure/default/{ => errs}/specargs/initial/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/default/{ => errs}/specargs/initial/main.go (100%) rename cmd/dep/testdata/harness_tests/ensure/default/{ => errs}/specargs/testcase.json (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/desync/final/Gopkg.lock (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/desync/final/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/desync/final/main.go (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/desync/initial/Gopkg.lock (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/desync/initial/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/desync/initial/main.go (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/desync/testcase.json (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/lockless/final/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/lockless/final/main.go (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/lockless/initial/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/lockless/initial/main.go (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/lockless/testcase.json (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/nonroot-arg/final/Gopkg.lock (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/nonroot-arg/final/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/nonroot-arg/initial/Gopkg.lock (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/nonroot-arg/initial/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/nonroot-arg/initial/main.go (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/nonroot-arg/testcase.json (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/not-in-lock/final/Gopkg.lock (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/not-in-lock/final/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/not-in-lock/initial/Gopkg.lock (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/not-in-lock/initial/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/not-in-lock/initial/main.go (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/not-in-lock/testcase.json (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/spec-with-constraint/final/Gopkg.lock (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/spec-with-constraint/final/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/spec-with-constraint/initial/Gopkg.lock (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/spec-with-constraint/initial/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/spec-with-constraint/initial/main.go (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/spec-with-constraint/testcase.json (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/spec-with-source/final/Gopkg.lock (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/spec-with-source/final/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/spec-with-source/initial/Gopkg.lock (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/spec-with-source/initial/Gopkg.toml (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/spec-with-source/initial/main.go (100%) rename cmd/dep/testdata/harness_tests/ensure/update/{ => errs}/spec-with-source/testcase.json (100%) diff --git a/cmd/dep/testdata/harness_tests/ensure/add/desync/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/errs/desync/final/Gopkg.lock similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/desync/final/Gopkg.lock rename to cmd/dep/testdata/harness_tests/ensure/add/errs/desync/final/Gopkg.lock diff --git a/cmd/dep/testdata/harness_tests/ensure/add/desync/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/errs/desync/final/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/desync/final/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/add/errs/desync/final/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/add/desync/final/main.go b/cmd/dep/testdata/harness_tests/ensure/add/errs/desync/final/main.go similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/desync/final/main.go rename to cmd/dep/testdata/harness_tests/ensure/add/errs/desync/final/main.go diff --git a/cmd/dep/testdata/harness_tests/ensure/add/desync/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/errs/desync/initial/Gopkg.lock similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/desync/initial/Gopkg.lock rename to cmd/dep/testdata/harness_tests/ensure/add/errs/desync/initial/Gopkg.lock diff --git a/cmd/dep/testdata/harness_tests/ensure/add/desync/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/errs/desync/initial/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/desync/initial/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/add/errs/desync/initial/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/add/desync/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/add/errs/desync/initial/main.go similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/desync/initial/main.go rename to cmd/dep/testdata/harness_tests/ensure/add/errs/desync/initial/main.go diff --git a/cmd/dep/testdata/harness_tests/ensure/add/desync/testcase.json b/cmd/dep/testdata/harness_tests/ensure/add/errs/desync/testcase.json similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/desync/testcase.json rename to cmd/dep/testdata/harness_tests/ensure/add/errs/desync/testcase.json diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/errs/exists-manifest/final/Gopkg.lock similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/final/Gopkg.lock rename to cmd/dep/testdata/harness_tests/ensure/add/errs/exists-manifest/final/Gopkg.lock diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/errs/exists-manifest/final/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/final/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/add/errs/exists-manifest/final/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/errs/exists-manifest/initial/Gopkg.lock similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/Gopkg.lock rename to cmd/dep/testdata/harness_tests/ensure/add/errs/exists-manifest/initial/Gopkg.lock diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/errs/exists-manifest/initial/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/add/errs/exists-manifest/initial/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/add/errs/exists-manifest/initial/main.go similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/initial/main.go rename to cmd/dep/testdata/harness_tests/ensure/add/errs/exists-manifest/initial/main.go diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/testcase.json b/cmd/dep/testdata/harness_tests/ensure/add/errs/exists-manifest/testcase.json similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/exists-manifest/testcase.json rename to cmd/dep/testdata/harness_tests/ensure/add/errs/exists-manifest/testcase.json diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/errs/exists/final/Gopkg.lock similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/exists/final/Gopkg.lock rename to cmd/dep/testdata/harness_tests/ensure/add/errs/exists/final/Gopkg.lock diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/errs/exists/final/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/exists/final/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/add/errs/exists/final/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/errs/exists/initial/Gopkg.lock similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/exists/initial/Gopkg.lock rename to cmd/dep/testdata/harness_tests/ensure/add/errs/exists/initial/Gopkg.lock diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/errs/exists/initial/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/exists/initial/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/add/errs/exists/initial/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/add/errs/exists/initial/main.go similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/exists/initial/main.go rename to cmd/dep/testdata/harness_tests/ensure/add/errs/exists/initial/main.go diff --git a/cmd/dep/testdata/harness_tests/ensure/add/exists/testcase.json b/cmd/dep/testdata/harness_tests/ensure/add/errs/exists/testcase.json similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/exists/testcase.json rename to cmd/dep/testdata/harness_tests/ensure/add/errs/exists/testcase.json diff --git a/cmd/dep/testdata/harness_tests/ensure/add/noarg/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/errs/noarg/final/Gopkg.lock similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/noarg/final/Gopkg.lock rename to cmd/dep/testdata/harness_tests/ensure/add/errs/noarg/final/Gopkg.lock diff --git a/cmd/dep/testdata/harness_tests/ensure/add/noarg/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/errs/noarg/final/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/noarg/final/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/add/errs/noarg/final/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/add/noarg/final/main.go b/cmd/dep/testdata/harness_tests/ensure/add/errs/noarg/final/main.go similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/noarg/final/main.go rename to cmd/dep/testdata/harness_tests/ensure/add/errs/noarg/final/main.go diff --git a/cmd/dep/testdata/harness_tests/ensure/add/noarg/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/errs/noarg/initial/Gopkg.lock similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/noarg/initial/Gopkg.lock rename to cmd/dep/testdata/harness_tests/ensure/add/errs/noarg/initial/Gopkg.lock diff --git a/cmd/dep/testdata/harness_tests/ensure/add/noarg/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/errs/noarg/initial/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/noarg/initial/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/add/errs/noarg/initial/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/add/noarg/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/add/errs/noarg/initial/main.go similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/noarg/initial/main.go rename to cmd/dep/testdata/harness_tests/ensure/add/errs/noarg/initial/main.go diff --git a/cmd/dep/testdata/harness_tests/ensure/add/noarg/testcase.json b/cmd/dep/testdata/harness_tests/ensure/add/errs/noarg/testcase.json similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/add/noarg/testcase.json rename to cmd/dep/testdata/harness_tests/ensure/add/errs/noarg/testcase.json diff --git a/cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/default/errs/lockless-vendoronly/final/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/final/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/default/errs/lockless-vendoronly/final/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/final/main.go b/cmd/dep/testdata/harness_tests/ensure/default/errs/lockless-vendoronly/final/main.go similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/final/main.go rename to cmd/dep/testdata/harness_tests/ensure/default/errs/lockless-vendoronly/final/main.go diff --git a/cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/default/errs/lockless-vendoronly/initial/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/initial/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/default/errs/lockless-vendoronly/initial/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/default/errs/lockless-vendoronly/initial/main.go similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/initial/main.go rename to cmd/dep/testdata/harness_tests/ensure/default/errs/lockless-vendoronly/initial/main.go diff --git a/cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/testcase.json b/cmd/dep/testdata/harness_tests/ensure/default/errs/lockless-vendoronly/testcase.json similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/default/lockless-vendoronly/testcase.json rename to cmd/dep/testdata/harness_tests/ensure/default/errs/lockless-vendoronly/testcase.json diff --git a/cmd/dep/testdata/harness_tests/ensure/default/specargs/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/default/errs/specargs/final/Gopkg.lock similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/default/specargs/final/Gopkg.lock rename to cmd/dep/testdata/harness_tests/ensure/default/errs/specargs/final/Gopkg.lock diff --git a/cmd/dep/testdata/harness_tests/ensure/default/specargs/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/default/errs/specargs/final/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/default/specargs/final/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/default/errs/specargs/final/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/default/specargs/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/default/errs/specargs/initial/Gopkg.lock similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/default/specargs/initial/Gopkg.lock rename to cmd/dep/testdata/harness_tests/ensure/default/errs/specargs/initial/Gopkg.lock diff --git a/cmd/dep/testdata/harness_tests/ensure/default/specargs/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/default/errs/specargs/initial/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/default/specargs/initial/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/default/errs/specargs/initial/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/default/specargs/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/default/errs/specargs/initial/main.go similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/default/specargs/initial/main.go rename to cmd/dep/testdata/harness_tests/ensure/default/errs/specargs/initial/main.go diff --git a/cmd/dep/testdata/harness_tests/ensure/default/specargs/testcase.json b/cmd/dep/testdata/harness_tests/ensure/default/errs/specargs/testcase.json similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/default/specargs/testcase.json rename to cmd/dep/testdata/harness_tests/ensure/default/errs/specargs/testcase.json diff --git a/cmd/dep/testdata/harness_tests/ensure/update/desync/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/errs/desync/final/Gopkg.lock similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/desync/final/Gopkg.lock rename to cmd/dep/testdata/harness_tests/ensure/update/errs/desync/final/Gopkg.lock diff --git a/cmd/dep/testdata/harness_tests/ensure/update/desync/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/errs/desync/final/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/desync/final/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/update/errs/desync/final/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/update/desync/final/main.go b/cmd/dep/testdata/harness_tests/ensure/update/errs/desync/final/main.go similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/desync/final/main.go rename to cmd/dep/testdata/harness_tests/ensure/update/errs/desync/final/main.go diff --git a/cmd/dep/testdata/harness_tests/ensure/update/desync/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/errs/desync/initial/Gopkg.lock similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/desync/initial/Gopkg.lock rename to cmd/dep/testdata/harness_tests/ensure/update/errs/desync/initial/Gopkg.lock diff --git a/cmd/dep/testdata/harness_tests/ensure/update/desync/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/errs/desync/initial/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/desync/initial/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/update/errs/desync/initial/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/update/desync/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/update/errs/desync/initial/main.go similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/desync/initial/main.go rename to cmd/dep/testdata/harness_tests/ensure/update/errs/desync/initial/main.go diff --git a/cmd/dep/testdata/harness_tests/ensure/update/desync/testcase.json b/cmd/dep/testdata/harness_tests/ensure/update/errs/desync/testcase.json similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/desync/testcase.json rename to cmd/dep/testdata/harness_tests/ensure/update/errs/desync/testcase.json diff --git a/cmd/dep/testdata/harness_tests/ensure/update/lockless/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/errs/lockless/final/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/lockless/final/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/update/errs/lockless/final/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/update/lockless/final/main.go b/cmd/dep/testdata/harness_tests/ensure/update/errs/lockless/final/main.go similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/lockless/final/main.go rename to cmd/dep/testdata/harness_tests/ensure/update/errs/lockless/final/main.go diff --git a/cmd/dep/testdata/harness_tests/ensure/update/lockless/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/errs/lockless/initial/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/lockless/initial/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/update/errs/lockless/initial/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/update/lockless/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/update/errs/lockless/initial/main.go similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/lockless/initial/main.go rename to cmd/dep/testdata/harness_tests/ensure/update/errs/lockless/initial/main.go diff --git a/cmd/dep/testdata/harness_tests/ensure/update/lockless/testcase.json b/cmd/dep/testdata/harness_tests/ensure/update/errs/lockless/testcase.json similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/lockless/testcase.json rename to cmd/dep/testdata/harness_tests/ensure/update/errs/lockless/testcase.json diff --git a/cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/errs/nonroot-arg/final/Gopkg.lock similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/final/Gopkg.lock rename to cmd/dep/testdata/harness_tests/ensure/update/errs/nonroot-arg/final/Gopkg.lock diff --git a/cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/errs/nonroot-arg/final/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/final/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/update/errs/nonroot-arg/final/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/errs/nonroot-arg/initial/Gopkg.lock similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/initial/Gopkg.lock rename to cmd/dep/testdata/harness_tests/ensure/update/errs/nonroot-arg/initial/Gopkg.lock diff --git a/cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/errs/nonroot-arg/initial/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/initial/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/update/errs/nonroot-arg/initial/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/update/errs/nonroot-arg/initial/main.go similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/initial/main.go rename to cmd/dep/testdata/harness_tests/ensure/update/errs/nonroot-arg/initial/main.go diff --git a/cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/testcase.json b/cmd/dep/testdata/harness_tests/ensure/update/errs/nonroot-arg/testcase.json similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/nonroot-arg/testcase.json rename to cmd/dep/testdata/harness_tests/ensure/update/errs/nonroot-arg/testcase.json diff --git a/cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/errs/not-in-lock/final/Gopkg.lock similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/final/Gopkg.lock rename to cmd/dep/testdata/harness_tests/ensure/update/errs/not-in-lock/final/Gopkg.lock diff --git a/cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/errs/not-in-lock/final/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/final/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/update/errs/not-in-lock/final/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/errs/not-in-lock/initial/Gopkg.lock similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/initial/Gopkg.lock rename to cmd/dep/testdata/harness_tests/ensure/update/errs/not-in-lock/initial/Gopkg.lock diff --git a/cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/errs/not-in-lock/initial/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/initial/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/update/errs/not-in-lock/initial/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/update/errs/not-in-lock/initial/main.go similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/initial/main.go rename to cmd/dep/testdata/harness_tests/ensure/update/errs/not-in-lock/initial/main.go diff --git a/cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/testcase.json b/cmd/dep/testdata/harness_tests/ensure/update/errs/not-in-lock/testcase.json similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/not-in-lock/testcase.json rename to cmd/dep/testdata/harness_tests/ensure/update/errs/not-in-lock/testcase.json diff --git a/cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-constraint/final/Gopkg.lock similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/final/Gopkg.lock rename to cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-constraint/final/Gopkg.lock diff --git a/cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-constraint/final/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/final/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-constraint/final/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-constraint/initial/Gopkg.lock similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/initial/Gopkg.lock rename to cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-constraint/initial/Gopkg.lock diff --git a/cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-constraint/initial/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/initial/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-constraint/initial/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-constraint/initial/main.go similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/initial/main.go rename to cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-constraint/initial/main.go diff --git a/cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/testcase.json b/cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-constraint/testcase.json similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/spec-with-constraint/testcase.json rename to cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-constraint/testcase.json diff --git a/cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-source/final/Gopkg.lock similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/final/Gopkg.lock rename to cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-source/final/Gopkg.lock diff --git a/cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-source/final/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/final/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-source/final/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/initial/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-source/initial/Gopkg.lock similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/initial/Gopkg.lock rename to cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-source/initial/Gopkg.lock diff --git a/cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/initial/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-source/initial/Gopkg.toml similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/initial/Gopkg.toml rename to cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-source/initial/Gopkg.toml diff --git a/cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-source/initial/main.go similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/initial/main.go rename to cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-source/initial/main.go diff --git a/cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/testcase.json b/cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-source/testcase.json similarity index 100% rename from cmd/dep/testdata/harness_tests/ensure/update/spec-with-source/testcase.json rename to cmd/dep/testdata/harness_tests/ensure/update/errs/spec-with-source/testcase.json From 686e33154e6400e3658bd139ef66cb883a1119ec Mon Sep 17 00:00:00 2001 From: sam boyer Date: Tue, 1 Aug 2017 00:21:06 -0400 Subject: [PATCH 29/34] Add a handful more harness tests Also some comment cleanup, and relocate an errant test. --- cmd/dep/ensure.go | 4 +- .../add/all-new-double-spec/final/Gopkg.lock | 21 ++++++++++ .../add/all-new-double-spec/final/Gopkg.toml | 8 ++++ .../add/all-new-double-spec/initial/main.go | 13 ++++++ .../add/all-new-double-spec/testcase.json | 10 +++++ .../add/all-new-double/final/Gopkg.lock | 21 ++++++++++ .../add/all-new-double/final/Gopkg.toml | 4 ++ .../ensure/add/all-new-double/initial/main.go | 13 ++++++ .../ensure/add/all-new-double/testcase.json | 10 +++++ .../ensure/add/all-new-spec/final/Gopkg.lock | 21 ++++++++++ .../ensure/add/all-new-spec/final/Gopkg.toml | 8 ++++ .../ensure/add/all-new-spec/initial/main.go | 13 ++++++ .../ensure/add/all-new-spec/testcase.json | 10 +++++ .../ensure/add/all-new/final/Gopkg.lock | 21 ++++++++++ .../ensure/add/all-new/final/Gopkg.toml | 4 ++ .../ensure/add/all-new/initial/main.go | 13 ++++++ .../ensure/add/all-new/testcase.json | 10 +++++ .../errs/double-diff-spec/final/Gopkg.lock | 15 +++++++ .../errs/double-diff-spec/final/Gopkg.toml | 4 ++ .../add/errs/double-diff-spec/initial/main.go | 13 ++++++ .../add/errs/double-diff-spec/testcase.json | 10 +++++ internal/gps/source_manager_test.go | 40 ------------------- 22 files changed, 243 insertions(+), 43 deletions(-) create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/all-new-double-spec/final/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/all-new-double-spec/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/all-new-double-spec/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/all-new-double-spec/testcase.json create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/all-new-double/final/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/all-new-double/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/all-new-double/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/all-new-double/testcase.json create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/all-new-spec/final/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/all-new-spec/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/all-new-spec/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/all-new-spec/testcase.json create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/all-new/final/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/all-new/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/all-new/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/all-new/testcase.json create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/errs/double-diff-spec/final/Gopkg.lock create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/errs/double-diff-spec/final/Gopkg.toml create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/errs/double-diff-spec/initial/main.go create mode 100644 cmd/dep/testdata/harness_tests/ensure/add/errs/double-diff-spec/testcase.json diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index cd86107d88..fae67d36e9 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -480,7 +480,6 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm instr.ephReq[path] = true instr.typ |= isInManifest - //p.Manifest.Required = append(p.Manifest.Required, path) } else if inImports { if !someConstraint { if exmap[path] { @@ -539,8 +538,7 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm } solution, err := solver.Solve() if err != nil { - // TODO(sdboyer) detect if the failure was specifically about some of - // the -add arguments + // TODO(sdboyer) detect if the failure was specifically about some of the -add arguments handleAllTheFailuresOfTheWorld(err) return errors.Wrap(err, "ensure Solve()") } diff --git a/cmd/dep/testdata/harness_tests/ensure/add/all-new-double-spec/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/all-new-double-spec/final/Gopkg.lock new file mode 100644 index 0000000000..eddb25596a --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/all-new-double-spec/final/Gopkg.lock @@ -0,0 +1,21 @@ +# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. + + +[[projects]] + name = "github.com/sdboyer/deptest" + packages = ["."] + revision = "3f4c3bea144e112a69bbe5d8d01c1b09a544253f" + version = "v0.8.1" + +[[projects]] + branch = "master" + name = "github.com/sdboyer/deptesttres" + packages = ["."] + revision = "54aaeb0023e1f3dcf5f98f31dd8c565457945a12" + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + inputs-digest = "645b5b52e1bfb9e3db1cefde758485e009edfe5bad611b490582d94467f9c1b0" + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/add/all-new-double-spec/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/all-new-double-spec/final/Gopkg.toml new file mode 100644 index 0000000000..7b51259127 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/all-new-double-spec/final/Gopkg.toml @@ -0,0 +1,8 @@ + +[[constraint]] + branch = "master" + name = "github.com/sdboyer/deptesttres" + +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "0.8.1" diff --git a/cmd/dep/testdata/harness_tests/ensure/add/all-new-double-spec/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/add/all-new-double-spec/initial/main.go new file mode 100644 index 0000000000..8049e4ec2c --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/all-new-double-spec/initial/main.go @@ -0,0 +1,13 @@ +// Copyright 2017 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/deptesttres" +) + +func main() { + type a deptesttres.Bar +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/all-new-double-spec/testcase.json b/cmd/dep/testdata/harness_tests/ensure/add/all-new-double-spec/testcase.json new file mode 100644 index 0000000000..182b683c41 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/all-new-double-spec/testcase.json @@ -0,0 +1,10 @@ +{ + "commands": [ + ["init", "-no-examples"], + ["ensure", "-add", "github.com/sdboyer/deptest", "github.com/sdboyer/deptest@v0.8.1"] + ], + "vendor-final": [ + "github.com/sdboyer/deptest", + "github.com/sdboyer/deptesttres" + ] +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/all-new-double/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/all-new-double/final/Gopkg.lock new file mode 100644 index 0000000000..d2b0ea3287 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/all-new-double/final/Gopkg.lock @@ -0,0 +1,21 @@ +# 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" + +[[projects]] + branch = "master" + name = "github.com/sdboyer/deptesttres" + packages = [".","subp"] + revision = "54aaeb0023e1f3dcf5f98f31dd8c565457945a12" + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + inputs-digest = "432bc141db9511df4e1b5754c6c4d8cf4dd8b4f8d5a13fd7d189c17c14e000b7" + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/add/all-new-double/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/all-new-double/final/Gopkg.toml new file mode 100644 index 0000000000..e242e02114 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/all-new-double/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/add/all-new-double/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/add/all-new-double/initial/main.go new file mode 100644 index 0000000000..84f99b6894 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/all-new-double/initial/main.go @@ -0,0 +1,13 @@ +// Copyright 2017 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() { + type a deptest.Bar +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/all-new-double/testcase.json b/cmd/dep/testdata/harness_tests/ensure/add/all-new-double/testcase.json new file mode 100644 index 0000000000..2e5161d01e --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/all-new-double/testcase.json @@ -0,0 +1,10 @@ +{ + "commands": [ + ["init", "-no-examples"], + ["ensure", "-add", "github.com/sdboyer/deptesttres", "github.com/sdboyer/deptesttres/subp"] + ], + "vendor-final": [ + "github.com/sdboyer/deptest", + "github.com/sdboyer/deptesttres" + ] +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/all-new-spec/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/all-new-spec/final/Gopkg.lock new file mode 100644 index 0000000000..eddb25596a --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/all-new-spec/final/Gopkg.lock @@ -0,0 +1,21 @@ +# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. + + +[[projects]] + name = "github.com/sdboyer/deptest" + packages = ["."] + revision = "3f4c3bea144e112a69bbe5d8d01c1b09a544253f" + version = "v0.8.1" + +[[projects]] + branch = "master" + name = "github.com/sdboyer/deptesttres" + packages = ["."] + revision = "54aaeb0023e1f3dcf5f98f31dd8c565457945a12" + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + inputs-digest = "645b5b52e1bfb9e3db1cefde758485e009edfe5bad611b490582d94467f9c1b0" + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/add/all-new-spec/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/all-new-spec/final/Gopkg.toml new file mode 100644 index 0000000000..7b51259127 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/all-new-spec/final/Gopkg.toml @@ -0,0 +1,8 @@ + +[[constraint]] + branch = "master" + name = "github.com/sdboyer/deptesttres" + +[[constraint]] + name = "github.com/sdboyer/deptest" + version = "0.8.1" diff --git a/cmd/dep/testdata/harness_tests/ensure/add/all-new-spec/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/add/all-new-spec/initial/main.go new file mode 100644 index 0000000000..8049e4ec2c --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/all-new-spec/initial/main.go @@ -0,0 +1,13 @@ +// Copyright 2017 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/deptesttres" +) + +func main() { + type a deptesttres.Bar +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/all-new-spec/testcase.json b/cmd/dep/testdata/harness_tests/ensure/add/all-new-spec/testcase.json new file mode 100644 index 0000000000..9f6fa3f3f1 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/all-new-spec/testcase.json @@ -0,0 +1,10 @@ +{ + "commands": [ + ["init", "-no-examples"], + ["ensure", "-add", "github.com/sdboyer/deptest@v0.8.1"] + ], + "vendor-final": [ + "github.com/sdboyer/deptest", + "github.com/sdboyer/deptesttres" + ] +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/all-new/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/all-new/final/Gopkg.lock new file mode 100644 index 0000000000..5531a3e128 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/all-new/final/Gopkg.lock @@ -0,0 +1,21 @@ +# 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" + +[[projects]] + branch = "master" + name = "github.com/sdboyer/deptesttres" + packages = ["."] + revision = "54aaeb0023e1f3dcf5f98f31dd8c565457945a12" + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + inputs-digest = "8f0b74fd1169808bd0e31dd7ad6c601c7b8f7ef25eec9e8a45e72b8a384ebb5c" + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/add/all-new/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/all-new/final/Gopkg.toml new file mode 100644 index 0000000000..bbc8cc1688 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/all-new/final/Gopkg.toml @@ -0,0 +1,4 @@ + +[[constraint]] + branch = "master" + name = "github.com/sdboyer/deptesttres" diff --git a/cmd/dep/testdata/harness_tests/ensure/add/all-new/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/add/all-new/initial/main.go new file mode 100644 index 0000000000..8049e4ec2c --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/all-new/initial/main.go @@ -0,0 +1,13 @@ +// Copyright 2017 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/deptesttres" +) + +func main() { + type a deptesttres.Bar +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/all-new/testcase.json b/cmd/dep/testdata/harness_tests/ensure/add/all-new/testcase.json new file mode 100644 index 0000000000..3a8d221f93 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/all-new/testcase.json @@ -0,0 +1,10 @@ +{ + "commands": [ + ["init", "-no-examples"], + ["ensure", "-add", "github.com/sdboyer/deptest"] + ], + "vendor-final": [ + "github.com/sdboyer/deptest", + "github.com/sdboyer/deptesttres" + ] +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/errs/double-diff-spec/final/Gopkg.lock b/cmd/dep/testdata/harness_tests/ensure/add/errs/double-diff-spec/final/Gopkg.lock new file mode 100644 index 0000000000..66ef021c68 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/errs/double-diff-spec/final/Gopkg.lock @@ -0,0 +1,15 @@ +# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. + + +[[projects]] + branch = "master" + name = "github.com/sdboyer/deptesttres" + packages = ["."] + revision = "54aaeb0023e1f3dcf5f98f31dd8c565457945a12" + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + inputs-digest = "342afd8c8a616d084eb7b67bf3a891710eca3ce5abc3cf60af0dae4ccfdcd001" + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/cmd/dep/testdata/harness_tests/ensure/add/errs/double-diff-spec/final/Gopkg.toml b/cmd/dep/testdata/harness_tests/ensure/add/errs/double-diff-spec/final/Gopkg.toml new file mode 100644 index 0000000000..bbc8cc1688 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/errs/double-diff-spec/final/Gopkg.toml @@ -0,0 +1,4 @@ + +[[constraint]] + branch = "master" + name = "github.com/sdboyer/deptesttres" diff --git a/cmd/dep/testdata/harness_tests/ensure/add/errs/double-diff-spec/initial/main.go b/cmd/dep/testdata/harness_tests/ensure/add/errs/double-diff-spec/initial/main.go new file mode 100644 index 0000000000..8049e4ec2c --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/errs/double-diff-spec/initial/main.go @@ -0,0 +1,13 @@ +// Copyright 2017 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/deptesttres" +) + +func main() { + type a deptesttres.Bar +} diff --git a/cmd/dep/testdata/harness_tests/ensure/add/errs/double-diff-spec/testcase.json b/cmd/dep/testdata/harness_tests/ensure/add/errs/double-diff-spec/testcase.json new file mode 100644 index 0000000000..52cb46b132 --- /dev/null +++ b/cmd/dep/testdata/harness_tests/ensure/add/errs/double-diff-spec/testcase.json @@ -0,0 +1,10 @@ +{ + "commands": [ + ["init", "-no-examples"], + ["ensure", "-add", "github.com/sdboyer/deptest@0.8.1", "github.com/sdboyer/deptest@1.0.0"] + ], + "vendor-final": [ + "github.com/sdboyer/deptesttres" + ], + "error-expected": "can only specify rules once per project being added; rules were given at least twice for github.com/sdboyer/deptest" +} diff --git a/internal/gps/source_manager_test.go b/internal/gps/source_manager_test.go index 2025345fbe..631c5f4450 100644 --- a/internal/gps/source_manager_test.go +++ b/internal/gps/source_manager_test.go @@ -81,43 +81,3 @@ func TestSourceManager_InferConstraint_InvalidInput(t *testing.T) { } } } - -func TestInvalidEnsureFlagCombinations(t *testing.T) { - ec := &ensureCommand{ - update: true, - add: true, - } - - if err := ec.validateFlags(); err == nil { - t.Error("-add and -update together should fail validation") - } - - ec.vendorOnly, ec.add = true, false - if err := ec.validateFlags(); err == nil { - t.Error("-vendor-only with -update should fail validation") - } - - ec.add, ec.update = true, false - if err := ec.validateFlags(); err == nil { - t.Error("-vendor-only with -add should fail validation") - } - - ec.noVendor, ec.add = true, false - if err := ec.validateFlags(); err == nil { - t.Error("-vendor-only with -no-vendor should fail validation") - } - ec.noVendor = false - - // Also verify that the plain ensure path takes no args. This is a shady - // test, as lots of other things COULD return errors, and we don't check - // anything other than the error being non-nil. For now, it works well - // because a panic will quickly result if the initial arg length validation - // checks are incorrectly handled. - if err := ec.runDefault(nil, []string{"foo"}, nil, nil, gps.SolveParameters{}); err == nil { - t.Errorf("no args to plain ensure with -vendor-only") - } - ec.vendorOnly = false - if err := ec.runDefault(nil, []string{"foo"}, nil, nil, gps.SolveParameters{}); err == nil { - t.Errorf("no args to plain ensure") - } -} From 6af7093f9e703c507fc40516ef1e83ed9c971929 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Tue, 1 Aug 2017 00:27:00 -0400 Subject: [PATCH 30/34] Add -dry-run to usage output --- cmd/dep/ensure.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index fae67d36e9..be0797cc99 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -103,7 +103,7 @@ dep ensure -override github.com/pkg/foo@^1.0.1 func (cmd *ensureCommand) Name() string { return "ensure" } func (cmd *ensureCommand) Args() string { - return "[-update | -add] [-no-vendor | -vendor-only] [...]" + return "[-update | -add] [-no-vendor | -vendor-only] [-dry-run] [...]" } func (cmd *ensureCommand) ShortHelp() string { return ensureShortHelp } func (cmd *ensureCommand) LongHelp() string { return ensureLongHelp } From 1cb2762ddeb5d8d8a62fae2b62442e7ecbbf7084 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Tue, 1 Aug 2017 22:18:32 -0400 Subject: [PATCH 31/34] Fix up dep ensure -examples to match new interface --- cmd/dep/ensure.go | 71 ++++++++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index be0797cc99..dde9d22afd 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -24,15 +24,7 @@ const ensureShortHelp = `Ensure a dependency is safely vendored in the project` const ensureLongHelp = ` Project spec: - [:alt source][@] - -Flags: - - -update: update all, or only the named, dependencies in Gopkg.lock - -add: add new dependencies - -no-vendor: update Gopkg.lock if needed, but do not update vendor/ - -vendor-only: populate vendor/ without updating Gopkg.lock - -dry-run: only report the changes that would be made + [:alt source URL][@] Ensure gets a project into a complete, reproducible, and likely compilable state: @@ -54,8 +46,9 @@ combination of flags that are passed. Examples: - dep ensure Populate vendor from existing manifest and lock - dep ensure github.com/pkg/foo@^1.0.1 Update a specific dependency to a specific version + dep ensure Populate vendor from existing Gopkg.toml and Gopkg.lock + dep ensure -add github.com/pkg/foo Introduce a named dependency at its newest version + dep ensure -add github.com/pkg/foo@^1.0.1 Introduce a named dependency with a particular constraint For more detailed usage examples, see dep ensure -examples. ` @@ -67,38 +60,52 @@ dep ensure specified there. Otherwise, use the most recent version that can satisfy the constraints in the manifest file. -dep ensure -update +dep ensure -vendor-only - Update all dependencies to the latest versions allowed by the manifest, - ignoring any versions specified in the lock file. Update the lock file with - any changes. + Write vendor/ from an exising Gopkg.lock file, without first verifying that + the lock is in sync with imports and Gopkg.toml. (This may be useful for + e.g. strategically layering a Docker images) -dep ensure -update github.com/pkg/foo github.com/pkg/bar +dep ensure -add github.com/pkg/foo github.com/pkg/foo/bar + + Introduce one or more dependencies, at their newest version, ensuring that + specific packages are present in Gopkg.lock and vendor/. Also, append a + corresponding constraint to Gopkg.toml. + + Note: packages introduced in this way will disappear on the next "dep + ensure" if an import statement is not added first. - Update a list of dependencies to the latest versions allowed by the manifest, - ignoring any versions specified in the lock file. Update the lock file with - any changes. +dep ensure -add github.com/pkg/foo/subpkg@1.0.0 bitbucket.org/pkg/bar/baz@master -dep ensure github.com/pkg/foo@^1.0.1 + Append version constraints to Gopkg.toml for one or more packages, if no + such rules already exist. - Constrain pkg/foo to the latest release matching >= 1.0.1, < 2.0.0, and - place that release in the vendor folder. If a constraint was previously set - in the manifest, this resets it. This form of constraint strikes a good - balance of safety and flexibility, and should be preferred for libraries. + If the named packages are not already imported, also ensure they are present + in Gopkg.lock and vendor/. As in the preceding example, packages introduced + in this way will disappear on the next "dep ensure" if an import statement + is not added first. -dep ensure github.com/pkg/foo@~1.0.1 +dep ensure -add github.com/pkg/foo:git.internal.com/alt/foo - Same as above, but choose any release matching 1.0.x, preferring latest. + Specify an alternate location to treat as the upstream source for a dependency. + +dep ensure -update github.com/pkg/foo github.com/pkg/bar + + Update a list of dependencies to the latest versions allowed by Gopkg.toml, + ignoring any versions recorded in Gopkg.lock. Write the results to + Gopkg.lock and vendor/. + +dep ensure -update -dep ensure github.com/pkg/foo:git.internal.com/alt/foo + Update all dependencies to the latest versions allowed by Gopkg.toml, + ignoring any versions recorded in Gopkg.lock. Update the lock file with any + changes. (NOTE: Not recommended. Updating one/some dependencies at a time is + preferred.) - Fetch the dependency from a different location. +dep ensure -update -no-vendor -dep ensure -override github.com/pkg/foo@^1.0.1 + As above, but only modify Gopkg.lock; leave vendor/ unchanged. - Forcefully and transitively override any constraint for this dependency. - Overrides are powerful, but harmful in the long term. They should be used as - a last resort, especially if your project may be imported by others. ` func (cmd *ensureCommand) Name() string { return "ensure" } From 42ef91dbac2616ab904004223cf67c5ba1ab1a26 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Wed, 2 Aug 2017 22:31:33 -0400 Subject: [PATCH 32/34] Add file for general ensure tests --- cmd/dep/ensure_test.go | 47 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 cmd/dep/ensure_test.go diff --git a/cmd/dep/ensure_test.go b/cmd/dep/ensure_test.go new file mode 100644 index 0000000000..4b4626d75d --- /dev/null +++ b/cmd/dep/ensure_test.go @@ -0,0 +1,47 @@ +package main + +import ( + "testing" + + "github.com/golang/dep/internal/gps" +) + +func TestInvalidEnsureFlagCombinations(t *testing.T) { + ec := &ensureCommand{ + update: true, + add: true, + } + + if err := ec.validateFlags(); err == nil { + t.Error("-add and -update together should fail validation") + } + + ec.vendorOnly, ec.add = true, false + if err := ec.validateFlags(); err == nil { + t.Error("-vendor-only with -update should fail validation") + } + + ec.add, ec.update = true, false + if err := ec.validateFlags(); err == nil { + t.Error("-vendor-only with -add should fail validation") + } + + ec.noVendor, ec.add = true, false + if err := ec.validateFlags(); err == nil { + t.Error("-vendor-only with -no-vendor should fail validation") + } + ec.noVendor = false + + // Also verify that the plain ensure path takes no args. This is a shady + // test, as lots of other things COULD return errors, and we don't check + // anything other than the error being non-nil. For now, it works well + // because a panic will quickly result if the initial arg length validation + // checks are incorrectly handled. + if err := ec.runDefault(nil, []string{"foo"}, nil, nil, gps.SolveParameters{}); err == nil { + t.Errorf("no args to plain ensure with -vendor-only") + } + ec.vendorOnly = false + if err := ec.runDefault(nil, []string{"foo"}, nil, nil, gps.SolveParameters{}); err == nil { + t.Errorf("no args to plain ensure") + } +} From 7d21ee7b4f4e7f95de1a44ac6c3ea8c21c5be477 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Thu, 3 Aug 2017 00:09:22 -0400 Subject: [PATCH 33/34] Add info msg ensure -v when first step is in sync --- cmd/dep/ensure.go | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index dde9d22afd..85d762648f 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -239,6 +239,10 @@ func (cmd *ensureCommand) runDefault(ctx *dep.Ctx, args []string, p *dep.Project return nil } + if ctx.Verbose { + ctx.Out.Printf("%s was already in sync with imports and %s, recreating vendor/ directory", dep.LockName, dep.ManifestName) + } + // TODO(sdboyer) The desired behavior at this point is to determine // whether it's necessary to write out vendor, or if it's already // consistent with the lock. However, we haven't yet determined what @@ -385,12 +389,17 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm return errors.Errorf("%s and %s are out of sync. Run a plain dep ensure to resync them before attempting to -add", dep.ManifestName, dep.LockName) } - rm, errmap := params.RootPackageTree.ToReachMap(true, true, false, p.Manifest.IgnoredPackages()) + rm, _ := params.RootPackageTree.ToReachMap(true, true, false, p.Manifest.IgnoredPackages()) + + // TODO(sdboyer) re-enable this once we ToReachMap() intelligently filters out normally-excluded (_*, .*), dirs from errmap + //rm, errmap := params.RootPackageTree.ToReachMap(true, true, false, p.Manifest.IgnoredPackages()) // Having some problematic internal packages isn't cause for termination, // but the user needs to be warned. - for fail := range errmap { - ctx.Err.Printf("Warning: %s", fail) - } + //for fail, err := range errmap { + //if _, is := err.Err.(*build.NoGoError); !is { + //ctx.Err.Printf("Warning: %s, %s", fail, err) + //} + //} // Compile unique sets of 1) all external packages imported or required, and // 2) the project roots under which they fall. From b8f7027092133c37c4503eb16a70660c3e571273 Mon Sep 17 00:00:00 2001 From: sam boyer Date: Thu, 3 Aug 2017 15:16:54 -0400 Subject: [PATCH 34/34] Fix staticcheck errors, license --- cmd/dep/ensure.go | 13 ++++++++----- cmd/dep/ensure_test.go | 4 ++++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/cmd/dep/ensure.go b/cmd/dep/ensure.go index 85d762648f..60d9c7659e 100644 --- a/cmd/dep/ensure.go +++ b/cmd/dep/ensure.go @@ -574,7 +574,7 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm Source: instr.id.Source, Constraint: instr.constraint, } - } else { + //} else { // TODO(sdboyer) hoist a constraint into the manifest from the lock } } @@ -586,12 +586,15 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm sort.Strings(reqlist) sw, err := dep.NewSafeWriter(nil, p.Lock, dep.LockFromSolution(solution), dep.VendorOnChanged) + if err != nil { + return err + } + if cmd.dryRun { return sw.PrintPreparedActions(ctx.Out) } - err = errors.Wrap(sw.Write(p.AbsRoot, sm, true), "grouped write of manifest, lock and vendor") - if err != nil { + if err := errors.Wrap(sw.Write(p.AbsRoot, sm, true), "grouped write of manifest, lock and vendor"); err != nil { return err } @@ -601,8 +604,8 @@ func (cmd *ensureCommand) runAdd(ctx *dep.Ctx, args []string, p *dep.Project, sm return errors.Wrapf(err, "opening %s failed", dep.ManifestName) } - _, err = f.Write(extra) - if err != nil { + if _, err := f.Write(extra); err != nil { + f.Close() return errors.Wrapf(err, "writing to %s failed", dep.ManifestName) } diff --git a/cmd/dep/ensure_test.go b/cmd/dep/ensure_test.go index 4b4626d75d..ca85ecc684 100644 --- a/cmd/dep/ensure_test.go +++ b/cmd/dep/ensure_test.go @@ -1,3 +1,7 @@ +// 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 (