diff --git a/ninja_env/Cargo.toml b/ninja_env/Cargo.toml index 69f65149..3b4262f9 100644 --- a/ninja_env/Cargo.toml +++ b/ninja_env/Cargo.toml @@ -3,5 +3,46 @@ name = "ninja_env" version = "0.1.0" edition = "2024" rust-version = "1.85.0" +publish = false [dependencies] + +[lints.clippy] +pedantic = { level = "warn", priority = -1 } + +# 1. hygiene +# Unfortunately, due to an 'unused-braces' false positive with +# single line rstest fixtures, and the fact that fixtures do +# not permit 'expect' attributes, we must disable this deny. +# allow_attributes = "deny" +allow_attributes_without_reason = "deny" +blanket_clippy_restriction_lints = "deny" + +# 2. debugging leftovers +# Disabled pending further investigation into applicability. +# dbg_macro = "deny" +# print_stdout = "deny" +# print_stderr = "deny" + +# 3. panic-prone operations +unwrap_used = "deny" +# Expect used in tests. Discouraged in implementation code. +# expect_used = "deny" +indexing_slicing = "deny" +string_slice = "deny" +integer_division = "deny" +integer_division_remainder_used = "deny" + +# 4. portability +host_endian_bytes = "deny" +little_endian_bytes = "deny" +big_endian_bytes = "deny" + +# 5. nursery idiom polish +or_fun_call = "deny" +option_if_let_else = "deny" +use_self = "deny" +string_lit_as_bytes = "deny" + +# 6. numerical foot-guns +float_arithmetic = "deny" diff --git a/test_support/src/env.rs b/test_support/src/env.rs index a18ebd3a..97f4d9b2 100644 --- a/test_support/src/env.rs +++ b/test_support/src/env.rs @@ -104,12 +104,12 @@ pub struct NinjaEnvGuard { /// /// ``` /// use ninja_env::NINJA_ENV; -/// use std::path::Path; /// use test_support::env::{SystemEnv, override_ninja_env}; /// /// let env = SystemEnv::new(); -/// let guard = override_ninja_env(&env, Path::new("/tmp/ninja")); -/// assert_eq!(std::env::var(NINJA_ENV).unwrap(), "/tmp/ninja"); +/// let path = std::env::temp_dir().join("ninja"); +/// let guard = override_ninja_env(&env, path.as_path()); +/// assert_eq!(std::env::var(NINJA_ENV).unwrap(), path.to_string_lossy()); /// drop(guard); /// assert!(std::env::var(NINJA_ENV).is_err()); /// ``` diff --git a/tests/ninja_env_tests.rs b/tests/ninja_env_tests.rs index 6eff11e3..c69eac93 100644 --- a/tests/ninja_env_tests.rs +++ b/tests/ninja_env_tests.rs @@ -1,25 +1,27 @@ //! Tests for overriding the `NINJA_ENV` variable via a mock environment. use mockable::MockEnv; -use netsuke::runner::NINJA_ENV; +use ninja_env::NINJA_ENV; use rstest::rstest; use serial_test::serial; -use std::path::Path; use test_support::{env::override_ninja_env, env_lock::EnvLock}; #[rstest] #[serial] fn override_ninja_env_sets_and_restores() { let before = std::env::var_os(NINJA_ENV); - let original = before.clone().map(|v| v.to_string_lossy().into_owned()); + let original = before + .as_ref() + .and_then(|v| v.to_str().map(ToOwned::to_owned)); let mut env = MockEnv::new(); env.expect_raw() .withf(|k| k == NINJA_ENV) .returning(move |_| original.clone().ok_or(std::env::VarError::NotPresent)); { - let _guard = override_ninja_env(&env, Path::new("/tmp/ninja")); + let target = std::env::temp_dir().join("ninja"); + let _guard = override_ninja_env(&env, target.as_path()); let after = std::env::var(NINJA_ENV).expect("NINJA_ENV should be set after override"); - assert_eq!(after, "/tmp/ninja"); + assert_eq!(after, target.to_string_lossy().as_ref()); } let restored = std::env::var_os(NINJA_ENV); assert_eq!(restored, before); @@ -40,9 +42,10 @@ fn override_ninja_env_unset_removes_variable() { .withf(|k| k == NINJA_ENV) .returning(|_| Err(std::env::VarError::NotPresent)); { - let _guard = override_ninja_env(&env, Path::new("/tmp/ninja")); + let target = std::env::temp_dir().join("ninja"); + let _guard = override_ninja_env(&env, target.as_path()); let after = std::env::var(NINJA_ENV).expect("NINJA_ENV should be set after override"); - assert_eq!(after, "/tmp/ninja"); + assert_eq!(after, target.to_string_lossy().as_ref()); } assert!(std::env::var(NINJA_ENV).is_err());