Skip to content

Commit a197e0f

Browse files
committed
test: fix long windows path tests
1 parent b9f1c67 commit a197e0f

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

pnpm-workspace.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,6 @@ packages:
22
- 'npm'
33
- 'napi'
44
- 'fixtures/pnpm'
5+
6+
# For `windows_symlinked_longfilename` in tests/resolve_test.rs
7+
virtualStoreDirMaxLength: 1024

tests/resolve_test.rs

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,15 @@ fn chinese() {
1818
}
1919

2020
#[test]
21-
#[ignore = "failed on windows"]
2221
fn styled_components() {
2322
let dir = dir();
2423
let path = dir.join("fixtures/pnpm");
25-
let module_path = dir.join("node_modules/.pnpm/[email protected][email protected][email protected][email protected]/node_modules/styled-components");
24+
let module_path = dir
25+
.join("node_modules")
26+
.join(".pnpm")
27+
28+
.join("node_modules")
29+
.join("styled-components");
2630
let specifier = "styled-components";
2731

2832
// cjs
@@ -31,7 +35,7 @@ fn styled_components() {
3135
let resolution = Resolver::new(options).resolve(&path, specifier);
3236
assert_eq!(
3337
resolution.map(oxc_resolver::Resolution::into_path_buf),
34-
Ok(module_path.join("dist/styled-components.browser.cjs.js"))
38+
Ok(module_path.join("dist").join("styled-components.browser.cjs.js"))
3539
);
3640

3741
// esm
@@ -43,7 +47,7 @@ fn styled_components() {
4347
let resolution = Resolver::new(options).resolve(&path, specifier);
4448
assert_eq!(
4549
resolution.map(oxc_resolver::Resolution::into_path_buf),
46-
Ok(module_path.join("dist/styled-components.browser.esm.js"))
50+
Ok(module_path.join("dist").join("styled-components.browser.esm.js"))
4751
);
4852
}
4953

@@ -208,12 +212,24 @@ fn nested_symlinks() {
208212
}
209213

210214
#[test]
211-
#[ignore = "failed on windows"]
212215
fn windows_symlinked_longfilename() {
213216
let dir = dir();
214217
let path = dir.join("fixtures/pnpm");
215-
let module_path = dir.join("node_modules/.pnpm/@oxc-resolver+test-longfilename-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa_7a8cf2210bc70feb075991a339017f04/node_modules/@oxc-resolver/test-longfilename-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/index.js");
216-
217-
let resolution = Resolver::new(ResolveOptions::default()).resolve(&path, "@oxc-resolver/test-longfilename-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa").map(|r| r.full_path());
218+
let module_path = dir.join("node_modules")
219+
.join(".pnpm")
220+
.join("@oxc-resolver+test-longfilename-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@file+fixtures+pnpm+longfilename")
221+
.join("node_modules")
222+
.join("@oxc-resolver")
223+
.join("test-longfilename-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
224+
.join("index.js");
225+
226+
// Note: dunce::canonicalize seems to only trim \\?\ when the path is shorter than 260 chars.
227+
// Our implementation should mitigate that.
228+
// <https://gitlab.com/kornelski/dunce/-/blob/1ee29a83526c9f4c3618e1335f0454c878a54dcf/src/lib.rs#L176-180>
229+
assert!(module_path.as_os_str().len() > 260, "Windows path must be super long.");
230+
231+
let specifier = "@oxc-resolver/test-longfilename-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
232+
let resolution =
233+
Resolver::new(ResolveOptions::default()).resolve(&path, specifier).map(|r| r.full_path());
218234
assert_eq!(resolution, Ok(module_path));
219235
}

0 commit comments

Comments
 (0)