2 use std::path::PathBuf;
4 use super::read_config;
6 use crate::modules::{ModuleResolutionError, ModuleResolutionErrorKind};
7 use crate::{ErrorKind, Input, Session};
10 fn parser_errors_in_submods_are_surfaced() {
11 // See also https://github.com/rust-lang/rustfmt/issues/4126
12 let filename = "tests/parser/issue-4126/lib.rs";
13 let input_file = PathBuf::from(filename);
14 let exp_mod_name = "invalid";
15 let config = read_config(&input_file);
16 let mut session = Session::<io::Stdout>::new(config, None);
17 if let Err(ErrorKind::ModuleResolutionError(ModuleResolutionError { module, kind })) =
18 session.format(Input::File(filename.into()))
20 assert_eq!(&module, exp_mod_name);
21 if let ModuleResolutionErrorKind::ParseError {
22 file: unparseable_file,
27 PathBuf::from("tests/parser/issue-4126/invalid.rs"),
30 panic!("Expected parser error");
33 panic!("Expected ModuleResolution operation error");
37 fn assert_parser_error(filename: &str) {
38 let file = PathBuf::from(filename);
39 let config = read_config(&file);
40 let mut session = Session::<io::Stdout>::new(config, None);
41 let _ = session.format(Input::File(filename.into())).unwrap();
42 assert!(session.has_parsing_errors());
46 fn parser_creation_errors_on_entry_new_parser_from_file_panic() {
47 // See also https://github.com/rust-lang/rustfmt/issues/4418
48 let filename = "tests/parser/issue_4418.rs";
49 assert_parser_error(filename);
53 fn crate_parsing_errors_on_unclosed_delims() {
54 // See also https://github.com/rust-lang/rustfmt/issues/4466
55 let filename = "tests/parser/unclosed-delims/issue_4466.rs";
56 assert_parser_error(filename);