Skip to content
This repository was archived by the owner on Sep 9, 2020. It is now read-only.

Commit a919470

Browse files
authored
Merge pull request #525 from jmank88/in_process_tests
adding in-process tests
2 parents 4c5e459 + 3b0360b commit a919470

21 files changed

+430
-269
lines changed

cmd/dep/ensure.go

+8-10
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,13 @@ import (
1111
"fmt"
1212
"go/build"
1313
"log"
14-
"os"
1514
"path/filepath"
1615
"strconv"
1716
"strings"
1817

1918
"github.com/golang/dep"
2019
"github.com/golang/dep/gps"
2120
"github.com/golang/dep/gps/pkgtree"
22-
"github.com/golang/dep/internal"
2321
"github.com/pkg/errors"
2422
)
2523

@@ -103,9 +101,9 @@ type ensureCommand struct {
103101
overrides stringSlice
104102
}
105103

106-
func (cmd *ensureCommand) Run(ctx *dep.Ctx, args []string) error {
104+
func (cmd *ensureCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) error {
107105
if cmd.examples {
108-
internal.Logln(strings.TrimSpace(ensureExamples))
106+
loggers.Err.Println(strings.TrimSpace(ensureExamples))
109107
return nil
110108
}
111109

@@ -122,8 +120,8 @@ func (cmd *ensureCommand) Run(ctx *dep.Ctx, args []string) error {
122120
defer sm.Release()
123121

124122
params := p.MakeParams()
125-
if *verbose {
126-
params.TraceLogger = log.New(os.Stderr, "", 0)
123+
if loggers.Verbose {
124+
params.TraceLogger = loggers.Err
127125
}
128126
params.RootPackageTree, err = pkgtree.ListPackages(p.AbsRoot, string(p.ImportRoot))
129127
if err != nil {
@@ -137,7 +135,7 @@ func (cmd *ensureCommand) Run(ctx *dep.Ctx, args []string) error {
137135
if cmd.update {
138136
applyUpdateArgs(args, &params)
139137
} else {
140-
err := applyEnsureArgs(args, cmd.overrides, p, sm, &params)
138+
err := applyEnsureArgs(loggers.Err, args, cmd.overrides, p, sm, &params)
141139
if err != nil {
142140
return err
143141
}
@@ -170,7 +168,7 @@ func (cmd *ensureCommand) Run(ctx *dep.Ctx, args []string) error {
170168
return err
171169
}
172170
if cmd.dryRun {
173-
return sw.PrintPreparedActions()
171+
return sw.PrintPreparedActions(loggers.Out)
174172
}
175173

176174
return errors.Wrap(sw.Write(p.AbsRoot, sm, true), "grouped write of manifest, lock and vendor")
@@ -189,7 +187,7 @@ func applyUpdateArgs(args []string, params *gps.SolveParameters) {
189187
}
190188
}
191189

192-
func applyEnsureArgs(args []string, overrides stringSlice, p *dep.Project, sm gps.SourceManager, params *gps.SolveParameters) error {
190+
func applyEnsureArgs(logger *log.Logger, args []string, overrides stringSlice, p *dep.Project, sm gps.SourceManager, params *gps.SolveParameters) error {
193191
var errs []error
194192
for _, arg := range args {
195193
pc, err := getProjectConstraint(arg, sm)
@@ -207,7 +205,7 @@ func applyEnsureArgs(args []string, overrides stringSlice, p *dep.Project, sm gp
207205
// TODO(sdboyer): for this case - or just in general - do we want to
208206
// add project args to the requires list temporarily for this run?
209207
if _, has := p.Manifest.Dependencies[pc.Ident.ProjectRoot]; !has {
210-
internal.Logf("No constraint or alternate source specified for %q, omitting from manifest", pc.Ident.ProjectRoot)
208+
logger.Printf("dep: No constraint or alternate source specified for %q, omitting from manifest\n", pc.Ident.ProjectRoot)
211209
}
212210
// If it's already in the manifest, no need to log
213211
continue

cmd/dep/hash_in.go

+2-4
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package main
66

77
import (
88
"flag"
9-
"fmt"
109

1110
"github.com/golang/dep"
1211
"github.com/golang/dep/gps"
@@ -24,7 +23,7 @@ func (cmd *hashinCommand) Register(fs *flag.FlagSet) {}
2423

2524
type hashinCommand struct{}
2625

27-
func (hashinCommand) Run(ctx *dep.Ctx, args []string) error {
26+
func (hashinCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) error {
2827
p, err := ctx.LoadProject("")
2928
if err != nil {
3029
return err
@@ -52,7 +51,6 @@ func (hashinCommand) Run(ctx *dep.Ctx, args []string) error {
5251
if err != nil {
5352
return errors.Wrap(err, "prepare solver")
5453
}
55-
56-
fmt.Println(gps.HashingInputsAsString(s))
54+
loggers.Out.Println(gps.HashingInputsAsString(s))
5755
return nil
5856
}

cmd/dep/init.go

+42-22
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@ package main
66

77
import (
88
"flag"
9-
"fmt"
10-
"log"
119
"os"
1210
"path/filepath"
1311
"strings"
12+
"sync"
1413

1514
"github.com/golang/dep"
1615
"github.com/golang/dep/gps"
@@ -59,18 +58,14 @@ func trimPathPrefix(p1, p2 string) string {
5958
return p1
6059
}
6160

62-
func (cmd *initCommand) Run(ctx *dep.Ctx, args []string) error {
61+
func (cmd *initCommand) Run(ctx *dep.Ctx, loggers *Loggers, args []string) error {
6362
if len(args) > 1 {
6463
return errors.Errorf("too many args (%d)", len(args))
6564
}
6665

6766
var root string
6867
if len(args) <= 0 {
69-
wd, err := os.Getwd()
70-
if err != nil {
71-
return err
72-
}
73-
root = wd
68+
root = ctx.WorkingDir
7469
} else {
7570
root = args[0]
7671
}
@@ -99,20 +94,24 @@ func (cmd *initCommand) Run(ctx *dep.Ctx, args []string) error {
9994
if err != nil {
10095
return errors.Wrap(err, "determineProjectRoot")
10196
}
102-
internal.Vlogf("Finding dependencies for %q...", cpr)
97+
if loggers.Verbose {
98+
loggers.Err.Printf("dep: Finding dependencies for %q...\n", cpr)
99+
}
103100
pkgT, err := pkgtree.ListPackages(root, cpr)
104101
if err != nil {
105102
return errors.Wrap(err, "gps.ListPackages")
106103
}
107-
internal.Vlogf("Found %d dependencies.", len(pkgT.Packages))
104+
if loggers.Verbose {
105+
loggers.Err.Printf("dep: Found %d dependencies.\n", len(pkgT.Packages))
106+
}
108107
sm, err := ctx.SourceManager()
109108
if err != nil {
110109
return errors.Wrap(err, "getSourceManager")
111110
}
112111
sm.UseDefaultSignalHandling()
113112
defer sm.Release()
114113

115-
pd, err := getProjectData(ctx, pkgT, cpr, sm)
114+
pd, err := getProjectData(ctx, loggers, pkgT, cpr, sm)
116115
if err != nil {
117116
return err
118117
}
@@ -145,7 +144,9 @@ func (cmd *initCommand) Run(ctx *dep.Ctx, args []string) error {
145144
}
146145

147146
// Run solver with project versions found on disk
148-
internal.Vlogf("Solving...")
147+
if loggers.Verbose {
148+
loggers.Err.Println("dep: Solving...")
149+
}
149150
params := gps.SolveParameters{
150151
RootDir: root,
151152
RootPackageTree: pkgT,
@@ -154,9 +155,10 @@ func (cmd *initCommand) Run(ctx *dep.Ctx, args []string) error {
154155
ProjectAnalyzer: dep.Analyzer{},
155156
}
156157

157-
if *verbose {
158-
params.TraceLogger = log.New(os.Stderr, "", 0)
158+
if loggers.Verbose {
159+
params.TraceLogger = loggers.Err
159160
}
161+
160162
s, err := gps.Prepare(params, sm)
161163
if err != nil {
162164
return errors.Wrap(err, "prepare solver")
@@ -188,7 +190,9 @@ func (cmd *initCommand) Run(ctx *dep.Ctx, args []string) error {
188190

189191
l.Memo = s.HashInputs()
190192

191-
internal.Vlogf("Writing manifest and lock files.")
193+
if loggers.Verbose {
194+
loggers.Err.Println("dep: Writing manifest and lock files.")
195+
}
192196

193197
sw, err := dep.NewSafeWriter(m, nil, l, dep.VendorAlways)
194198
if err != nil {
@@ -273,27 +277,31 @@ type projectData struct {
273277
ondisk map[gps.ProjectRoot]gps.Version // projects that were found on disk
274278
}
275279

276-
func getProjectData(ctx *dep.Ctx, pkgT pkgtree.PackageTree, cpr string, sm gps.SourceManager) (projectData, error) {
280+
func getProjectData(ctx *dep.Ctx, loggers *Loggers, pkgT pkgtree.PackageTree, cpr string, sm gps.SourceManager) (projectData, error) {
277281
constraints := make(gps.ProjectConstraints)
278282
dependencies := make(map[gps.ProjectRoot][]string)
279283
packages := make(map[string]bool)
280284
notondisk := make(map[gps.ProjectRoot]bool)
281285
ondisk := make(map[gps.ProjectRoot]gps.Version)
282286

287+
var syncDepGroup sync.WaitGroup
283288
syncDep := func(pr gps.ProjectRoot, sm gps.SourceManager) {
284289
message := "Cached"
285290
if err := sm.SyncSourceFor(gps.ProjectIdentifier{ProjectRoot: pr}); err != nil {
286291
message = "Unable to cache"
287292
}
288-
fmt.Fprintf(os.Stderr, "%s %s\n", message, pr)
293+
loggers.Err.Printf("%s %s\n", message, pr)
294+
syncDepGroup.Done()
289295
}
290296

291297
rm, _ := pkgT.ToReachMap(true, true, false, nil)
292298
if len(rm) == 0 {
293299
return projectData{}, nil
294300
}
295301

296-
internal.Vlogf("Building dependency graph...")
302+
if loggers.Verbose {
303+
loggers.Err.Println("dep: Building dependency graph...")
304+
}
297305
// Exclude stdlib imports from the list returned from Flatten().
298306
const omitStdlib = false
299307
for _, ip := range rm.Flatten(omitStdlib) {
@@ -307,23 +315,30 @@ func getProjectData(ctx *dep.Ctx, pkgT pkgtree.PackageTree, cpr string, sm gps.S
307315
dependencies[pr] = append(dependencies[pr], ip)
308316
continue
309317
}
318+
syncDepGroup.Add(1)
310319
go syncDep(pr, sm)
311320

312-
internal.Vlogf("Found import of %q, analyzing...", ip)
321+
if loggers.Verbose {
322+
loggers.Err.Printf("dep: Found import of %q, analyzing...\n", ip)
323+
}
313324

314325
dependencies[pr] = []string{ip}
315326
v, err := ctx.VersionInWorkspace(pr)
316327
if err != nil {
317328
notondisk[pr] = true
318-
internal.Vlogf("Could not determine version for %q, omitting from generated manifest", pr)
329+
if loggers.Verbose {
330+
loggers.Err.Printf("dep: Could not determine version for %q, omitting from generated manifest\n", pr)
331+
}
319332
continue
320333
}
321334

322335
ondisk[pr] = v
323336
constraints[pr] = getProjectPropertiesFromVersion(v)
324337
}
325338

326-
internal.Vlogf("Analyzing transitive imports...")
339+
if loggers.Verbose {
340+
loggers.Err.Printf("dep: Analyzing transitive imports...\n")
341+
}
327342
// Explore the packages we've found for transitive deps, either
328343
// completing the lock or identifying (more) missing projects that we'll
329344
// need to ask gps to solve for us.
@@ -342,7 +357,9 @@ func getProjectData(ctx *dep.Ctx, pkgT pkgtree.PackageTree, cpr string, sm gps.S
342357
dft = func(pkg string) error {
343358
switch colors[pkg] {
344359
case white:
345-
internal.Vlogf("Analyzing %q...", pkg)
360+
if loggers.Verbose {
361+
loggers.Err.Printf("dep: Analyzing %q...\n", pkg)
362+
}
346363
colors[pkg] = grey
347364

348365
pr, err := sm.DeduceProjectRoot(pkg)
@@ -424,6 +441,7 @@ func getProjectData(ctx *dep.Ctx, pkgT pkgtree.PackageTree, cpr string, sm gps.S
424441
}
425442
} else {
426443
dependencies[pr] = []string{pkg}
444+
syncDepGroup.Add(1)
427445
go syncDep(pr, sm)
428446
}
429447

@@ -456,6 +474,8 @@ func getProjectData(ctx *dep.Ctx, pkgT pkgtree.PackageTree, cpr string, sm gps.S
456474
}
457475
}
458476

477+
syncDepGroup.Wait()
478+
459479
pd := projectData{
460480
constraints: constraints,
461481
dependencies: dependencies,

0 commit comments

Comments
 (0)