use crate::config::Config;
pub fn config_schema_json() -> String {
let schema = schemars::schema_for!(Config);
let mut json = serde_json::to_string_pretty(&schema).expect("schema serialises");
json.push('\n');
json
}
#[cfg(test)]
mod tests {
use super::config_schema_json;
const SCHEMA_PATH: &str = concat!(
env!("CARGO_MANIFEST_DIR"),
"/../../docs/src/config.schema.json"
);
#[test]
fn checked_in_schema_is_current() {
let generated = config_schema_json();
if std::env::var_os("UPDATE_SCHEMA").is_some() {
std::fs::write(SCHEMA_PATH, &generated).expect("write schema");
return;
}
let on_disk = std::fs::read_to_string(SCHEMA_PATH).unwrap_or_default();
assert_eq!(
generated, on_disk,
"docs/src/config.schema.json is stale; regenerate with \
`UPDATE_SCHEMA=1 cargo test -p suno-core --features schema checked_in_schema_is_current`"
);
}
}