aboutsummaryrefslogtreecommitdiff
path: root/xtask/tests/cli.rs
diff options
context:
space:
mode:
Diffstat (limited to 'xtask/tests/cli.rs')
-rw-r--r--xtask/tests/cli.rs45
1 files changed, 45 insertions, 0 deletions
diff --git a/xtask/tests/cli.rs b/xtask/tests/cli.rs
new file mode 100644
index 000000000..609fd4d8b
--- /dev/null
+++ b/xtask/tests/cli.rs
@@ -0,0 +1,45 @@
1use ra_tools::{gen_tests, generate_boilerplate, project_root, run_rustfmt, Verify};
2use walkdir::WalkDir;
3
4#[test]
5fn generated_grammar_is_fresh() {
6 if let Err(error) = generate_boilerplate(Verify) {
7 panic!("{}. Please update it by running `cargo gen-syntax`", error);
8 }
9}
10
11#[test]
12fn generated_tests_are_fresh() {
13 if let Err(error) = gen_tests(Verify) {
14 panic!("{}. Please update tests by running `cargo gen-tests`", error);
15 }
16}
17
18#[test]
19fn check_code_formatting() {
20 if let Err(error) = run_rustfmt(Verify) {
21 panic!("{}. Please format the code by running `cargo format`", error);
22 }
23}
24
25#[test]
26fn no_todo() {
27 WalkDir::new(project_root().join("crates")).into_iter().for_each(|e| {
28 let e = e.unwrap();
29 if e.path().extension().map(|it| it != "rs").unwrap_or(true) {
30 return;
31 }
32 if e.path().ends_with("tests/cli.rs") {
33 return;
34 }
35 let text = std::fs::read_to_string(e.path()).unwrap();
36 if text.contains("TODO") || text.contains("TOOD") {
37 panic!(
38 "\nTODO markers should not be committed to the master branch,\n\
39 use FIXME instead\n\
40 {}\n",
41 e.path().display(),
42 )
43 }
44 })
45}