summaryrefslogtreecommitdiffstats
path: root/vendor/rowan/tests/tidy.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/rowan/tests/tidy.rs')
-rw-r--r--vendor/rowan/tests/tidy.rs46
1 files changed, 46 insertions, 0 deletions
diff --git a/vendor/rowan/tests/tidy.rs b/vendor/rowan/tests/tidy.rs
new file mode 100644
index 000000000..a716e35b2
--- /dev/null
+++ b/vendor/rowan/tests/tidy.rs
@@ -0,0 +1,46 @@
+use std::{
+ env,
+ path::{Path, PathBuf},
+ process::{Command, Stdio},
+};
+
+fn project_root() -> PathBuf {
+ PathBuf::from(
+ env::var("CARGO_MANIFEST_DIR").unwrap_or_else(|_| env!("CARGO_MANIFEST_DIR").to_owned()),
+ )
+}
+
+fn run(cmd: &str, dir: impl AsRef<Path>) -> Result<(), ()> {
+ let mut args: Vec<_> = cmd.split_whitespace().collect();
+ let bin = args.remove(0);
+ println!("> {}", cmd);
+ let output = Command::new(bin)
+ .args(args)
+ .current_dir(dir)
+ .stdin(Stdio::null())
+ .stdout(Stdio::piped())
+ .stderr(Stdio::inherit())
+ .output()
+ .map_err(drop)?;
+ if output.status.success() {
+ Ok(())
+ } else {
+ let stdout = String::from_utf8(output.stdout).map_err(drop)?;
+ print!("{}", stdout);
+ Err(())
+ }
+}
+
+#[test]
+fn check_code_formatting() {
+ let dir = project_root();
+ if run("rustfmt +stable --version", &dir).is_err() {
+ panic!(
+ "failed to run rustfmt from toolchain 'stable'; \
+ please run `rustup component add rustfmt --toolchain stable` to install it.",
+ );
+ }
+ if run("cargo +stable fmt -- --check", &dir).is_err() {
+ panic!("code is not properly formatted; please format the code by running `cargo fmt`")
+ }
+}