#![cfg(all(feature = "build", feature = "tsx"))]
use std::path::Path;
#[test]
fn unresolved_bare_import_fails_the_build() {
let fixture = Path::new(env!("CARGO_MANIFEST_DIR")).join("tests/fixtures/unresolved-bare");
let out_dir = tempfile::tempdir().expect("tempdir");
std::fs::create_dir_all(fixture.join("client/node_modules")).expect("create node_modules");
unsafe {
std::env::set_var("CARGO_MANIFEST_DIR", &fixture);
std::env::set_var("OUT_DIR", out_dir.path());
std::env::remove_var("NEXTRS_SKIP_BUNDLE");
}
let err = nextrs::bundle::bundle_pages(&nextrs::bundle::BundleConfig {
app_dir: "app",
client_dir: "client",
client_alias: "@fixture/client",
public_dist: "public/dist",
..Default::default()
})
.expect_err("bundling a page with a missing bare dependency must fail");
let msg = err.to_string();
assert!(
msg.contains("unresolved bare imports"),
"error should name the failure class, got: {msg}"
);
assert!(
msg.contains("package.json"),
"error should point at the fix (add the dep to package.json), got: {msg}"
);
}