Codex Handbook
config/src/test_support.rs 80 lines
//! Test-only helpers exposed for cross-crate integration tests.//!//! Production code should not depend on this module.use crate::CloudConfigBundle;use crate::CloudConfigBundleLoader;use crate::CloudConfigFragment;use crate::CloudRequirementsFragment;#[derive(Debug, Clone, Default)]pub struct CloudConfigBundleFixture {    bundle: CloudConfigBundle,}impl CloudConfigBundleFixture {    pub fn enterprise_requirement(contents: impl Into<String>) -> Self {        Self::default().add_enterprise_requirement(contents)    }    pub fn enterprise_config(contents: impl Into<String>) -> Self {        Self::default().add_enterprise_config(contents)    }    pub fn loader_with_enterprise_requirement(        contents: impl Into<String>,    ) -> CloudConfigBundleLoader {        Self::enterprise_requirement(contents).into_loader()    }    pub fn loader_with_enterprise_config(contents: impl Into<String>) -> CloudConfigBundleLoader {        Self::enterprise_config(contents).into_loader()    }    pub fn add_enterprise_requirement(mut self, contents: impl Into<String>) -> Self {        let index = self.bundle.requirements_toml.enterprise_managed.len() + 1;        self.bundle            .requirements_toml            .enterprise_managed            .push(CloudRequirementsFragment {                id: format!("req_{index}"),                name: if index == 1 {                    "Base requirements".to_string()                } else {                    format!("Requirements {index}")                },                contents: contents.into(),            });        self    }    pub fn add_enterprise_config(mut self, contents: impl Into<String>) -> Self {        let index = self.bundle.config_toml.enterprise_managed.len() + 1;        self.bundle            .config_toml            .enterprise_managed            .push(CloudConfigFragment {                id: format!("cfg_{index}"),                name: if index == 1 {                    "Base config".to_string()                } else {                    format!("Config {index}")                },                contents: contents.into(),            });        self    }    pub fn into_bundle(self) -> CloudConfigBundle {        self.bundle    }    pub fn into_loader(self) -> CloudConfigBundleLoader {        let bundle = self.into_bundle();        CloudConfigBundleLoader::new(async move { Ok(Some(bundle)) })    }}#[cfg(test)]#[path = "test_support_tests.rs"]mod tests;