1pub mod audit_log;
13pub mod objects;
14pub mod objects_v74;
15pub mod objects_v75;
16pub mod objects_v76;
17pub mod objects_v77;
18pub mod objects_v78;
19pub mod objects_v79;
20pub mod objects_v80;
21pub mod objects_v81;
22pub mod serialization;
23
24pub const CATALOG_VERSION: u64 = 81;
30
31pub const MIN_CATALOG_VERSION: u64 = 74;
35
36#[cfg(test)]
37mod tests {
38 use std::collections::BTreeSet;
39 use std::fs;
40 use std::path::PathBuf;
41
42 use crate::{CATALOG_VERSION, MIN_CATALOG_VERSION};
43
44 #[mz_ore::test]
45 fn test_assert_snapshots_exist() {
46 let src_dir: PathBuf = [env!("CARGO_MANIFEST_DIR"), "src"].iter().collect();
47
48 let mut filenames: BTreeSet<_> = fs::read_dir(src_dir)
50 .expect("failed to read src dir")
51 .map(|entry| entry.expect("failed to read dir entry").file_name())
52 .map(|filename| filename.to_str().expect("utf8").to_string())
53 .filter(|filename| filename.starts_with("objects_v"))
54 .collect();
55
56 for version in MIN_CATALOG_VERSION..=CATALOG_VERSION {
58 let filename = format!("objects_v{version}.rs");
59 assert!(
60 filenames.remove(&filename),
61 "Missing snapshot for v{version}."
62 );
63 }
64
65 if !filenames.is_empty()
67 && filenames.remove(&format!("objects_v{}.proto", CATALOG_VERSION + 1))
68 {
69 panic!(
70 "Found snapshot for v{}, please also bump `CATALOG_VERSION`.",
71 CATALOG_VERSION + 1
72 )
73 }
74
75 assert!(
77 filenames.is_empty(),
78 "Found snapshots for unsupported catalog versions {filenames:?}.\n\
79 If you just increased `MIN_CATALOG_VERSION`, then please delete the old snapshots. \
80 If you created a new snapshot, please bump `CATALOG_VERSION`."
81 );
82 }
83
84 #[mz_ore::test]
85 fn test_assert_current_snapshot() {
86 let src_dir: PathBuf = [env!("CARGO_MANIFEST_DIR"), "src"].iter().collect();
87 let current_rs = src_dir.join("objects.rs");
88 let snapshot_rs = src_dir.join(format!("objects_v{CATALOG_VERSION}.rs"));
89
90 let current = fs::read_to_string(current_rs).expect("read current");
91 let snapshot = fs::read_to_string(snapshot_rs).expect("read snapshot");
92
93 similar_asserts::assert_eq!(current, snapshot);
98 }
99}