]> git.lizzy.rs Git - rust.git/blob - src/test/parser.rs
Make `--check` work when running from stdin. (#3896)
[rust.git] / src / test / parser.rs
1 use std::io;
2 use std::path::PathBuf;
3
4 use super::read_config;
5
6 use crate::modules::{ModuleResolutionError, ModuleResolutionErrorKind};
7 use crate::{ErrorKind, Input, Session};
8
9 #[test]
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()))
19     {
20         assert_eq!(&module, exp_mod_name);
21         if let ModuleResolutionErrorKind::ParseError {
22             file: unparseable_file,
23         } = kind
24         {
25             assert_eq!(
26                 unparseable_file,
27                 PathBuf::from("tests/parser/issue-4126/invalid.rs"),
28             );
29         } else {
30             panic!("Expected parser error");
31         }
32     } else {
33         panic!("Expected ModuleResolution operation error");
34     }
35 }
36
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());
43 }
44
45 #[test]
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);
50 }
51
52 #[test]
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);
57 }