Skip to content

Commit 5407d65

Browse files
committed
Better debugging utility
1 parent 463284e commit 5407d65

File tree

4 files changed

+44
-25
lines changed

4 files changed

+44
-25
lines changed

debug.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
//
2+
// Copyright 2019 Cristian Maglie. All rights reserved.
3+
// Use of this source code is governed by a BSD-style
4+
// license that can be found in the LICENSE file.
5+
//
6+
7+
package semver
8+
9+
var debug = func(format string, a ...interface{}) {}

debug_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
//
2+
// Copyright 2019 Cristian Maglie. All rights reserved.
3+
// Use of this source code is governed by a BSD-style
4+
// license that can be found in the LICENSE file.
5+
//
6+
7+
package semver
8+
9+
import (
10+
"fmt"
11+
rtdebug "runtime/debug"
12+
"strings"
13+
)
14+
15+
func init() {
16+
debug = func(format string, a ...interface{}) {
17+
level := strings.Count(string(rtdebug.Stack()), "\n")
18+
for i := 0; i < level; i++ {
19+
fmt.Print(" ")
20+
}
21+
if a != nil {
22+
fmt.Printf(format, a...)
23+
fmt.Println()
24+
} else {
25+
fmt.Println(format)
26+
}
27+
}
28+
}

resolver.go

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,6 @@
66

77
package semver
88

9-
import (
10-
"fmt"
11-
)
12-
139
// Dependency represents a dependency, it must provide methods to return Name and Constraints
1410
type Dependency interface {
1511
GetName() string
@@ -54,20 +50,8 @@ func (ar *Archive) Resolve(release Release) []Release {
5450
return ar.resolve(solution, depsToProcess)
5551
}
5652

57-
// To be redefined in Tests to increase output
58-
var verbose = false
59-
6053
func (ar *Archive) resolve(solution map[string]Release, depsToProcess []Dependency) []Release {
61-
debug := func(msg string) {}
62-
if verbose {
63-
debug = func(msg string) {
64-
for i := 0; i < len(solution); i++ {
65-
fmt.Print(" ")
66-
}
67-
fmt.Println(msg)
68-
}
69-
}
70-
debug(fmt.Sprintf("deps to process: %s", depsToProcess))
54+
debug("deps to process: %s", depsToProcess)
7155
if len(depsToProcess) == 0 {
7256
debug("All dependencies have been resolved.")
7357
res := []Release{}
@@ -80,29 +64,29 @@ func (ar *Archive) resolve(solution map[string]Release, depsToProcess []Dependen
8064
// Pick the first dependency in the deps to process
8165
dep := depsToProcess[0]
8266
depName := dep.GetName()
83-
debug(fmt.Sprintf("Considering next dep: %s", dep))
67+
debug("Considering next dep: %s", dep)
8468

8569
// If a release is already picked in the solution check if it match the dep
8670
if existingRelease, has := solution[depName]; has {
8771
if match(existingRelease, dep) {
88-
debug(fmt.Sprintf("%s already in solution and matching", existingRelease))
72+
debug("%s already in solution and matching", existingRelease)
8973
return ar.resolve(solution, depsToProcess[1:])
9074
}
91-
debug(fmt.Sprintf("%s already in solution do not match... rollingback", existingRelease))
75+
debug("%s already in solution do not match... rollingback", existingRelease)
9276
return nil
9377
}
9478

9579
// Otherwise start backtracking the dependency
9680
releases := ar.Releases[dep.GetName()].FilterBy(dep)
97-
debug(fmt.Sprintf("releases matching criteria: %s", releases))
81+
debug("releases matching criteria: %s", releases)
9882
for _, release := range releases {
99-
debug(fmt.Sprintf("try with %s %s", release, release.GetDependencies()))
83+
debug("try with %s %s", release, release.GetDependencies())
10084
solution[depName] = release
10185
res := ar.resolve(solution, append(depsToProcess[1:], release.GetDependencies()...))
10286
if res != nil {
10387
return res
10488
}
105-
debug(fmt.Sprintf("%s did not work...", release))
89+
debug("%s did not work...", release)
10690
delete(solution, depName)
10791
}
10892
return nil

resolver_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,6 @@ func TestResolver(t *testing.T) {
103103
a111 := rel("A", "1.1.1", deps("B", "C=1.1.1"))
104104
a120 := rel("A", "1.2.0", deps("B=1.2.0", "C>2.0.0"))
105105

106-
verbose = true
107-
108106
r1 := arch.Resolve(a100)
109107
require.Len(t, r1, 3)
110108
require.Contains(t, r1, a100)

0 commit comments

Comments
 (0)