use wit_parser::{Resolve, ResolveError, ResolveErrorKind};
fn outer_resolve_error(err: &anyhow::Error) -> &ResolveError {
err.downcast_ref::<ResolveError>()
.expect("expected the outermost error to be a ResolveError")
}
#[test]
fn push_str_returns_downcastable_error() {
let mut resolve = Resolve::new();
let err = resolve
.push_str(
"test.wit",
"package foo:foo;\nworld w { import some:dependency/iface; }",
)
.expect_err("expected resolve to fail");
let re = outer_resolve_error(&err);
assert!(
matches!(re.kind(), ResolveErrorKind::PackageNotFound { .. }),
"expected PackageNotFound, got: {:?}",
re.kind()
);
}
#[test]
fn push_file_returns_downcastable_error() {
let mut resolve = Resolve::new();
let err = resolve
.push_file("tests/ui/parse-fail/unresolved-interface4.wit")
.expect_err("expected resolve to fail");
let re = outer_resolve_error(&err);
assert!(
matches!(re.kind(), ResolveErrorKind::PackageNotFound { .. }),
"expected PackageNotFound, got: {:?}",
re.kind()
);
}
#[test]
fn push_dir_returns_downcastable_error() {
let mut resolve = Resolve::new();
let err = resolve
.push_dir("tests/ui/parse-fail/bad-pkg6")
.expect_err("expected resolve to fail");
let re = outer_resolve_error(&err);
assert!(
matches!(re.kind(), ResolveErrorKind::PackageNotFound { .. }),
"expected PackageNotFound, got: {:?}",
re.kind()
);
}