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