Skip to content

Commit 617faf7

Browse files
committed
Fix loading files with spaces - fixes #5437
1 parent 67601ca commit 617faf7

File tree

2 files changed

+37
-3
lines changed

2 files changed

+37
-3
lines changed

internal/cmd/test_load.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -243,20 +243,25 @@ func analyseUseContraints(imports []string, fileSystems map[string]fsext.Fs, dep
243243
}
244244
u, err := url.Parse(imported)
245245
if err != nil {
246-
panic(err)
246+
return err
247247
}
248248
// We always have URLs here with scheme and everything
249249
_, path, _ := strings.Cut(imported, "://")
250250
if u.Scheme == "https" {
251251
path = "/" + path
252252
}
253+
path, err = url.PathUnescape(filepath.FromSlash(path))
254+
if err != nil {
255+
return err
256+
}
257+
253258
data, err := fsext.ReadFile(fileSystems[u.Scheme], path)
254259
if err != nil {
255-
panic(err)
260+
return err
256261
}
257262
err = processUseDirectives(imported, data, deps)
258263
if err != nil {
259-
panic(err)
264+
return err
260265
}
261266
}
262267
return nil

internal/cmd/tests/cmd_run_test.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3170,3 +3170,32 @@ func TestMachineReadableSummary(t *testing.T) {
31703170
assertSummaryExport(t, string(summaryExport))
31713171
})
31723172
}
3173+
3174+
func TestSpaceInPath(t *testing.T) {
3175+
t.Parallel()
3176+
depScript := `
3177+
export default function() {
3178+
let p = 42;
3179+
return p;
3180+
}
3181+
`
3182+
mainScript := `
3183+
import bar from "./foo bar.js";
3184+
let s = "something";
3185+
export default function() {
3186+
console.log(s, bar());
3187+
};
3188+
`
3189+
3190+
ts := NewGlobalTestState(t)
3191+
require.NoError(t, fsext.WriteFile(ts.FS, filepath.Join(ts.Cwd, "test me.js"), []byte(mainScript), 0o644))
3192+
require.NoError(t, fsext.WriteFile(ts.FS, filepath.Join(ts.Cwd, "foo bar.js"), []byte(depScript), 0o644))
3193+
3194+
ts.CmdArgs = []string{"k6", "run", "--quiet", "test me.js"}
3195+
3196+
cmd.ExecuteWithGlobalState(ts.GlobalState)
3197+
3198+
stderr := ts.Stderr.String()
3199+
t.Log(stderr)
3200+
assert.Contains(t, stderr, `something 42`)
3201+
}

0 commit comments

Comments
 (0)