lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

workspace_consumers.rs (1571B)


      1 use std::{fs, path::PathBuf};
      2 
      3 #[test]
      4 fn ready_workspace_consumers_use_only_the_final_storage_boundary() {
      5     let storage_root = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
      6     let workspace = storage_root.parent().expect("crates directory");
      7     for (consumer, required) in [
      8         (
      9             "storage_sqlite",
     10             [
     11                 "radroots_storage",
     12                 "radroots_event_codec",
     13                 "radroots_secrets",
     14             ]
     15             .as_slice(),
     16         ),
     17         (
     18             "sync",
     19             [
     20                 "radroots_storage",
     21                 "radroots_event",
     22                 "radroots_event_codec",
     23                 "radroots_protocol",
     24                 "radroots_signing",
     25                 "radroots_trade",
     26                 "radroots_transport",
     27             ]
     28             .as_slice(),
     29         ),
     30     ] {
     31         let manifest = fs::read_to_string(workspace.join(consumer).join("Cargo.toml"))
     32             .expect("consumer manifest");
     33         for dependency in required {
     34             assert!(
     35                 manifest.contains(&format!("{dependency} = {{ workspace = true")),
     36                 "{consumer} does not use final dependency {dependency}"
     37             );
     38         }
     39         for legacy in [
     40             "radroots_event_store",
     41             "radroots_event_index",
     42             "radroots_outbox",
     43             "radroots_runtime_store",
     44         ] {
     45             assert!(
     46                 !manifest.contains(legacy),
     47                 "{consumer} still depends on legacy storage surface {legacy}"
     48             );
     49         }
     50     }
     51 }