[INFO] fetching crate rspack_resolver 0.6.8... [INFO] linting rspack_resolver-0.6.8 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate rspack_resolver 0.6.8 into /workspace/builds/worker-4-tc1/source [INFO] started tweaking crates.io crate rspack_resolver 0.6.8 [INFO] removed 0 missing examples [INFO] finished tweaking crates.io crate rspack_resolver 0.6.8 [INFO] tweaked toml for crates.io crate rspack_resolver 0.6.8 written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate rspack_resolver 0.6.8 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate rspack_resolver 0.6.8 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded json-strip-comments v3.1.0 [INFO] [stderr] Downloaded codspeed-criterion-compat v4.3.0 [INFO] [stderr] Downloaded vfs v0.12.2 [INFO] [stderr] Downloaded normalize-path v0.2.1 [INFO] [stderr] Downloaded codspeed-criterion-compat-walltime v4.3.0 [INFO] [stderr] Downloaded pnp v0.12.8 [INFO] [stderr] Downloaded codspeed v4.3.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] abbf018e8cbc555d860f9dbf9eb6503a56e68fb12c63b970f0f921da174fa6d2 [INFO] running `Command { std: "docker" "start" "-a" "abbf018e8cbc555d860f9dbf9eb6503a56e68fb12c63b970f0f921da174fa6d2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "abbf018e8cbc555d860f9dbf9eb6503a56e68fb12c63b970f0f921da174fa6d2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "abbf018e8cbc555d860f9dbf9eb6503a56e68fb12c63b970f0f921da174fa6d2", kill_on_drop: false }` [INFO] [stdout] abbf018e8cbc555d860f9dbf9eb6503a56e68fb12c63b970f0f921da174fa6d2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] f5b3980b0c21b43bf81a93b1f7c3ee2a1a6bedd5d09205d9cac6985ba906e9b0 [INFO] running `Command { std: "docker" "start" "-a" "f5b3980b0c21b43bf81a93b1f7c3ee2a1a6bedd5d09205d9cac6985ba906e9b0", kill_on_drop: false }` [INFO] [stderr] Compiling zmij v1.0.19 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Checking futures-sink v0.3.31 [INFO] [stderr] Checking regex-automata v0.4.13 [INFO] [stderr] Compiling syn v2.0.108 [INFO] [stderr] Checking indexmap v2.13.0 [INFO] [stderr] Compiling nix v0.30.1 [INFO] [stderr] Compiling cc v1.2.55 [INFO] [stderr] Checking approx v0.5.1 [INFO] [stderr] Checking clap_builder v4.5.57 [INFO] [stderr] Checking colored v2.2.0 [INFO] [stderr] Checking float-cmp v0.10.0 [INFO] [stderr] Checking nibble_vec v0.1.0 [INFO] [stderr] Checking getrandom v0.2.17 [INFO] [stderr] Checking endian-type v0.2.0 [INFO] [stderr] Checking glob v0.3.3 [INFO] [stderr] Checking futures-channel v0.3.31 [INFO] [stderr] Checking flate2 v1.1.5 [INFO] [stderr] Checking parking_lot_core v0.9.12 [INFO] [stderr] Checking radix_trie v0.3.0 [INFO] [stderr] Checking is-terminal v0.4.17 [INFO] [stderr] Checking concurrent_lru v0.2.0 [INFO] [stderr] Checking statrs v0.18.0 [INFO] [stderr] Checking pathdiff v0.2.3 [INFO] [stderr] Compiling codspeed-criterion-compat v4.3.0 [INFO] [stderr] Checking nodejs-built-in-modules v1.0.0 [INFO] [stderr] Checking simdutf8 v0.1.5 [INFO] [stderr] Checking filetime v0.2.26 [INFO] [stderr] Checking json-strip-comments v3.1.0 [INFO] [stderr] Checking dashmap v6.1.0 [INFO] [stderr] Checking dunce v1.0.5 [INFO] [stderr] Checking normalize-path v0.2.1 [INFO] [stderr] Checking vfs v0.12.2 [INFO] [stderr] Compiling codspeed v4.3.0 [INFO] [stderr] Checking clap v4.5.57 [INFO] [stderr] Checking fancy-regex v0.17.0 [INFO] [stderr] Checking regex v1.12.3 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling zerocopy-derive v0.8.27 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling ref-cast-impl v1.0.25 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Checking ref-cast v1.0.25 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Checking tokio v1.49.0 [INFO] [stderr] Checking zerocopy v0.8.27 [INFO] [stderr] Checking thiserror v2.0.18 [INFO] [stderr] Checking tracing v0.1.44 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking half v2.7.1 [INFO] [stderr] Checking halfbrown v0.4.0 [INFO] [stderr] Checking tinytemplate v1.2.1 [INFO] [stderr] Checking pnp v0.12.8 [INFO] [stderr] Checking ciborium-ll v0.2.2 [INFO] [stderr] Checking ciborium v0.2.2 [INFO] [stderr] Checking value-trait v0.12.1 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking simd-json v0.17.0 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking codspeed-criterion-compat-walltime v4.3.0 [INFO] [stderr] Checking rspack_resolver v0.6.8 (/opt/rustwide/workdir) [INFO] [stdout] warning: binding's name is too similar to existing binding [INFO] [stdout] --> src/tests/dependencies.rs:102:11 [INFO] [stdout] | [INFO] [stdout] 102 | let resolved = resolver [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: existing binding defined here [INFO] [stdout] --> src/tests/dependencies.rs:28:9 [INFO] [stdout] | [INFO] [stdout] 28 | let resolver = ResolverGeneric::::new_with_file_system( [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#similar_names [INFO] [stdout] = note: `-W clippy::similar-names` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::similar_names)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary hashes around raw string literal [INFO] [stdout] --> src/tests/package_json.rs:26:25 [INFO] [stdout] | [INFO] [stdout] 26 | let json_with_bom = r##"{"name": "example-package"}"##.as_bytes().to_vec(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_raw_string_hashes [INFO] [stdout] = note: `-W clippy::needless-raw-string-hashes` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::needless_raw_string_hashes)]` [INFO] [stdout] help: remove one hash from both sides of the string literal [INFO] [stdout] | [INFO] [stdout] 26 - let json_with_bom = r##"{"name": "example-package"}"##.as_bytes().to_vec(); [INFO] [stdout] 26 + let json_with_bom = r#"{"name": "example-package"}"#.as_bytes().to_vec(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary hashes around raw string literal [INFO] [stdout] --> src/tests/package_json.rs:36:25 [INFO] [stdout] | [INFO] [stdout] 36 | let json_with_bom = r##"{"broken":"string"##.as_bytes().to_vec(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_raw_string_hashes [INFO] [stdout] help: remove one hash from both sides of the string literal [INFO] [stdout] | [INFO] [stdout] 36 - let json_with_bom = r##"{"broken":"string"##.as_bytes().to_vec(); [INFO] [stdout] 36 + let json_with_bom = r#"{"broken":"string"#.as_bytes().to_vec(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::is_some_and` [INFO] [stdout] --> src/lib.rs:1130:10 [INFO] [stdout] | [INFO] [stdout] 1130 | if new_specifier [INFO] [stdout] | __________^ [INFO] [stdout] 1131 | | .strip_prefix("./") [INFO] [stdout] 1132 | | .filter(|s| path.ends_with(Path::new(s))) [INFO] [stdout] 1133 | | .is_some() [INFO] [stdout] | |__________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_variant_and [INFO] [stdout] = note: `-W clippy::manual-is-variant-and` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::manual_is_variant_and)]` [INFO] [stdout] help: use [INFO] [stdout] | [INFO] [stdout] 1130 ~ if new_specifier [INFO] [stdout] 1131 + .strip_prefix("./").as_ref().is_some_and(|s| path.ends_with(Path::new(s))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this is an outer doc comment and does not apply to the parent module or crate [INFO] [stdout] --> examples/resolver.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | ///! See documentation at [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_doc_comments [INFO] [stdout] = note: `-W clippy::suspicious-doc-comments` implied by `-W clippy::all` [INFO] [stdout] = help: to override `-W clippy::all` add `#[allow(clippy::suspicious_doc_comments)]` [INFO] [stdout] help: use an inner doc comment to document the parent module or crate [INFO] [stdout] | [INFO] [stdout] 1 - ///! See documentation at [INFO] [stdout] 1 + //! See documentation at [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `Debug` formatting in `assert!` args [INFO] [stdout] --> examples/resolver.rs:12:7 [INFO] [stdout] | [INFO] [stdout] 12 | "{path:?} must be a directory that will be resolved against." [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use `Display` formatting and change this to `path.display()` [INFO] [stdout] = note: switching to `Display` formatting will change how the value is shown; escaped characters will no longer be escaped and surrounding quotes will be removed [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_debug_formatting [INFO] [stdout] = note: `-W clippy::unnecessary-debug-formatting` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::unnecessary_debug_formatting)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary trailing comma [INFO] [stdout] --> examples/resolver.rs:14:67 [INFO] [stdout] | [INFO] [stdout] 14 | assert!(path.is_absolute(), "{path:?} must be an absolute path.",); [INFO] [stdout] | ^ help: remove the trailing comma [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_trailing_comma [INFO] [stdout] = note: `-W clippy::unnecessary-trailing-comma` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::unnecessary_trailing_comma)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `Debug` formatting in `assert!` args [INFO] [stdout] --> examples/resolver.rs:14:33 [INFO] [stdout] | [INFO] [stdout] 14 | assert!(path.is_absolute(), "{path:?} must be an absolute path.",); [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use `Display` formatting and change this to `path.display()` [INFO] [stdout] = note: switching to `Display` formatting will change how the value is shown; escaped characters will no longer be escaped and surrounding quotes will be removed [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_debug_formatting [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `Debug` formatting in `println!` args [INFO] [stdout] --> examples/resolver.rs:18:20 [INFO] [stdout] | [INFO] [stdout] 18 | println!("path: {path:?}"); [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use `Display` formatting and change this to `path.display()` [INFO] [stdout] = note: switching to `Display` formatting will change how the value is shown; escaped characters will no longer be escaped and surrounding quotes will be removed [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_debug_formatting [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `ResolveContext::default()` is more clear than this expression [INFO] [stdout] --> examples/resolver.rs:32:17 [INFO] [stdout] | [INFO] [stdout] 32 | let mut ctx = Default::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `ResolveContext::default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#default_trait_access [INFO] [stdout] = note: `-W clippy::default-trait-access` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::default_trait_access)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary semicolon [INFO] [stdout] --> examples/resolver.rs:40:4 [INFO] [stdout] | [INFO] [stdout] 40 | }; [INFO] [stdout] | ^ help: remove [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_semicolon [INFO] [stdout] = note: `-W clippy::unnecessary-semicolon` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::unnecessary_semicolon)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `Debug` formatting in `println!` args [INFO] [stdout] --> examples/resolver.rs:39:50 [INFO] [stdout] | [INFO] [stdout] 39 | Ok(resolution) => println!("Resolved: {:?}", resolution.full_path()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use `Display` formatting and change this to `resolution.full_path().display()` [INFO] [stdout] = note: switching to `Display` formatting will change how the value is shown; escaped characters will no longer be escaped and surrounding quotes will be removed [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_debug_formatting [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> examples/resolver.rs:44:3 [INFO] [stdout] | [INFO] [stdout] 44 | println!("file_deps: {:#?}", sorted_file_deps); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] = note: `-W clippy::uninlined-format-args` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::uninlined_format_args)]` [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 44 - println!("file_deps: {:#?}", sorted_file_deps); [INFO] [stdout] 44 + println!("file_deps: {sorted_file_deps:#?}"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> examples/resolver.rs:48:3 [INFO] [stdout] | [INFO] [stdout] 48 | println!("missing_deps: {:#?}", sorted_missing); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 48 - println!("missing_deps: {:#?}", sorted_missing); [INFO] [stdout] 48 + println!("missing_deps: {sorted_missing:#?}"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function can be simplified using the `async fn` syntax [INFO] [stdout] --> benches/resolver.rs:134:1 [INFO] [stdout] | [INFO] [stdout] 134 | / fn create_async_resolve_task( [INFO] [stdout] 135 | | rspack_resolver: Arc, [INFO] [stdout] 136 | | path: PathBuf, [INFO] [stdout] 137 | | request: String, [INFO] [stdout] 138 | | ) -> impl Future { [INFO] [stdout] | |_____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_async_fn [INFO] [stdout] = note: `-W clippy::manual-async-fn` implied by `-W clippy::all` [INFO] [stdout] = help: to override `-W clippy::all` add `#[allow(clippy::manual_async_fn)]` [INFO] [stdout] help: make the function `async` and return the output of the future directly [INFO] [stdout] | [INFO] [stdout] 134 + async fn create_async_resolve_task( [INFO] [stdout] 135 + rspack_resolver: Arc, [INFO] [stdout] 136 + path: PathBuf, [INFO] [stdout] 137 + request: String, [INFO] [stdout] 138 ~ ) { [INFO] [stdout] 139 + let _ = rspack_resolver.resolve(path, &request).await; [INFO] [stdout] 140 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> benches/resolver.rs:161:16 [INFO] [stdout] | [INFO] [stdout] 161 | if !r.is_ok() { [INFO] [stdout] | ^^^^^^^^^^ help: try: `r.is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `-W clippy::nonminimal-bool` implied by `-W clippy::all` [INFO] [stdout] = help: to override `-W clippy::all` add `#[allow(clippy::nonminimal_bool)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: only a `panic!` in `if`-then statement [INFO] [stdout] --> benches/resolver.rs:161:13 [INFO] [stdout] | [INFO] [stdout] 161 | / ... if !r.is_ok() { [INFO] [stdout] 162 | | ... panic!("resolve failed {path:?} {request},\n\nplease run `pnpm install --ignore-workspace` in `/benches` before running... [INFO] [stdout] 163 | | ... } [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_assert [INFO] [stdout] = note: `-W clippy::manual-assert` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::manual_assert)]` [INFO] [stdout] help: replace `if`-then-`panic!` with `assert!` [INFO] [stdout] | [INFO] [stdout] 161 - if !r.is_ok() { [INFO] [stdout] 162 - panic!("resolve failed {path:?} {request},\n\nplease run `pnpm install --ignore-workspace` in `/benches` before running the benchmarks"); [INFO] [stdout] 163 - } [INFO] [stdout] 161 + assert!(r.is_ok(), "resolve failed {path:?} {request},\n\nplease run `pnpm install --ignore-workspace` in `/benches` before running the benchmarks") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `Debug` formatting in `panic!` args [INFO] [stdout] --> benches/resolver.rs:162:41 [INFO] [stdout] | [INFO] [stdout] 162 | ... panic!("resolve failed {path:?} {request},\n\nplease run `pnpm install --ignore-workspace` in `/benches` before running the b... [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: use `Display` formatting and change this to `path.display()` [INFO] [stdout] = note: switching to `Display` formatting will change how the value is shown; escaped characters will no longer be escaped and surrounding quotes will be removed [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_debug_formatting [INFO] [stdout] = note: `-W clippy::unnecessary-debug-formatting` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::unnecessary_debug_formatting)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: matching over `()` is more explicit [INFO] [stdout] --> benches/resolver.rs:219:10 [INFO] [stdout] | [INFO] [stdout] 219 | |_| async { [INFO] [stdout] | ^ help: use `()` instead of `_`: `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ignored_unit_patterns [INFO] [stdout] = note: `-W clippy::ignored-unit-patterns` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::ignored_unit_patterns)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: matching over `()` is more explicit [INFO] [stdout] --> benches/resolver.rs:242:10 [INFO] [stdout] | [INFO] [stdout] 242 | |_| async { [INFO] [stdout] | ^ help: use `()` instead of `_`: `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ignored_unit_patterns [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variables can be used directly in the `format!` string [INFO] [stdout] --> benches/resolver.rs:245:31 [INFO] [stdout] | [INFO] [stdout] 245 | .resolve(path, &format!("{}/bad", request)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args [INFO] [stdout] = note: `-W clippy::uninlined-format-args` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::uninlined_format_args)]` [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 245 - .resolve(path, &format!("{}/bad", request)) [INFO] [stdout] 245 + .resolve(path, &format!("{request}/bad")) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: matching over `()` is more explicit [INFO] [stdout] --> benches/resolver.rs:264:10 [INFO] [stdout] | [INFO] [stdout] 264 | |_| { [INFO] [stdout] | ^ help: use `()` instead of `_`: `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ignored_unit_patterns [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needless use of `for_each` [INFO] [stdout] --> benches/resolver.rs:267:13 [INFO] [stdout] | [INFO] [stdout] 267 | / data.iter().for_each(|(path, request)| { [INFO] [stdout] 268 | | join_set.spawn(create_async_resolve_task( [INFO] [stdout] 269 | | rspack_resolver.clone(), [INFO] [stdout] 270 | | path.to_path_buf(), [INFO] [stdout] 271 | | request.to_string(), [INFO] [stdout] 272 | | )); [INFO] [stdout] 273 | | }); [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_for_each [INFO] [stdout] = note: `-W clippy::needless-for-each` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::needless_for_each)]` [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 267 ~ for (path, request) in data.iter() { [INFO] [stdout] 268 + join_set.spawn(create_async_resolve_task( [INFO] [stdout] 269 + rspack_resolver.clone(), [INFO] [stdout] 270 + path.to_path_buf(), [INFO] [stdout] 271 + request.to_string(), [INFO] [stdout] 272 + )); [INFO] [stdout] 273 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `.clone()` on a ref-counted pointer [INFO] [stdout] --> benches/resolver.rs:269:17 [INFO] [stdout] | [INFO] [stdout] 269 | rspack_resolver.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::sync::Arc::>::clone(&rspack_resolver)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_ref_ptr [INFO] [stdout] = note: requested on the command line with `-W clippy::clone-on-ref-ptr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: implicitly cloning a `PathBuf` by calling `to_path_buf` on its dereferenced type [INFO] [stdout] --> benches/resolver.rs:270:17 [INFO] [stdout] | [INFO] [stdout] 270 | path.to_path_buf(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: consider using: `(*path).clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_clone [INFO] [stdout] = note: `-W clippy::implicit-clone` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::implicit_clone)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: implicitly cloning a `String` by calling `to_string` on its dereferenced type [INFO] [stdout] --> benches/resolver.rs:271:17 [INFO] [stdout] | [INFO] [stdout] 271 | request.to_string(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: consider using: `(*request).clone()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `to_string` on `&&std::string::String` [INFO] [stdout] --> benches/resolver.rs:271:17 [INFO] [stdout] | [INFO] [stdout] 271 | request.to_string(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try dereferencing the receiver: `(*request).to_string()` [INFO] [stdout] | [INFO] [stdout] = help: `&std::string::String` implements `ToString` through a slower blanket impl, but `std::string::String` has a fast specialization of `ToString` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inefficient_to_string [INFO] [stdout] = note: `-W clippy::inefficient-to-string` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::inefficient_to_string)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: matching over `()` is more explicit [INFO] [stdout] --> benches/resolver.rs:292:10 [INFO] [stdout] | [INFO] [stdout] 292 | |_| async { [INFO] [stdout] | ^ help: use `()` instead of `_`: `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ignored_unit_patterns [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> benches/resolver.rs:323:33 [INFO] [stdout] | [INFO] [stdout] 323 | format!("./file{i}").to_string(), [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> benches/resolver.rs:323:13 [INFO] [stdout] | [INFO] [stdout] 323 | format!("./file{i}").to_string(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] = note: `-W clippy::redundant-clone` implied by `-W clippy::nursery` [INFO] [stdout] = help: to override `-W clippy::nursery` add `#[allow(clippy::redundant_clone)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `.clone()` on a ref-counted pointer [INFO] [stdout] --> benches/resolver.rs:321:13 [INFO] [stdout] | [INFO] [stdout] 321 | rspack_resolver.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `std::sync::Arc::>::clone(&rspack_resolver)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_ref_ptr [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: matching over `()` is more explicit [INFO] [stdout] --> benches/resolver.rs:345:10 [INFO] [stdout] | [INFO] [stdout] 345 | |_| async { [INFO] [stdout] | ^ help: use `()` instead of `_`: `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ignored_unit_patterns [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: temporary with significant `Drop` can be early dropped [INFO] [stdout] --> benches/resolver.rs:357:1 [INFO] [stdout] | [INFO] [stdout] 357 | criterion_group!(resolver, bench_resolver); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ temporary `criterion` is currently being dropped at the end of its contained scope [INFO] [stdout] | [INFO] [stdout] = note: this might lead to unnecessary resource contention [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#significant_drop_tightening [INFO] [stdout] = note: `-W clippy::significant-drop-tightening` implied by `-W clippy::nursery` [INFO] [stdout] = help: to override `-W clippy::nursery` add `#[allow(clippy::significant_drop_tightening)]` [INFO] [stdout] = note: this warning originates in the macro `$crate::criterion_group` which comes from the expansion of the macro `criterion_group` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `FromIterator::from_iter` [INFO] [stdout] --> src/tests/dependencies.rs:107:31 [INFO] [stdout] | [INFO] [stdout] 107 | let file_dependencies = FxHashSet::from_iter(file_dependencies.iter().map(PathBuf::from)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `.collect()` instead of `::from_iter()`: `file_dependencies.iter().map(PathBuf::from).collect::>()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_iter_instead_of_collect [INFO] [stdout] = note: `-W clippy::from-iter-instead-of-collect` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::from_iter_instead_of_collect)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `FromIterator::from_iter` [INFO] [stdout] --> src/tests/dependencies.rs:109:9 [INFO] [stdout] | [INFO] [stdout] 109 | FxHashSet::from_iter(missing_dependencies.iter().map(PathBuf::from)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `.collect()` instead of `::from_iter()`: `missing_dependencies.iter().map(PathBuf::from).collect::>()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_iter_instead_of_collect [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: allocating a local array larger than 16384 bytes [INFO] [stdout] --> src/tests/exports_field.rs:396:20 [INFO] [stdout] | [INFO] [stdout] 396 | let test_cases = [ [INFO] [stdout] | ____________________^ [INFO] [stdout] 397 | | TestCase { [INFO] [stdout] 398 | | name: "sample #1", [INFO] [stdout] 399 | | expect: Some(vec!["./dist/test/file.js"]), [INFO] [stdout] ... | [INFO] [stdout] 2594 | | }, [INFO] [stdout] 2595 | | ]; [INFO] [stdout] | |___^ [INFO] [stdout] | [INFO] [stdout] = help: consider allocating on the heap with `vec![ [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #1", [INFO] [stdout] expect: Some(vec!["./dist/test/file.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./foo/": { [INFO] [stdout] "import": [ [INFO] [stdout] "./dist/", [INFO] [stdout] "./src/" [INFO] [stdout] ], [INFO] [stdout] "webpack": "./wp/" [INFO] [stdout] }, [INFO] [stdout] ".": "./main.js" [INFO] [stdout] })), [INFO] [stdout] request: "./foo/test/file.js", [INFO] [stdout] condition_names: vec!["import", "webpack"], [INFO] [stdout] }, [INFO] [stdout] // Duplicated due to not supporting returning an array [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #1", [INFO] [stdout] expect: Some(vec!["./src/test/file.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./foo/": { [INFO] [stdout] "import": [ [INFO] [stdout] "./src/" [INFO] [stdout] ], [INFO] [stdout] "webpack": "./wp/" [INFO] [stdout] }, [INFO] [stdout] ".": "./main.js" [INFO] [stdout] })), [INFO] [stdout] request: "./foo/test/file.js", [INFO] [stdout] condition_names: vec!["import", "webpack"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #1 (wildcard)", [INFO] [stdout] expect: Some(vec!["./dist/test/file.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./foo/*": { [INFO] [stdout] "import": [ [INFO] [stdout] "./dist/*", [INFO] [stdout] "./src/*" [INFO] [stdout] ], [INFO] [stdout] "webpack": "./wp/*" [INFO] [stdout] }, [INFO] [stdout] ".": "./main.js" [INFO] [stdout] })), [INFO] [stdout] request: "./foo/test/file.js", [INFO] [stdout] condition_names: vec!["import", "webpack"], [INFO] [stdout] }, [INFO] [stdout] // Duplicated due to not supporting returning an array [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #1 (wildcard)", [INFO] [stdout] expect: Some(vec!["./src/test/file.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./foo/*": { [INFO] [stdout] "import": [ [INFO] [stdout] "./src/*" [INFO] [stdout] ], [INFO] [stdout] "webpack": "./wp/*" [INFO] [stdout] }, [INFO] [stdout] ".": "./main.js" [INFO] [stdout] })), [INFO] [stdout] request: "./foo/test/file.js", [INFO] [stdout] condition_names: vec!["import", "webpack"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #2", [INFO] [stdout] expect: Some(vec!["./data/timezones/pdt.mjs"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./timezones/": "./data/timezones/" [INFO] [stdout] })), [INFO] [stdout] request: "./timezones/pdt.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #2 (wildcard)", [INFO] [stdout] expect: Some(vec!["./data/timezones/pdt.mjs"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./timezones/*": "./data/timezones/*" [INFO] [stdout] })), [INFO] [stdout] request: "./timezones/pdt.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #3", [INFO] [stdout] expect: Some(vec!["./data/timezones/timezones/pdt.mjs"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./": "./data/timezones/" [INFO] [stdout] })), [INFO] [stdout] request: "./timezones/pdt.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #3 (wildcard)", [INFO] [stdout] expect: Some(vec!["./data/timezones/timezones/pdt.mjs"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./*": "./data/timezones/*.mjs" [INFO] [stdout] })), [INFO] [stdout] request: "./timezones/pdt", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #4", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./lib/": { [INFO] [stdout] "browser": [ [INFO] [stdout] "./browser/" [INFO] [stdout] ] [INFO] [stdout] }, [INFO] [stdout] "./dist/index.js": { [INFO] [stdout] "node": "./index.js" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./dist/index.js", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #4 (wildcard)", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./lib/*": { [INFO] [stdout] "browser": [ [INFO] [stdout] "./browser/*" [INFO] [stdout] ] [INFO] [stdout] }, [INFO] [stdout] "./dist/index.js": { [INFO] [stdout] "node": "./index.js" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./dist/index.js", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #5", [INFO] [stdout] expect: Some(vec!["./browser/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./lib/": { [INFO] [stdout] "browser": [ [INFO] [stdout] "./browser/" [INFO] [stdout] ] [INFO] [stdout] }, [INFO] [stdout] "./dist/index.js": { [INFO] [stdout] "node": "./index.js", [INFO] [stdout] "default": "./browser/index.js" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./dist/index.js", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #5 (wildcard)", [INFO] [stdout] expect: Some(vec!["./browser/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./lib/*": { [INFO] [stdout] "browser": [ [INFO] [stdout] "./browser/*" [INFO] [stdout] ] [INFO] [stdout] }, [INFO] [stdout] "./dist/index.js": { [INFO] [stdout] "node": "./index.js", [INFO] [stdout] "default": "./browser/index.js" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./dist/index.js", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #6", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./dist/a": "./dist/index.js" [INFO] [stdout] })), [INFO] [stdout] request: "./dist/aaa", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #7", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./dist/a/a/": "./dist/index.js" [INFO] [stdout] })), [INFO] [stdout] request: "./dist/a/a", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #7 (wildcard)", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./dist/a/a/*": "./dist/index.js" [INFO] [stdout] })), [INFO] [stdout] request: "./dist/a/a", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #8", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] ".": "./index.js" [INFO] [stdout] })), [INFO] [stdout] request: "./timezones/pdt.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #9", [INFO] [stdout] expect: Some(vec!["./main.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./index.js": "./main.js" [INFO] [stdout] })), [INFO] [stdout] request: "./index.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #10", [INFO] [stdout] expect: Some(vec!["./ok.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./#foo": "./ok.js", [INFO] [stdout] "./module": "./ok.js", [INFO] [stdout] "./🎉": "./ok.js", [INFO] [stdout] "./%F0%9F%8E%89": "./other.js", [INFO] [stdout] "./bar#foo": "./ok.js", [INFO] [stdout] "./#zapp/": "./", [INFO] [stdout] "./#zipp*": "./zzz*" [INFO] [stdout] })), [INFO] [stdout] request: "./#foo", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #11", [INFO] [stdout] expect: Some(vec!["./ok.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./#foo": "./ok.js", [INFO] [stdout] "./module": "./ok.js", [INFO] [stdout] "./🎉": "./ok.js", [INFO] [stdout] "./%F0%9F%8E%89": "./other.js", [INFO] [stdout] "./bar#foo": "./ok.js", [INFO] [stdout] "./#zapp/": "./", [INFO] [stdout] "./#zipp*": "./zzz*" [INFO] [stdout] })), [INFO] [stdout] request: "./bar#foo", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #12", [INFO] [stdout] expect: Some(vec!["./ok.js#abc"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./#foo": "./ok.js", [INFO] [stdout] "./module": "./ok.js", [INFO] [stdout] "./🎉": "./ok.js", [INFO] [stdout] "./%F0%9F%8E%89": "./other.js", [INFO] [stdout] "./bar#foo": "./ok.js", [INFO] [stdout] "./#zapp/": "./", [INFO] [stdout] "./#zipp*": "./zzz*" [INFO] [stdout] })), [INFO] [stdout] request: "./#zapp/ok.js#abc", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #12", [INFO] [stdout] expect: Some(vec!["./ok.js#abc"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./#foo": "./ok.js", [INFO] [stdout] "./module": "./ok.js", [INFO] [stdout] "./🎉": "./ok.js", [INFO] [stdout] "./%F0%9F%8E%89": "./other.js", [INFO] [stdout] "./bar#foo": "./ok.js", [INFO] [stdout] "./#zapp/": "./", [INFO] [stdout] "./#zipp*": "./zzz*" [INFO] [stdout] })), [INFO] [stdout] request: "./#zapp/ok.js#abc", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #13", [INFO] [stdout] expect: Some(vec!["./ok.js?abc"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./#foo": "./ok.js", [INFO] [stdout] "./module": "./ok.js", [INFO] [stdout] "./🎉": "./ok.js", [INFO] [stdout] "./%F0%9F%8E%89": "./other.js", [INFO] [stdout] "./bar#foo": "./ok.js", [INFO] [stdout] "./#zapp/": "./", [INFO] [stdout] "./#zipp*": "./zzz*" [INFO] [stdout] })), [INFO] [stdout] request: "./#zapp/ok.js?abc", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #14", [INFO] [stdout] expect: Some(vec!["./🎉.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./#foo": "./ok.js", [INFO] [stdout] "./module": "./ok.js", [INFO] [stdout] "./🎉": "./ok.js", [INFO] [stdout] "./%F0%9F%8E%89": "./other.js", [INFO] [stdout] "./bar#foo": "./ok.js", [INFO] [stdout] "./#zapp/": "./", [INFO] [stdout] "./#zipp*": "./zzz*" [INFO] [stdout] })), [INFO] [stdout] request: "./#zapp/🎉.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #15", [INFO] [stdout] expect: Some(vec!["./%F0%9F%8E%89.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./#foo": "./ok.js", [INFO] [stdout] "./module": "./ok.js", [INFO] [stdout] "./🎉": "./ok.js", [INFO] [stdout] "./%F0%9F%8E%89": "./other.js", [INFO] [stdout] "./bar#foo": "./ok.js", [INFO] [stdout] "./#zapp/": "./", [INFO] [stdout] "./#zipp*": "./zzz*" [INFO] [stdout] })), [INFO] [stdout] request: "./#zapp/%F0%9F%8E%89.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #16", [INFO] [stdout] expect: Some(vec!["./ok.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./#foo": "./ok.js", [INFO] [stdout] "./module": "./ok.js", [INFO] [stdout] "./🎉": "./ok.js", [INFO] [stdout] "./%F0%9F%8E%89": "./other.js", [INFO] [stdout] "./bar#foo": "./ok.js", [INFO] [stdout] "./#zapp/": "./", [INFO] [stdout] "./#zipp*": "./zzz*" [INFO] [stdout] })), [INFO] [stdout] request: "./🎉", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #17", [INFO] [stdout] expect: Some(vec!["./other.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./#foo": "./ok.js", [INFO] [stdout] "./module": "./ok.js", [INFO] [stdout] "./🎉": "./ok.js", [INFO] [stdout] "./%F0%9F%8E%89": "./other.js", [INFO] [stdout] "./bar#foo": "./ok.js", [INFO] [stdout] "./#zapp/": "./", [INFO] [stdout] "./#zipp*": "./zzz*" [INFO] [stdout] })), [INFO] [stdout] request: "./%F0%9F%8E%89", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #18", [INFO] [stdout] expect: Some(vec!["./ok.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./#foo": "./ok.js", [INFO] [stdout] "./module": "./ok.js", [INFO] [stdout] "./🎉": "./ok.js", [INFO] [stdout] "./%F0%9F%8E%89": "./other.js", [INFO] [stdout] "./bar#foo": "./ok.js", [INFO] [stdout] "./#zapp/": "./", [INFO] [stdout] "./#zipp*": "./zzz*" [INFO] [stdout] })), [INFO] [stdout] request: "./module", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #19", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./#foo": "./ok.js", [INFO] [stdout] "./module": "./ok.js", [INFO] [stdout] "./🎉": "./ok.js", [INFO] [stdout] "./%F0%9F%8E%89": "./other.js", [INFO] [stdout] "./bar#foo": "./ok.js", [INFO] [stdout] "./#zapp/": "./", [INFO] [stdout] "./#zipp*": "./zzz*" [INFO] [stdout] })), [INFO] [stdout] request: "./module#foo", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #20", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./#foo": "./ok.js", [INFO] [stdout] "./module": "./ok.js", [INFO] [stdout] "./🎉": "./ok.js", [INFO] [stdout] "./%F0%9F%8E%89": "./other.js", [INFO] [stdout] "./bar#foo": "./ok.js", [INFO] [stdout] "./#zapp/": "./", [INFO] [stdout] "./#zipp*": "./zzz*" [INFO] [stdout] })), [INFO] [stdout] request: "./module?foo", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #21", [INFO] [stdout] expect: Some(vec!["./zizizi"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./#foo": "./ok.js", [INFO] [stdout] "./module": "./ok.js", [INFO] [stdout] "./🎉": "./ok.js", [INFO] [stdout] "./%F0%9F%8E%89": "./other.js", [INFO] [stdout] "./bar#foo": "./ok.js", [INFO] [stdout] "./#zapp/": "./", [INFO] [stdout] "./#zipp*": "./z*z*z*" [INFO] [stdout] })), [INFO] [stdout] request: "./#zippi", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "sample #22", [INFO] [stdout] expect: Some(vec!["./d?e?f"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./a?b?c/": "./" [INFO] [stdout] })), [INFO] [stdout] request: "./a?b?c/d?e?f", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "Direct mapping #1", [INFO] [stdout] expect: Some(vec!["./dist/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] ".": "./dist/index.js" [INFO] [stdout] })), [INFO] [stdout] request: ".", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "Direct mapping #2", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./": "./", [INFO] [stdout] "./*": "./*", [INFO] [stdout] "./dist/index.js": "./dist/index.js" [INFO] [stdout] })), [INFO] [stdout] request: ".", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "Direct mapping #3", [INFO] [stdout] expect: Some(vec!["./dist/a.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./dist/": "./dist/", [INFO] [stdout] "./dist/*": "./dist/*", [INFO] [stdout] "./dist*": "./dist*", [INFO] [stdout] "./dist/index.js": "./dist/a.js" [INFO] [stdout] })), [INFO] [stdout] request: "./dist/index.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "Direct mapping #4", [INFO] [stdout] expect: Some(vec!["./index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./": { [INFO] [stdout] "browser": [ [INFO] [stdout] "./browser/" [INFO] [stdout] ] [INFO] [stdout] }, [INFO] [stdout] "./*": { [INFO] [stdout] "browser": [ [INFO] [stdout] "./browser/*" [INFO] [stdout] ] [INFO] [stdout] }, [INFO] [stdout] "./dist/index.js": { [INFO] [stdout] "browser": "./index.js" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./dist/index.js", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "Direct mapping #5", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./": { [INFO] [stdout] "browser": [ [INFO] [stdout] "./browser/" [INFO] [stdout] ] [INFO] [stdout] }, [INFO] [stdout] "./*": { [INFO] [stdout] "browser": [ [INFO] [stdout] "./browser/*" [INFO] [stdout] ] [INFO] [stdout] }, [INFO] [stdout] "./dist/index.js": { [INFO] [stdout] "node": "./node.js" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./dist/index.js", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "Direct mapping #6", [INFO] [stdout] expect: Some(vec!["./index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] ".": { [INFO] [stdout] "browser": "./index.js", [INFO] [stdout] "node": "./src/node/index.js", [INFO] [stdout] "default": "./src/index.js" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: ".", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "Direct mapping #7", [INFO] [stdout] expect: Some(vec!["./src/index.js"]), // `enhanced_resolve` is `None` [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] ".": { [INFO] [stdout] "default": "./src/index.js", [INFO] [stdout] "browser": "./index.js", [INFO] [stdout] "node": "./src/node/index.js" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: ".", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "Direct mapping #8", [INFO] [stdout] expect: Some(vec!["./src/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] ".": { [INFO] [stdout] "browser": "./index.js", [INFO] [stdout] "node": "./src/node/index.js", [INFO] [stdout] "default": "./src/index.js" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: ".", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "Direct mapping #9", [INFO] [stdout] expect: Some(vec!["./index"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] ".": "./index" [INFO] [stdout] })), [INFO] [stdout] request: ".", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "Direct mapping #10", [INFO] [stdout] expect: Some(vec!["./index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./index": "./index.js" [INFO] [stdout] })), [INFO] [stdout] request: "./index", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "Direct mapping #11", [INFO] [stdout] expect: Some(vec!["./foo.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./": "./", [INFO] [stdout] "./*": "./*", [INFO] [stdout] "./dist/index.js": "./dist/index.js" [INFO] [stdout] })), [INFO] [stdout] request: "./foo.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "Direct mapping #12", [INFO] [stdout] expect: Some(vec!["./foo/bar/baz.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./": "./", [INFO] [stdout] "./*": "./*", [INFO] [stdout] "./dist/index.js": "./dist/index.js" [INFO] [stdout] })), [INFO] [stdout] request: "./foo/bar/baz.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "Direct mapping #13", [INFO] [stdout] expect: Some(vec!["./foo/bar/baz.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./": "./", [INFO] [stdout] "./dist/index.js": "./dist/index.js" [INFO] [stdout] })), [INFO] [stdout] request: "./foo/bar/baz.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "Direct mapping #14", [INFO] [stdout] expect: Some(vec!["./foo/bar/baz.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./*": "./*", [INFO] [stdout] "./dist/index.js": "./dist/index.js" [INFO] [stdout] })), [INFO] [stdout] request: "./foo/bar/baz.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "Direct and conditional mapping #1", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] ".": [{ [INFO] [stdout] "browser": "./browser.js" [INFO] [stdout] }, { [INFO] [stdout] "require": "./require.js" [INFO] [stdout] }, { [INFO] [stdout] "import": "./import.mjs" [INFO] [stdout] }] [INFO] [stdout] })), [INFO] [stdout] request: ".", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "Direct and conditional mapping #2", [INFO] [stdout] expect: Some(vec!["./import.mjs"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] ".": [{ [INFO] [stdout] "browser": "./browser.js" [INFO] [stdout] }, { [INFO] [stdout] "require": "./require.js" [INFO] [stdout] }, { [INFO] [stdout] "import": "./import.mjs" [INFO] [stdout] }] [INFO] [stdout] })), [INFO] [stdout] request: ".", [INFO] [stdout] condition_names: vec!["import"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "Direct and conditional mapping #3", [INFO] [stdout] expect: Some(vec!["./require.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] ".": [ [INFO] [stdout] { [INFO] [stdout] "browser": "./browser.js" [INFO] [stdout] }, [INFO] [stdout] { [INFO] [stdout] "require": "./require.js" [INFO] [stdout] }, [INFO] [stdout] { [INFO] [stdout] "import": "./import.mjs" [INFO] [stdout] } [INFO] [stdout] ] [INFO] [stdout] })), [INFO] [stdout] request: ".", [INFO] [stdout] condition_names: vec!["import", "require"], [INFO] [stdout] }, [INFO] [stdout] // Duplicated due to not supporting returning an array [INFO] [stdout] TestCase { [INFO] [stdout] name: "Direct and conditional mapping #3", [INFO] [stdout] expect: Some(vec!["./import.mjs"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] ".": [{ [INFO] [stdout] "browser": "./browser.js" [INFO] [stdout] }, { [INFO] [stdout] "import": "./import.mjs" [INFO] [stdout] }] [INFO] [stdout] })), [INFO] [stdout] request: ".", [INFO] [stdout] condition_names: vec!["import", "require"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "Direct and conditional mapping #4", [INFO] [stdout] expect: Some(vec!["./require.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] ".": [{ [INFO] [stdout] "browser": "./browser.js" [INFO] [stdout] }, { [INFO] [stdout] "require": [ [INFO] [stdout] "./require.js" [INFO] [stdout] ] [INFO] [stdout] }, { [INFO] [stdout] "import": [ [INFO] [stdout] "./import.mjs", [INFO] [stdout] "./import.js" [INFO] [stdout] ] [INFO] [stdout] }] [INFO] [stdout] })), [INFO] [stdout] request: ".", [INFO] [stdout] condition_names: vec!["import", "require"], [INFO] [stdout] }, [INFO] [stdout] // Duplicated due to not supporting returning an array [INFO] [stdout] TestCase { [INFO] [stdout] name: "Direct and conditional mapping #4", [INFO] [stdout] expect: Some(vec!["./import.mjs"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] ".": [ [INFO] [stdout] { [INFO] [stdout] "browser": "./browser.js" [INFO] [stdout] }, [INFO] [stdout] { [INFO] [stdout] "import": [ [INFO] [stdout] "./import.mjs", [INFO] [stdout] "./import.js" [INFO] [stdout] ] [INFO] [stdout] } [INFO] [stdout] ] [INFO] [stdout] })), [INFO] [stdout] request: ".", [INFO] [stdout] condition_names: vec!["import", "require"], [INFO] [stdout] }, [INFO] [stdout] // Duplicated due to not supporting returning an array [INFO] [stdout] TestCase { [INFO] [stdout] name: "Direct and conditional mapping #4", [INFO] [stdout] expect: Some(vec!["./import.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] ".": [ [INFO] [stdout] { [INFO] [stdout] "browser": "./browser.js" [INFO] [stdout] }, [INFO] [stdout] { [INFO] [stdout] "import": [ [INFO] [stdout] "./import.js" [INFO] [stdout] ] [INFO] [stdout] } [INFO] [stdout] ] [INFO] [stdout] })), [INFO] [stdout] request: ".", [INFO] [stdout] condition_names: vec!["import", "require"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "mapping to a folder root #1", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./timezones": "./data/timezones/" [INFO] [stdout] })), [INFO] [stdout] request: "./timezones/pdt.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "mapping to a folder root #2", [INFO] [stdout] expect: None, [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./timezones/": "./data/timezones" [INFO] [stdout] })), [INFO] [stdout] request: "./timezones/pdt.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "mapping to a folder root #3", [INFO] [stdout] expect: Some(vec!["./data/timezones/pdt/index.mjs"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./timezones/pdt/": "./data/timezones/pdt/" [INFO] [stdout] })), [INFO] [stdout] request: "./timezones/pdt/index.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "mapping to a folder root #3 (wildcard)", [INFO] [stdout] expect: Some(vec!["./data/timezones/pdt/index.mjs"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./timezones/pdt/*": "./data/timezones/pdt/*" [INFO] [stdout] })), [INFO] [stdout] request: "./timezones/pdt/index.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "mapping to a folder root #4", [INFO] [stdout] expect: Some(vec!["./timezones/pdt.mjs"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./": "./timezones/" [INFO] [stdout] })), [INFO] [stdout] request: "./pdt.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "mapping to a folder root #4 (wildcard)", [INFO] [stdout] expect: Some(vec!["./timezones/pdt.mjs"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./*": "./timezones/*" [INFO] [stdout] })), [INFO] [stdout] request: "./pdt.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "mapping to a folder root #5", [INFO] [stdout] expect: Some(vec!["./timezones/pdt.mjs"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./": "./" [INFO] [stdout] })), [INFO] [stdout] request: "./timezones/pdt.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "mapping to a folder root #5 (wildcard)", [INFO] [stdout] expect: Some(vec!["./timezones/pdt.mjs"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./*": "./*" [INFO] [stdout] })), [INFO] [stdout] request: "./timezones/pdt.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "mapping to a folder root #6", [INFO] [stdout] expect: None, [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./": "." [INFO] [stdout] })), [INFO] [stdout] request: "./timezones/pdt.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "mapping to a folder root #6 (wildcard)", [INFO] [stdout] expect: None, [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./*": "." [INFO] [stdout] })), [INFO] [stdout] request: "./timezones/pdt.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "mapping to a folder root #7", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] ".": "./" [INFO] [stdout] })), [INFO] [stdout] request: "./timezones/pdt.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "mapping to a folder root #7 (wildcard)", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] ".": "./*" [INFO] [stdout] })), [INFO] [stdout] request: "./timezones/pdt.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "the longest matching path prefix is prioritized #1", [INFO] [stdout] expect: Some(vec!["./lib/index.mjs"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./": "./", [INFO] [stdout] "./dist/": "./lib/" [INFO] [stdout] })), [INFO] [stdout] request: "./dist/index.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "the longest matching path prefix is prioritized #1 (wildcard)", [INFO] [stdout] expect: Some(vec!["./lib/index.mjs"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./*": "./*", [INFO] [stdout] "./dist/*": "./lib/*" [INFO] [stdout] })), [INFO] [stdout] request: "./dist/index.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "the longest matching path prefix is prioritized #2", [INFO] [stdout] expect: Some(vec!["./dist/utils/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./dist/utils/": "./dist/utils/", [INFO] [stdout] "./dist/": "./lib/" [INFO] [stdout] })), [INFO] [stdout] request: "./dist/utils/index.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "the longest matching path prefix is prioritized #2 (wildcard)", [INFO] [stdout] expect: Some(vec!["./dist/utils/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./dist/utils/*": "./dist/utils/*", [INFO] [stdout] "./dist/*": "./lib/*" [INFO] [stdout] })), [INFO] [stdout] request: "./dist/utils/index.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "the longest matching path prefix is prioritized #3", [INFO] [stdout] expect: Some(vec!["./dist/utils/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./dist/utils/index.js": "./dist/utils/index.js", [INFO] [stdout] "./dist/utils/": "./dist/utils/index.mjs", [INFO] [stdout] "./dist/": "./lib/" [INFO] [stdout] })), [INFO] [stdout] request: "./dist/utils/index.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "the longest matching path prefix is prioritized #3 (wildcard)", [INFO] [stdout] expect: Some(vec!["./dist/utils/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./dist/utils/index.js": "./dist/utils/index.js", [INFO] [stdout] "./dist/utils/*": "./dist/utils/index.mjs", [INFO] [stdout] "./dist/*": "./lib/*" [INFO] [stdout] })), [INFO] [stdout] request: "./dist/utils/index.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "the longest matching path prefix is prioritized #4", [INFO] [stdout] expect: Some(vec!["./lib/index.mjs"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./": { [INFO] [stdout] "browser": "./browser/" [INFO] [stdout] }, [INFO] [stdout] "./dist/": "./lib/" [INFO] [stdout] })), [INFO] [stdout] request: "./dist/index.mjs", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "the longest matching path prefix is prioritized #4 (wildcard)", [INFO] [stdout] expect: Some(vec!["./lib/index.mjs"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./*": { [INFO] [stdout] "browser": "./browser/*" [INFO] [stdout] }, [INFO] [stdout] "./dist/*": "./lib/*" [INFO] [stdout] })), [INFO] [stdout] request: "./dist/index.mjs", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "conditional mapping folder #1", [INFO] [stdout] // `lodash/` does not start with './' so fallbacks to util [INFO] [stdout] expect: Some(vec!["./utils/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/": { [INFO] [stdout] "browser": [ [INFO] [stdout] "lodash/", [INFO] [stdout] "./utils/" [INFO] [stdout] ], [INFO] [stdout] "node": [ [INFO] [stdout] "./utils-node/" [INFO] [stdout] ] [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.js", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] // Duplicated due to not supporting returning an array [INFO] [stdout] TestCase { [INFO] [stdout] name: "conditional mapping folder #1", [INFO] [stdout] expect: Some(vec!["./utils/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/": { [INFO] [stdout] "browser": [ [INFO] [stdout] "./utils/" [INFO] [stdout] ], [INFO] [stdout] "node": [ [INFO] [stdout] "./utils-node/" [INFO] [stdout] ] [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.js", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "conditional mapping folder #1 (wildcard)", [INFO] [stdout] // `lodash/` does not start with './' so fallbacks to util [INFO] [stdout] expect: Some(vec!["./utils/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/*": { [INFO] [stdout] "browser": [ [INFO] [stdout] "lodash/*", [INFO] [stdout] "./utils/*" [INFO] [stdout] ], [INFO] [stdout] "node": [ [INFO] [stdout] "./utils-node/*" [INFO] [stdout] ] [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.js", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] // Duplicated due to not supporting returning an array [INFO] [stdout] TestCase { [INFO] [stdout] name: "conditional mapping folder #1 (wildcard)", [INFO] [stdout] expect: Some(vec!["./utils/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/*": { [INFO] [stdout] "browser": [ [INFO] [stdout] "./utils/*" [INFO] [stdout] ], [INFO] [stdout] "node": [ [INFO] [stdout] "./utils-node/*" [INFO] [stdout] ] [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.js", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "conditional mapping folder #2", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/": { [INFO] [stdout] "webpack": "./wpk/", [INFO] [stdout] "browser": [ [INFO] [stdout] "lodash/", [INFO] [stdout] "./utils/" [INFO] [stdout] ], [INFO] [stdout] "node": [ [INFO] [stdout] "./node/" [INFO] [stdout] ] [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "conditional mapping folder #2 (wildcard)", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/*": { [INFO] [stdout] "webpack": "./wpk/*", [INFO] [stdout] "browser": [ [INFO] [stdout] "lodash/*", [INFO] [stdout] "./utils/*" [INFO] [stdout] ], [INFO] [stdout] "node": [ [INFO] [stdout] "./node/*" [INFO] [stdout] ] [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "conditional mapping folder #3", [INFO] [stdout] expect: Some(vec!["./wpk/index.mjs"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/": { [INFO] [stdout] "webpack": "./wpk/", [INFO] [stdout] "browser": [ [INFO] [stdout] "lodash/", [INFO] [stdout] "./utils/" [INFO] [stdout] ], [INFO] [stdout] "node": [ [INFO] [stdout] "./utils/" [INFO] [stdout] ] [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.mjs", [INFO] [stdout] condition_names: vec!["browser", "webpack"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "conditional mapping folder #3 (wildcard)", [INFO] [stdout] expect: Some(vec!["./wpk/index.mjs"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/*": { [INFO] [stdout] "webpack": "./wpk/*", [INFO] [stdout] "browser": [ [INFO] [stdout] "lodash/*", [INFO] [stdout] "./utils/*" [INFO] [stdout] ], [INFO] [stdout] "node": [ [INFO] [stdout] "./utils/*" [INFO] [stdout] ] [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.mjs", [INFO] [stdout] condition_names: vec!["browser", "webpack"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "incorrect exports field #1", [INFO] [stdout] expect: None, [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "/utils/": "./a/" [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "incorrect exports field #2", [INFO] [stdout] expect: None, [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/": "/a/" [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "incorrect exports field #3", [INFO] [stdout] expect: None, [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "/utils/": { [INFO] [stdout] "browser": "./a/", [INFO] [stdout] "default": "./b/" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.mjs", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "incorrect exports field #4", [INFO] [stdout] expect: None, [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/": { [INFO] [stdout] "browser": "/a/", [INFO] [stdout] "default": "/b/" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.mjs", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "incorrect exports field #4 (wildcard)", [INFO] [stdout] expect: None, [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/*": { [INFO] [stdout] "browser": "/a/", [INFO] [stdout] "default": "/b/" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.mjs", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "incorrect exports field #5", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/index": "./a/index.js" [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.mjs", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "incorrect exports field #6", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/index.mjs": "./a/index.js" [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "incorrect exports field #7", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/index": { [INFO] [stdout] "browser": "./a/index.js", [INFO] [stdout] "default": "./b/index.js" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.mjs", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "incorrect exports field #8", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/index.mjs": { [INFO] [stdout] "browser": "./a/index.js", [INFO] [stdout] "default": "./b/index.js" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] // Requests that are not `./` does not apply to `package_exports_resolve` [INFO] [stdout] // TestCase { [INFO] [stdout] // name: "incorrect request #1", [INFO] [stdout] // expect: None, [INFO] [stdout] // exports_field: exports_field(json!({ [INFO] [stdout] // "./utils/": "./a/" [INFO] [stdout] // })), [INFO] [stdout] // request: "/utils/index.mjs", [INFO] [stdout] // condition_names: vec![], [INFO] [stdout] // }, [INFO] [stdout] // TestCase { [INFO] [stdout] // name: "incorrect request #2", [INFO] [stdout] // expect: None, [INFO] [stdout] // exports_field: exports_field(json!({ [INFO] [stdout] // "./utils/": { [INFO] [stdout] // "browser": "./a/", [INFO] [stdout] // "default": "./b/" [INFO] [stdout] // } [INFO] [stdout] // })), [INFO] [stdout] // request: "/utils/index.mjs", [INFO] [stdout] // condition_names: vec!["browser"], [INFO] [stdout] // }, [INFO] [stdout] // TestCase { [INFO] [stdout] // name: "incorrect request #3", [INFO] [stdout] // expect: None, [INFO] [stdout] // exports_field: exports_field(json!({ [INFO] [stdout] // "./utils/": { [INFO] [stdout] // "browser": "./a/", [INFO] [stdout] // "default": "./b/" [INFO] [stdout] // } [INFO] [stdout] // })), [INFO] [stdout] // request: "../utils/index.mjs", [INFO] [stdout] // condition_names: vec!["browser"], [INFO] [stdout] // }, [INFO] [stdout] // TestCase { [INFO] [stdout] // name: "incorrect request #4", [INFO] [stdout] // expect: None, [INFO] [stdout] // exports_field: exports_field(json!({ [INFO] [stdout] // "./utils/": { [INFO] [stdout] // "browser": "./a/", [INFO] [stdout] // "default": "./b/" [INFO] [stdout] // } [INFO] [stdout] // })), [INFO] [stdout] // request: "/utils/index.mjs/", [INFO] [stdout] // condition_names: vec!["browser"], [INFO] [stdout] // }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "backtracking package base #1", [INFO] [stdout] expect: Some(vec!["./dist/index"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./../../utils/": "./dist/" [INFO] [stdout] })), [INFO] [stdout] request: "./../../utils/index", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "backtracking package base #1 (wildcard)", [INFO] [stdout] expect: Some(vec!["./dist/index"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./../../utils/*": "./dist/*" [INFO] [stdout] })), [INFO] [stdout] request: "./../../utils/index", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "backtracking package base #2", [INFO] [stdout] expect: None, [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "../../utils/": "./dist/" [INFO] [stdout] })), [INFO] [stdout] request: "../../utils/index", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "backtracking package base #2 (wildcard)", [INFO] [stdout] expect: None, [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "../../utils/*": "./dist/*" [INFO] [stdout] })), [INFO] [stdout] request: "../../utils/index", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "backtracking package base #3", [INFO] [stdout] expect: None, [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/": "../src/" [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "backtracking package base #3 (wildcard)", [INFO] [stdout] expect: None, [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/*": "../src/*" [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] // enhanced-resolve does not handle backtracking here [INFO] [stdout] // TestCase { [INFO] [stdout] // name: "backtracking package base #4", [INFO] [stdout] // expect: Some(vec!["./../src/index"]), [INFO] [stdout] // exports_field: exports_field(json!({ [INFO] [stdout] // "./utils/": "./../src/" [INFO] [stdout] // })), [INFO] [stdout] // request: "./utils/index", [INFO] [stdout] // condition_names: vec![], [INFO] [stdout] // }, [INFO] [stdout] // TestCase { [INFO] [stdout] // name: "backtracking package base #4 (wildcard)", [INFO] [stdout] // expect: Some(vec!["./../src/index"]), [INFO] [stdout] // exports_field: exports_field(json!({ [INFO] [stdout] // "./utils/*": "./../src/*" [INFO] [stdout] // })), [INFO] [stdout] // request: "./utils/index", [INFO] [stdout] // condition_names: vec![], [INFO] [stdout] // }, [INFO] [stdout] // TestCase { [INFO] [stdout] // name: "backtracking package base #5", [INFO] [stdout] // expect: Some(vec!["./src/../index.js"]), [INFO] [stdout] // exports_field: exports_field(json!({ [INFO] [stdout] // "./utils/index": "./src/../index.js" [INFO] [stdout] // })), [INFO] [stdout] // request: "./utils/index", [INFO] [stdout] // condition_names: vec![], [INFO] [stdout] // }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "backtracking package base #6", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/../utils/index": "./src/../index.js" [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "backtracking package base #7", [INFO] [stdout] expect: None, [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/": { [INFO] [stdout] "browser": "../this/" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "backtracking package base #7", [INFO] [stdout] expect: None, [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/*": { [INFO] [stdout] "browser": "../this/*" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "backtracking package base #8", [INFO] [stdout] // We throw "InvalidPackageTarget" [INFO] [stdout] // expect: Some(vec!["./utils/../index"]), [INFO] [stdout] expect: None, [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/": { [INFO] [stdout] "browser": "./utils/../" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "backtracking package base #8 (wildcard)", [INFO] [stdout] // We throw "InvalidPackageTarget" [INFO] [stdout] // expect: Some(vec!["./utils/../index"]), [INFO] [stdout] expect: None, [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/*": { [INFO] [stdout] "browser": "./utils/../*" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "backtracking package base #9", [INFO] [stdout] expect: Some(vec!["./dist/index"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./": "./src/../../", [INFO] [stdout] "./dist/": "./dist/" [INFO] [stdout] })), [INFO] [stdout] request: "./dist/index", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "backtracking package base #9 (wildcard)", [INFO] [stdout] expect: Some(vec!["./dist/index"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./*": "./src/../../*", [INFO] [stdout] "./dist/*": "./dist/*" [INFO] [stdout] })), [INFO] [stdout] request: "./dist/index", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "backtracking target folder #1", [INFO] [stdout] // We return InvalidPackageTarget [INFO] [stdout] expect: None, [INFO] [stdout] // expect: Some(vec!["./dist/timezone/../../index"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/": "./dist/" [INFO] [stdout] })), [INFO] [stdout] request: "./utils/timezone/../../index", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "backtracking target folder #1 (wildcard)", [INFO] [stdout] // We return InvalidPackageTarget [INFO] [stdout] expect: None, [INFO] [stdout] // expect: Some(vec!["./dist/timezone/../../index"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/*": "./dist/*" [INFO] [stdout] })), [INFO] [stdout] request: "./utils/timezone/../../index", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "backtracking target folder #2", [INFO] [stdout] // We return InvalidPackageTarget [INFO] [stdout] expect: None, [INFO] [stdout] // expect: Some(vec!["./dist/timezone/../index"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/": "./dist/" [INFO] [stdout] })), [INFO] [stdout] request: "./utils/timezone/../index", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "backtracking target folder #2 (wildcard)", [INFO] [stdout] // We return InvalidPackageTarget [INFO] [stdout] expect: None, [INFO] [stdout] // expect: Some(vec!["./dist/timezone/../index"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/*": "./dist/*" [INFO] [stdout] })), [INFO] [stdout] request: "./utils/timezone/../index", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "backtracking target folder #3", [INFO] [stdout] // We return InvalidPackageTarget [INFO] [stdout] expect: None, [INFO] [stdout] // expect: Some(vec!["./dist/target/../../index"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/": "./dist/target/" [INFO] [stdout] })), [INFO] [stdout] request: "./utils/../../index", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "backtracking target folder #3 (wildcard)", [INFO] [stdout] // We return InvalidPackageTarget [INFO] [stdout] expect: None, [INFO] [stdout] // expect: Some(vec!["./dist/target/../../index"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/*": "./dist/target/*" [INFO] [stdout] })), [INFO] [stdout] request: "./utils/../../index", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] // enhanced-resolve does not handle `node_modules` in target [INFO] [stdout] TestCase { [INFO] [stdout] name: "nested node_modules path #1", [INFO] [stdout] // We return InvalidPackageTarget [INFO] [stdout] expect: None, [INFO] [stdout] // expect: Some(vec!["./node_modules/lodash/dist/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/": { [INFO] [stdout] "browser": "./node_modules/" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/lodash/dist/index.js", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "nested node_modules path #1 (wildcard)", [INFO] [stdout] // We return InvalidPackageTarget [INFO] [stdout] expect: None, [INFO] [stdout] // expect: Some(vec!["./node_modules/lodash/dist/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/*": { [INFO] [stdout] "browser": "./node_modules/*" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/lodash/dist/index.js", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "nested node_modules path #2", [INFO] [stdout] // We return InvalidPackageTarget [INFO] [stdout] expect: None, [INFO] [stdout] // expect: Some(vec!["./utils/../node_modules/lodash/dist/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/": "./utils/../node_modules/" [INFO] [stdout] })), [INFO] [stdout] request: "./utils/lodash/dist/index.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "nested node_modules path #2 (wildcard)", [INFO] [stdout] // We return InvalidPackageTarget [INFO] [stdout] expect: None, [INFO] [stdout] // expect: Some(vec!["./utils/../node_modules/lodash/dist/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/*": "./utils/../node_modules/*" [INFO] [stdout] })), [INFO] [stdout] request: "./utils/lodash/dist/index.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "nested mapping #1", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/": { [INFO] [stdout] "browser": { [INFO] [stdout] "webpack": "./", [INFO] [stdout] "default": { [INFO] [stdout] "node": "./node/" [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.js", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "nested mapping #1 (wildcard)", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/*": { [INFO] [stdout] "browser": { [INFO] [stdout] "webpack": "./*", [INFO] [stdout] "default": { [INFO] [stdout] "node": "./node/*" [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.js", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "nested mapping #2", [INFO] [stdout] expect: Some(vec!["./index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/": { [INFO] [stdout] "browser": { [INFO] [stdout] "webpack": [ [INFO] [stdout] "./", [INFO] [stdout] "./node/" [INFO] [stdout] ], [INFO] [stdout] "default": { [INFO] [stdout] "node": "./node/" [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.js", [INFO] [stdout] condition_names: vec!["browser", "webpack"], [INFO] [stdout] }, [INFO] [stdout] // Duplicated due to not supporting returning an array [INFO] [stdout] TestCase { [INFO] [stdout] name: "nested mapping #2", [INFO] [stdout] expect: Some(vec!["./node/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/": { [INFO] [stdout] "browser": { [INFO] [stdout] "webpack": [ [INFO] [stdout] "./node/" [INFO] [stdout] ], [INFO] [stdout] "default": { [INFO] [stdout] "node": "./node/" [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.js", [INFO] [stdout] condition_names: vec!["browser", "webpack"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "nested mapping #2 (wildcard)", [INFO] [stdout] expect: Some(vec!["./index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/*": { [INFO] [stdout] "browser": { [INFO] [stdout] "webpack": [ [INFO] [stdout] "./*", [INFO] [stdout] "./node/*" [INFO] [stdout] ], [INFO] [stdout] "default": { [INFO] [stdout] "node": "./node/*" [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.js", [INFO] [stdout] condition_names: vec!["browser", "webpack"], [INFO] [stdout] }, [INFO] [stdout] // Duplicated due to not supporting returning an array [INFO] [stdout] TestCase { [INFO] [stdout] name: "nested mapping #2 (wildcard)", [INFO] [stdout] expect: Some(vec!["./node/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/*": { [INFO] [stdout] "browser": { [INFO] [stdout] "webpack": [ [INFO] [stdout] "./node/*" [INFO] [stdout] ], [INFO] [stdout] "default": { [INFO] [stdout] "node": "./node/*" [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.js", [INFO] [stdout] condition_names: vec!["browser", "webpack"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "nested mapping #3", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/": { [INFO] [stdout] "browser": { [INFO] [stdout] "webpack": [ [INFO] [stdout] "./", [INFO] [stdout] "./node/" [INFO] [stdout] ], [INFO] [stdout] "default": { [INFO] [stdout] "node": "./node/" [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.js", [INFO] [stdout] condition_names: vec!["webpack"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "nested mapping #3 (wildcard)", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/*": { [INFO] [stdout] "browser": { [INFO] [stdout] "webpack": [ [INFO] [stdout] "./*", [INFO] [stdout] "./node/*" [INFO] [stdout] ], [INFO] [stdout] "default": { [INFO] [stdout] "node": "./node/*" [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.js", [INFO] [stdout] condition_names: vec!["webpack"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "nested mapping #4", [INFO] [stdout] expect: Some(vec!["./node/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/": { [INFO] [stdout] "browser": { [INFO] [stdout] "webpack": [ [INFO] [stdout] "./", [INFO] [stdout] "./node/" [INFO] [stdout] ], [INFO] [stdout] "default": { [INFO] [stdout] "node": "./node/" [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.js", [INFO] [stdout] condition_names: vec!["node", "browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "nested mapping #4 (wildcard)", [INFO] [stdout] expect: Some(vec!["./node/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/*": { [INFO] [stdout] "browser": { [INFO] [stdout] "webpack": [ [INFO] [stdout] "./*", [INFO] [stdout] "./node/*" [INFO] [stdout] ], [INFO] [stdout] "default": { [INFO] [stdout] "node": "./node/*" [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.js", [INFO] [stdout] condition_names: vec!["node", "browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "nested mapping #5", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/": { [INFO] [stdout] "browser": { [INFO] [stdout] "webpack": [ [INFO] [stdout] "./", [INFO] [stdout] "./node/" [INFO] [stdout] ], [INFO] [stdout] "default": { [INFO] [stdout] "node": { [INFO] [stdout] "webpack": [ [INFO] [stdout] "./wpck/" [INFO] [stdout] ] [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.js", [INFO] [stdout] condition_names: vec!["browser", "node"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "nested mapping #5 (wildcard)", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/*": { [INFO] [stdout] "browser": { [INFO] [stdout] "webpack": [ [INFO] [stdout] "./*", [INFO] [stdout] "./node/*" [INFO] [stdout] ], [INFO] [stdout] "default": { [INFO] [stdout] "node": { [INFO] [stdout] "webpack": [ [INFO] [stdout] "./wpck/*" [INFO] [stdout] ] [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.js", [INFO] [stdout] condition_names: vec!["browser", "node"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "nested mapping #6", [INFO] [stdout] expect: Some(vec!["./index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/": { [INFO] [stdout] "browser": { [INFO] [stdout] "webpack": [ [INFO] [stdout] "./", [INFO] [stdout] "./node/" [INFO] [stdout] ], [INFO] [stdout] "default": { [INFO] [stdout] "node": { [INFO] [stdout] "webpack": [ [INFO] [stdout] "./wpck/" [INFO] [stdout] ] [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.js", [INFO] [stdout] condition_names: vec!["browser", "node", "webpack"], [INFO] [stdout] }, [INFO] [stdout] // Duplicated due to not supporting returning an array [INFO] [stdout] TestCase { [INFO] [stdout] name: "nested mapping #6", [INFO] [stdout] expect: Some(vec!["./node/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/": { [INFO] [stdout] "browser": { [INFO] [stdout] "webpack": [ [INFO] [stdout] "./node/" [INFO] [stdout] ], [INFO] [stdout] "default": { [INFO] [stdout] "node": { [INFO] [stdout] "webpack": [ [INFO] [stdout] "./wpck/" [INFO] [stdout] ] [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.js", [INFO] [stdout] condition_names: vec!["browser", "node", "webpack"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "nested mapping #6 (wildcard)", [INFO] [stdout] expect: Some(vec!["./index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/*": { [INFO] [stdout] "browser": { [INFO] [stdout] "webpack": [ [INFO] [stdout] "./*", [INFO] [stdout] "./node/*" [INFO] [stdout] ], [INFO] [stdout] "default": { [INFO] [stdout] "node": { [INFO] [stdout] "webpack": [ [INFO] [stdout] "./wpck/*" [INFO] [stdout] ] [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.js", [INFO] [stdout] condition_names: vec!["browser", "node", "webpack"], [INFO] [stdout] }, [INFO] [stdout] // Duplicated due to not supporting returning an array [INFO] [stdout] TestCase { [INFO] [stdout] name: "nested mapping #6 (wildcard)", [INFO] [stdout] expect: Some(vec!["./node/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./utils/*": { [INFO] [stdout] "browser": { [INFO] [stdout] "webpack": [ [INFO] [stdout] "./node/*" [INFO] [stdout] ], [INFO] [stdout] "default": { [INFO] [stdout] "node": { [INFO] [stdout] "webpack": [ [INFO] [stdout] "./wpck/*" [INFO] [stdout] ] [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./utils/index.js", [INFO] [stdout] condition_names: vec!["browser", "node", "webpack"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "nested mapping #7", [INFO] [stdout] expect: Some(vec!["./y.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./a.js": { [INFO] [stdout] "abc": { [INFO] [stdout] "def": "./x.js" [INFO] [stdout] }, [INFO] [stdout] "ghi": "./y.js" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./a.js", [INFO] [stdout] condition_names: vec!["abc", "ghi"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "nested mapping #8", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./a.js": { [INFO] [stdout] "abc": { [INFO] [stdout] "def": "./x.js", [INFO] [stdout] "default": [] [INFO] [stdout] }, [INFO] [stdout] "ghi": "./y.js" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./a.js", [INFO] [stdout] condition_names: vec!["abc", "ghi"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "syntax sugar #1", [INFO] [stdout] expect: Some(vec!["./main.js"]), [INFO] [stdout] exports_field: exports_field(json!("./main.js")), [INFO] [stdout] request: ".", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "syntax sugar #2", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!("./main.js")), [INFO] [stdout] request: "./lib.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "syntax sugar #3", [INFO] [stdout] expect: Some(vec!["./a.js"]), [INFO] [stdout] exports_field: exports_field(json!(["./a.js", "./b.js"])), [INFO] [stdout] request: ".", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] // Duplicated due to not supporting returning an array [INFO] [stdout] TestCase { [INFO] [stdout] name: "syntax sugar #3", [INFO] [stdout] expect: Some(vec!["./b.js"]), [INFO] [stdout] exports_field: exports_field(json!(["./b.js"])), [INFO] [stdout] request: ".", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "syntax sugar #4", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!(["./a.js", "./b.js"])), [INFO] [stdout] request: "./lib.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "syntax sugar #5", [INFO] [stdout] expect: Some(vec!["./index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "browser": { [INFO] [stdout] "default": "./index.js" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: ".", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "syntax sugar #6", [INFO] [stdout] expect: Some(vec![]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "browser": { [INFO] [stdout] "default": "./index.js" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./lib.js", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "syntax sugar #7", [INFO] [stdout] expect: None, [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./node": "./node.js", [INFO] [stdout] "browser": { [INFO] [stdout] "default": "./index.js" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: ".", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "syntax sugar #8", [INFO] [stdout] expect: None, [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "browser": { [INFO] [stdout] "default": "./index.js" [INFO] [stdout] }, [INFO] [stdout] "./node": "./node.js" [INFO] [stdout] })), [INFO] [stdout] request: ".", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "wildcard longest #1", [INFO] [stdout] expect: Some(vec!["./abc/d"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./ab*": "./ab/*", [INFO] [stdout] "./abc*": "./abc/*", [INFO] [stdout] "./a*": "./a/*" [INFO] [stdout] })), [INFO] [stdout] request: "./abcd", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "wildcard longest #2", [INFO] [stdout] expect: Some(vec!["./abc/d/e"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./ab*": "./ab/*", [INFO] [stdout] "./abc*": "./abc/*", [INFO] [stdout] "./a*": "./a/*" [INFO] [stdout] })), [INFO] [stdout] request: "./abcd/e", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "wildcard longest #3", [INFO] [stdout] expect: Some(vec!["./abc/d"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./x/ab*": "./ab/*", [INFO] [stdout] "./x/abc*": "./abc/*", [INFO] [stdout] "./x/a*": "./a/*" [INFO] [stdout] })), [INFO] [stdout] request: "./x/abcd", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "wildcard longest #4", [INFO] [stdout] expect: Some(vec!["./abc/d/e"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./x/ab*": "./ab/*", [INFO] [stdout] "./x/abc*": "./abc/*", [INFO] [stdout] "./x/a*": "./a/*" [INFO] [stdout] })), [INFO] [stdout] request: "./x/abcd/e", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "path tree edge case #1", [INFO] [stdout] expect: Some(vec!["./A/b/d.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./a/": "./A/", [INFO] [stdout] "./a/b/c": "./c.js" [INFO] [stdout] })), [INFO] [stdout] request: "./a/b/d.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "path tree edge case #1 (wildcard)", [INFO] [stdout] expect: Some(vec!["./A/b/d.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./a/*": "./A/*", [INFO] [stdout] "./a/b/c": "./c.js" [INFO] [stdout] })), [INFO] [stdout] request: "./a/b/d.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "path tree edge case #2", [INFO] [stdout] expect: Some(vec!["./A/c.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./a/": "./A/", [INFO] [stdout] "./a/b": "./b.js" [INFO] [stdout] })), [INFO] [stdout] request: "./a/c.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "path tree edge case #2 (wildcard)", [INFO] [stdout] expect: Some(vec!["./A/c.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./a/*": "./A/*", [INFO] [stdout] "./a/b": "./b.js" [INFO] [stdout] })), [INFO] [stdout] request: "./a/c.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "path tree edge case #3", [INFO] [stdout] expect: Some(vec!["./A/b/d/c.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./a/": "./A/", [INFO] [stdout] "./a/b/c/d": "./c.js" [INFO] [stdout] })), [INFO] [stdout] request: "./a/b/d/c.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "path tree edge case #3 (wildcard)", [INFO] [stdout] expect: Some(vec!["./A/b/d/c.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./a/*": "./A/*", [INFO] [stdout] "./a/b/c/d": "./c.js" [INFO] [stdout] })), [INFO] [stdout] request: "./a/b/d/c.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "wildcard pattern #1", [INFO] [stdout] expect: Some(vec!["./A/b.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./a/*.js": "./A/*.js" [INFO] [stdout] })), [INFO] [stdout] request: "./a/b.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "wildcard pattern #2", [INFO] [stdout] expect: Some(vec!["./A/b/c.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./a/*.js": "./A/*.js" [INFO] [stdout] })), [INFO] [stdout] request: "./a/b/c.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "wildcard pattern #3", [INFO] [stdout] expect: Some(vec!["./A/b/c.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./a/*/c.js": "./A/*/c.js" [INFO] [stdout] })), [INFO] [stdout] request: "./a/b/c.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "wildcard pattern #4", [INFO] [stdout] expect: Some(vec!["./A/b/b.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./a/*/c.js": "./A/*/*.js" [INFO] [stdout] })), [INFO] [stdout] request: "./a/b/c.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "wildcard pattern #5", [INFO] [stdout] expect: Some(vec!["./browser/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./lib/*": { [INFO] [stdout] "browser": [ [INFO] [stdout] "./browser/*" [INFO] [stdout] ] [INFO] [stdout] }, [INFO] [stdout] "./dist/*.js": { [INFO] [stdout] "node": "./*.js", [INFO] [stdout] "default": "./browser/*.js" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./dist/index.js", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "wildcard pattern #5", [INFO] [stdout] expect: Some(vec!["./browser/index.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./lib/*": { [INFO] [stdout] "browser": [ [INFO] [stdout] "./browser/*" [INFO] [stdout] ] [INFO] [stdout] }, [INFO] [stdout] "./dist/*.js": { [INFO] [stdout] "node": "./*.js", [INFO] [stdout] "default": "./browser/*.js" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./lib/index.js", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "wildcard pattern #6", [INFO] [stdout] expect: Some(vec!["./browser/foo/bar.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./lib/*/bar.js": { [INFO] [stdout] "browser": [ [INFO] [stdout] "./browser/*/bar.js" [INFO] [stdout] ] [INFO] [stdout] }, [INFO] [stdout] "./dist/*/bar.js": { [INFO] [stdout] "node": "./*.js", [INFO] [stdout] "default": "./browser/*.js" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./lib/foo/bar.js", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "wildcard pattern #6", [INFO] [stdout] expect: Some(vec!["./browser/foo.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./lib/*/bar.js": { [INFO] [stdout] "browser": [ [INFO] [stdout] "./browser/*/bar.js" [INFO] [stdout] ] [INFO] [stdout] }, [INFO] [stdout] "./dist/*/bar.js": { [INFO] [stdout] "node": "./*.js", [INFO] [stdout] "default": "./browser/*.js" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./dist/foo/bar.js", [INFO] [stdout] condition_names: vec!["browser"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "wildcard pattern #7", [INFO] [stdout] expect: Some(vec!["./browser/foo/default.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./lib/*/bar.js": { [INFO] [stdout] "browser": [ [INFO] [stdout] "./browser/*/bar.js" [INFO] [stdout] ] [INFO] [stdout] }, [INFO] [stdout] "./dist/*/bar.js": { [INFO] [stdout] "node": "./*.js", [INFO] [stdout] "default": "./browser/*/default.js" [INFO] [stdout] } [INFO] [stdout] })), [INFO] [stdout] request: "./dist/foo/bar.js", [INFO] [stdout] condition_names: vec!["default"], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "wildcard pattern #8", [INFO] [stdout] expect: Some(vec!["./A/b/b/b.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./a/*/c.js": "./A/*/*/*.js" [INFO] [stdout] })), [INFO] [stdout] request: "./a/b/c.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "wildcard pattern #9", [INFO] [stdout] expect: Some(vec!["./A/b/b/b.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./a/*/c.js": [ [INFO] [stdout] "./A/*/*/*.js", [INFO] [stdout] "./B/*/*/*.js" [INFO] [stdout] ] [INFO] [stdout] })), [INFO] [stdout] request: "./a/b/c.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] // Duplicated due to not supporting returning an array [INFO] [stdout] TestCase { [INFO] [stdout] name: "wildcard pattern #9", [INFO] [stdout] expect: Some(vec!["./B/b/b/b.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./a/*/c.js": [ [INFO] [stdout] "./B/*/*/*.js" [INFO] [stdout] ] [INFO] [stdout] })), [INFO] [stdout] request: "./a/b/c.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "wildcard pattern #10", [INFO] [stdout] expect: Some(vec!["./A/b/b/b.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./a/foo-*/c.js": "./A/*/*/*.js" [INFO] [stdout] })), [INFO] [stdout] request: "./a/foo-b/c.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "wildcard pattern #11", [INFO] [stdout] expect: Some(vec!["./A/b/b/b.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./a/*-foo/c.js": "./A/*/*/*.js" [INFO] [stdout] })), [INFO] [stdout] request: "./a/b-foo/c.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "wildcard pattern #12", [INFO] [stdout] expect: Some(vec!["./A/b/b/b.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./a/foo-*-foo/c.js": "./A/*/*/*.js" [INFO] [stdout] })), [INFO] [stdout] request: "./a/foo-b-foo/c.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "wildcard pattern #13", [INFO] [stdout] expect: Some(vec!["./A/b/c/d.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./a/foo-*-foo/c.js": "./A/b/c/d.js" [INFO] [stdout] })), [INFO] [stdout] request: "./a/foo-b-foo/c.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] TestCase { [INFO] [stdout] name: "wildcard pattern #14", [INFO] [stdout] expect: Some(vec!["./A/b/c/*.js"]), [INFO] [stdout] exports_field: exports_field(json!({ [INFO] [stdout] "./a/foo-foo/c.js": "./A/b/c/*.js" [INFO] [stdout] })), [INFO] [stdout] request: "./a/foo-foo/c.js", [INFO] [stdout] condition_names: vec![], [INFO] [stdout] }, [INFO] [stdout] ].into_boxed_slice()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_stack_arrays [INFO] [stdout] = note: `-W clippy::large-stack-arrays` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::large_stack_arrays)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty String is being created manually [INFO] [stdout] --> src/tests/incorrect_description_file.rs:41:19 [INFO] [stdout] | [INFO] [stdout] 41 | content: Some("".to_string()), [INFO] [stdout] | ^^^^^^^^^^^^^^ help: consider using: `String::new()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_string_new [INFO] [stdout] = note: `-W clippy::manual-string-new` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::manual_string_new)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-binding `let` on a future [INFO] [stdout] --> src/tests/missing.rs:101:3 [INFO] [stdout] | [INFO] [stdout] 101 | let _ = resolver.resolve_with_context(&f, "@scope-js/package-name/dir/router", &mut ctx); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider awaiting the future or dropping explicitly with `std::mem::drop` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_future [INFO] [stdout] = note: `-W clippy::let-underscore-future` implied by `-W clippy::all` [INFO] [stdout] = help: to override `-W clippy::all` add `#[allow(clippy::let_underscore_future)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-binding `let` on a future [INFO] [stdout] --> src/tests/missing.rs:102:3 [INFO] [stdout] | [INFO] [stdout] 102 | let _ = resolver.resolve_with_context(&f, "react-dom/client", &mut ctx); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider awaiting the future or dropping explicitly with `std::mem::drop` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_future [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/tests/package_json.rs:12:65 [INFO] [stdout] | [INFO] [stdout] 12 | let result = PackageJson::parse(mock_path.clone(), mock_path.clone(), json_with_bom).err(); [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/tests/package_json.rs:12:56 [INFO] [stdout] | [INFO] [stdout] 12 | let result = PackageJson::parse(mock_path.clone(), mock_path.clone(), json_with_bom).err(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] = note: `-W clippy::redundant-clone` implied by `-W clippy::nursery` [INFO] [stdout] = help: to override `-W clippy::nursery` add `#[allow(clippy::redundant_clone)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/tests/package_json.rs:28:65 [INFO] [stdout] | [INFO] [stdout] 28 | let parsed = PackageJson::parse(mock_path.clone(), mock_path.clone(), json_with_bom).unwrap(); [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/tests/package_json.rs:28:56 [INFO] [stdout] | [INFO] [stdout] 28 | let parsed = PackageJson::parse(mock_path.clone(), mock_path.clone(), json_with_bom).unwrap(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `as_bytes()` on a string literal [INFO] [stdout] --> src/tests/package_json.rs:26:25 [INFO] [stdout] | [INFO] [stdout] 26 | let json_with_bom = r##"{"name": "example-package"}"##.as_bytes().to_vec(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `br##"{"name": "example-package"}"##` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stdout] = note: `-W clippy::string-lit-as-bytes` implied by `-W clippy::nursery` [INFO] [stdout] = help: to override `-W clippy::nursery` add `#[allow(clippy::string_lit_as_bytes)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/tests/package_json.rs:38:69 [INFO] [stdout] | [INFO] [stdout] 38 | let parsed_err = PackageJson::parse(mock_path.clone(), mock_path.clone(), json_with_bom).err(); [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/tests/package_json.rs:38:60 [INFO] [stdout] | [INFO] [stdout] 38 | let parsed_err = PackageJson::parse(mock_path.clone(), mock_path.clone(), json_with_bom).err(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `as_bytes()` on a string literal [INFO] [stdout] --> src/tests/package_json.rs:36:25 [INFO] [stdout] | [INFO] [stdout] 36 | let json_with_bom = r##"{"broken":"string"##.as_bytes().to_vec(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `br##"{"broken":"string"##` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant clone [INFO] [stdout] --> src/tests/package_json.rs:55:70 [INFO] [stdout] | [INFO] [stdout] 55 | let parse_error = PackageJson::parse(mock_path.clone(), mock_path.clone(), json_with_bom) [INFO] [stdout] | ^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] note: this value is dropped without further use [INFO] [stdout] --> src/tests/package_json.rs:55:61 [INFO] [stdout] | [INFO] [stdout] 55 | let parse_error = PackageJson::parse(mock_path.clone(), mock_path.clone(), json_with_bom) [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `as_bytes()` on a string literal [INFO] [stdout] --> src/tests/package_json.rs:53:25 [INFO] [stdout] | [INFO] [stdout] 53 | let json_with_bom = " ".as_bytes().to_vec(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b" "` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/tests/restrictions.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | path.as_os_str().to_str().map_or(false, |s| re.is_match(s)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `-W clippy::unnecessary-map-or` implied by `-W clippy::all` [INFO] [stdout] = help: to override `-W clippy::all` add `#[allow(clippy::unnecessary_map_or)]` [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 17 - path.as_os_str().to_str().map_or(false, |s| re.is_match(s)) [INFO] [stdout] 17 + path.as_os_str().to_str().is_some_and(|s| re.is_match(s)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/tests/restrictions.rs:35:7 [INFO] [stdout] | [INFO] [stdout] 35 | path.as_os_str().to_str().map_or(false, |s| re.is_match(s)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 35 - path.as_os_str().to_str().map_or(false, |s| re.is_match(s)) [INFO] [stdout] 35 + path.as_os_str().to_str().is_some_and(|s| re.is_match(s)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/tests/restrictions.rs:68:7 [INFO] [stdout] | [INFO] [stdout] 68 | path.as_os_str().to_str().map_or(false, |s| re.is_match(s)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 68 - path.as_os_str().to_str().map_or(false, |s| re.is_match(s)) [INFO] [stdout] 68 + path.as_os_str().to_str().is_some_and(|s| re.is_match(s)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/tests/restrictions.rs:86:7 [INFO] [stdout] | [INFO] [stdout] 86 | path.as_os_str().to_str().map_or(false, |s| re.is_match(s)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 86 - path.as_os_str().to_str().map_or(false, |s| re.is_match(s)) [INFO] [stdout] 86 + path.as_os_str().to_str().is_some_and(|s| re.is_match(s)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/tests/restrictions.rs:105:7 [INFO] [stdout] | [INFO] [stdout] 105 | path.as_os_str().to_str().map_or(false, |s| re.is_match(s)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 105 - path.as_os_str().to_str().map_or(false, |s| re.is_match(s)) [INFO] [stdout] 105 + path.as_os_str().to_str().is_some_and(|s| re.is_match(s)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `ResolveContext::default()` is more clear than this expression [INFO] [stdout] --> src/tests/symlink.rs:144:24 [INFO] [stdout] | [INFO] [stdout] 144 | let mut ctx = &mut Default::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `ResolveContext::default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#default_trait_access [INFO] [stdout] = note: `-W clippy::default-trait-access` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::default_trait_access)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/tests/symlink.rs:146:45 [INFO] [stdout] | [INFO] [stdout] 146 | .resolve_with_context(&path, request, &mut ctx) [INFO] [stdout] | ^^^^^^^^ help: change this to: `ctx` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `-W clippy::needless-borrow` implied by `-W clippy::all` [INFO] [stdout] = help: to override `-W clippy::all` add `#[allow(clippy::needless_borrow)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `map_or` [INFO] [stdout] --> src/tests/tsconfig_paths.rs:38:23 [INFO] [stdout] | [INFO] [stdout] 38 | let path = subdir.map_or(dir.clone(), |subdir| dir.join(subdir)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `map_or_else(|| dir.clone(), |subdir| dir.join(subdir))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stdout] = note: `-W clippy::or-fun-call` implied by `-W clippy::nursery` [INFO] [stdout] = help: to override `-W clippy::nursery` add `#[allow(clippy::or_fun_call)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::is_some_and` [INFO] [stdout] --> src/lib.rs:1130:10 [INFO] [stdout] | [INFO] [stdout] 1130 | if new_specifier [INFO] [stdout] | __________^ [INFO] [stdout] 1131 | | .strip_prefix("./") [INFO] [stdout] 1132 | | .filter(|s| path.ends_with(Path::new(s))) [INFO] [stdout] 1133 | | .is_some() [INFO] [stdout] | |__________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_variant_and [INFO] [stdout] = note: `-W clippy::manual-is-variant-and` implied by `-W clippy::pedantic` [INFO] [stdout] = help: to override `-W clippy::pedantic` add `#[allow(clippy::manual_is_variant_and)]` [INFO] [stdout] help: use [INFO] [stdout] | [INFO] [stdout] 1130 ~ if new_specifier [INFO] [stdout] 1131 + .strip_prefix("./").as_ref().is_some_and(|s| path.ends_with(Path::new(s))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 20.47s [INFO] running `Command { std: "docker" "inspect" "f5b3980b0c21b43bf81a93b1f7c3ee2a1a6bedd5d09205d9cac6985ba906e9b0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f5b3980b0c21b43bf81a93b1f7c3ee2a1a6bedd5d09205d9cac6985ba906e9b0", kill_on_drop: false }` [INFO] [stdout] f5b3980b0c21b43bf81a93b1f7c3ee2a1a6bedd5d09205d9cac6985ba906e9b0