use rustc_hash::FxHashSet;
use crate::{JSONError, Resolution, ResolveContext, ResolveError, ResolveOptions, Resolver};
#[test]
fn incorrect_description_file_1() {
let f = super::fixture().join("incorrect-package");
let mut ctx = ResolveContext::default();
let resolution = Resolver::default().resolve_with_context(f.join("pack1"), ".", &mut ctx);
let error = ResolveError::Json(JSONError {
path: f.join("pack1/package.json"),
message: String::from("EOF while parsing a value at line 3 column 0"),
line: 3,
column: 0,
});
assert_eq!(resolution, Err(error));
assert_eq!(ctx.file_dependencies, FxHashSet::from_iter([f.join("pack1/package.json")]));
assert!(ctx.missing_dependencies.is_empty());
}
#[test]
fn incorrect_description_file_2() {
let f = super::fixture().join("incorrect-package");
let resolution = Resolver::default().resolve(f.join("pack2"), ".");
let error = ResolveError::Json(JSONError {
path: f.join("pack2/package.json"),
message: String::from("EOF while parsing a value at line 1 column 0"),
line: 1,
column: 0,
});
assert_eq!(resolution, Err(error));
}
#[test]
fn incorrect_description_file_3() {
let f = super::fixture().join("incorrect-package");
let resolution = Resolver::default().resolve(f.join("pack2"), ".");
assert!(resolution.is_err());
}
#[test]
fn no_description_file() {
let f = super::fixture_root().join("enhanced_resolve");
let resolver = Resolver::default();
assert_eq!(
resolver.resolve(&f, ".").map(Resolution::into_path_buf),
Ok(f.join("lib/index.js"))
);
let resolver =
Resolver::new(ResolveOptions { description_files: vec![], ..ResolveOptions::default() });
assert_eq!(resolver.resolve(&f, "."), Err(ResolveError::NotFound(".".into())));
}