diff options
| author | onur-ozkan <work@onurozkan.dev> | 2025-01-09 11:35:13 +0300 |
|---|---|---|
| committer | onur-ozkan <work@onurozkan.dev> | 2025-01-12 08:43:16 +0300 |
| commit | cacb4fe93a5c75eb4f69774a4ebf6d1549c95201 (patch) | |
| tree | e81de84df188ffa2fe7b5d9c017dee367f6f9123 | |
| parent | 9e1c9fd65417b04c3a0b63a4e0f8ffba50293867 (diff) | |
| download | rust-cacb4fe93a5c75eb4f69774a4ebf6d1549c95201.tar.gz rust-cacb4fe93a5c75eb4f69774a4ebf6d1549c95201.zip | |
add test coverage for `build_stamp` implementation
Signed-off-by: onur-ozkan <work@onurozkan.dev>
| -rw-r--r-- | src/bootstrap/src/utils/build_stamp.rs | 3 | ||||
| -rw-r--r-- | src/bootstrap/src/utils/build_stamp/tests.rs | 44 |
2 files changed, 47 insertions, 0 deletions
diff --git a/src/bootstrap/src/utils/build_stamp.rs b/src/bootstrap/src/utils/build_stamp.rs index 5450558c86e..d76b395709a 100644 --- a/src/bootstrap/src/utils/build_stamp.rs +++ b/src/bootstrap/src/utils/build_stamp.rs @@ -10,6 +10,9 @@ use crate::core::config::TargetSelection; use crate::utils::helpers::mtime; use crate::{Compiler, Mode, t}; +#[cfg(test)] +mod tests; + /// Manages a stamp file to track build state. The file is created in the given /// directory and can have custom content and name. #[derive(Clone)] diff --git a/src/bootstrap/src/utils/build_stamp/tests.rs b/src/bootstrap/src/utils/build_stamp/tests.rs new file mode 100644 index 00000000000..4e8a4307844 --- /dev/null +++ b/src/bootstrap/src/utils/build_stamp/tests.rs @@ -0,0 +1,44 @@ +use std::path::PathBuf; + +use crate::{BuildStamp, Config, Flags}; + +fn temp_dir() -> PathBuf { + let config = + Config::parse(Flags::parse(&["check".to_owned(), "--config=/does/not/exist".to_owned()])); + config.tempdir() +} + +#[test] +#[should_panic(expected = "prefix can not start or end with '.'")] +fn test_with_invalid_prefix() { + let dir = temp_dir(); + BuildStamp::new(&dir).with_prefix(".invalid"); +} + +#[test] +#[should_panic(expected = "prefix can not start or end with '.'")] +fn test_with_invalid_prefix2() { + let dir = temp_dir(); + BuildStamp::new(&dir).with_prefix("invalid."); +} + +#[test] +fn test_is_up_to_date() { + let dir = temp_dir(); + + let mut build_stamp = BuildStamp::new(&dir).with_stamp("v1.0.0"); + build_stamp.write().unwrap(); + + assert!( + build_stamp.is_up_to_date(), + "Expected stamp file to be up-to-date, but contents do not match the expected value." + ); + + build_stamp.stamp = "dummy value".to_owned(); + assert!( + !build_stamp.is_up_to_date(), + "Stamp should no longer be up-to-date as we changed its content right above." + ); + + build_stamp.remove().unwrap(); +} |
