Skip to content

Commit 722491f

Browse files
authored
Merge pull request #41 from grafana/38-k6-dependency-is-not-detected-correctly-if-the-k6-module-is-not-imported
fix k6 dependency detection
2 parents 2d8d0e2 + b82c7e3 commit 722491f

File tree

3 files changed

+32
-2
lines changed

3 files changed

+32
-2
lines changed

dependencies.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111

1212
//nolint:gochecknoglobals
1313
var (
14-
srcName = `(?P<name>k6|k6/x/[/0-9a-zA-Z_-]+|(@[a-zA-Z0-9-_]+/)?xk6-([a-zA-Z0-9-_]+)((/[a-zA-Z0-9-_]+)*))`
14+
srcName = `(?P<name>k6|k6/[^/]{2}.*|k6/[^x]/.*|k6/x/[/0-9a-zA-Z_-]+|(@[a-zA-Z0-9-_]+/)?xk6-([a-zA-Z0-9-_]+)((/[a-zA-Z0-9-_]+)*))` //nolint:lll
1515
srcConstraint = `[vxX*|,&\^0-9.+-><=, ~]+`
1616

1717
reName = regexp.MustCompile(srcName)
@@ -275,6 +275,11 @@ func (deps *Dependencies) UnmarshalJS(text []byte) error {
275275
}
276276

277277
if len(extension) != 0 {
278+
// no negative lookahead regex support....
279+
if strings.HasPrefix(extension, "k6/") && !strings.HasPrefix(extension, "k6/x/") {
280+
extension = k6
281+
}
282+
278283
_ = deps.update(&Dependency{Name: extension}) // no chance for conflicting
279284
}
280285
}

dependencies_test.go

+20
Original file line numberDiff line numberDiff line change
@@ -211,3 +211,23 @@ export default function () {
211211
require.Equal(t, "k6/x/faker*", deps["k6/x/faker"].String())
212212
require.Equal(t, "k6/x/sql*", deps["k6/x/sql"].String())
213213
}
214+
215+
func Test_Dependencies_UnmarshalJS_k6_path(t *testing.T) {
216+
t.Parallel()
217+
218+
deps := make(k6deps.Dependencies)
219+
220+
err := deps.UnmarshalJS([]byte(`
221+
import Counter from 'k6/metrics';
222+
223+
const count = new Conter("foo")
224+
225+
export default function () {
226+
count.add(1)
227+
}
228+
`))
229+
require.NoError(t, err)
230+
231+
require.Len(t, deps, 1)
232+
require.Equal(t, "k6*", deps["k6"].String())
233+
}

dependency.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,12 @@ import (
1010
"github.com/Masterminds/semver/v3"
1111
)
1212

13-
const defaultConstraintsString = "*"
13+
const (
14+
// ConstraintsAny is a wildcard constraint that any version matches.
15+
ConstraintsAny = "*"
16+
17+
defaultConstraintsString = ConstraintsAny
18+
)
1419

1520
//nolint:gochecknoglobals
1621
var (

0 commit comments

Comments
 (0)