Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'lib/smol_str/tests/tidy.rs')
-rw-r--r--lib/smol_str/tests/tidy.rs48
1 files changed, 48 insertions, 0 deletions
diff --git a/lib/smol_str/tests/tidy.rs b/lib/smol_str/tests/tidy.rs
new file mode 100644
index 0000000000..743fa5add9
--- /dev/null
+++ b/lib/smol_str/tests/tidy.rs
@@ -0,0 +1,48 @@
+#![allow(clippy::disallowed_methods, clippy::print_stdout)]
+#![cfg(not(miri))]
+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`")
+ }
+}