summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_incremental/src/persist/fs/tests.rs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_incremental/src/persist/fs/tests.rs')
-rw-r--r--compiler/rustc_incremental/src/persist/fs/tests.rs84
1 files changed, 84 insertions, 0 deletions
diff --git a/compiler/rustc_incremental/src/persist/fs/tests.rs b/compiler/rustc_incremental/src/persist/fs/tests.rs
new file mode 100644
index 000000000..184796948
--- /dev/null
+++ b/compiler/rustc_incremental/src/persist/fs/tests.rs
@@ -0,0 +1,84 @@
+use super::*;
+
+#[test]
+fn test_all_except_most_recent() {
+ assert_eq!(
+ all_except_most_recent(vec![
+ (UNIX_EPOCH + Duration::new(4, 0), PathBuf::from("4"), None),
+ (UNIX_EPOCH + Duration::new(1, 0), PathBuf::from("1"), None),
+ (UNIX_EPOCH + Duration::new(5, 0), PathBuf::from("5"), None),
+ (UNIX_EPOCH + Duration::new(3, 0), PathBuf::from("3"), None),
+ (UNIX_EPOCH + Duration::new(2, 0), PathBuf::from("2"), None),
+ ])
+ .keys()
+ .cloned()
+ .collect::<FxHashSet<PathBuf>>(),
+ [PathBuf::from("1"), PathBuf::from("2"), PathBuf::from("3"), PathBuf::from("4"),]
+ .into_iter()
+ .collect::<FxHashSet<PathBuf>>()
+ );
+
+ assert_eq!(
+ all_except_most_recent(vec![]).keys().cloned().collect::<FxHashSet<PathBuf>>(),
+ FxHashSet::default()
+ );
+}
+
+#[test]
+fn test_timestamp_serialization() {
+ for i in 0..1_000u64 {
+ let time = UNIX_EPOCH + Duration::new(i * 1_434_578, (i as u32) * 239_000);
+ let s = timestamp_to_string(time);
+ assert_eq!(Ok(time), string_to_timestamp(&s));
+ }
+}
+
+#[test]
+fn test_find_source_directory_in_iter() {
+ let already_visited = FxHashSet::default();
+
+ // Find newest
+ assert_eq!(
+ find_source_directory_in_iter(
+ [
+ PathBuf::from("crate-dir/s-3234-0000-svh"),
+ PathBuf::from("crate-dir/s-2234-0000-svh"),
+ PathBuf::from("crate-dir/s-1234-0000-svh")
+ ]
+ .into_iter(),
+ &already_visited
+ ),
+ Some(PathBuf::from("crate-dir/s-3234-0000-svh"))
+ );
+
+ // Filter out "-working"
+ assert_eq!(
+ find_source_directory_in_iter(
+ [
+ PathBuf::from("crate-dir/s-3234-0000-working"),
+ PathBuf::from("crate-dir/s-2234-0000-svh"),
+ PathBuf::from("crate-dir/s-1234-0000-svh")
+ ]
+ .into_iter(),
+ &already_visited
+ ),
+ Some(PathBuf::from("crate-dir/s-2234-0000-svh"))
+ );
+
+ // Handle empty
+ assert_eq!(find_source_directory_in_iter([].into_iter(), &already_visited), None);
+
+ // Handle only working
+ assert_eq!(
+ find_source_directory_in_iter(
+ [
+ PathBuf::from("crate-dir/s-3234-0000-working"),
+ PathBuf::from("crate-dir/s-2234-0000-working"),
+ PathBuf::from("crate-dir/s-1234-0000-working")
+ ]
+ .into_iter(),
+ &already_visited
+ ),
+ None
+ );
+}