#[cfg(feature = "std")]
mod config_loading {
use burn_std::config::autodiff::AutodiffLogLevel;
use burn_std::config::fusion::FusionLogLevel;
use burn_std::config::{BurnConfig, RuntimeConfig};
use std::io::Write;
use tempfile::NamedTempFile;
const EMPTY_TOML: &str = "";
const MINIMAL_TOML: &str = r#"
[fusion.beam_search]
max_blocks = 3
"#;
const FULL_TOML: &str = r#"
[fusion.beam_search]
max_blocks = 10
[fusion.logger]
level = "medium"
stdout = true
[autodiff.logger]
level = "basic"
[cubecl.autotune]
level = "full"
[cubecl.compilation.logger]
level = "full"
stdout = true
"#;
fn write_toml(content: &str) -> NamedTempFile {
let mut file = NamedTempFile::new().expect("create temp toml");
file.write_all(content.as_bytes()).expect("write toml");
file.flush().expect("flush toml");
file
}
#[test]
fn load_empty_toml_uses_defaults() {
let file = write_toml(EMPTY_TOML);
let config = BurnConfig::from_file_path(file.path()).expect("parse empty toml");
assert_eq!(config.fusion.beam_search.max_blocks, 5);
assert_eq!(config.fusion.logger.level, FusionLogLevel::Disabled);
assert_eq!(config.autodiff.logger.level, AutodiffLogLevel::Disabled);
}
#[test]
fn load_minimal_toml_overrides_defaults() {
let file = write_toml(MINIMAL_TOML);
let config = BurnConfig::from_file_path(file.path()).expect("parse minimal toml");
assert_eq!(config.fusion.beam_search.max_blocks, 3);
assert_eq!(config.autodiff.logger.level, AutodiffLogLevel::Disabled);
}
#[test]
fn load_full_toml_ignores_cubecl_when_feature_off() {
let file = write_toml(FULL_TOML);
let config = BurnConfig::from_file_path(file.path()).expect("parse full toml");
assert_eq!(config.fusion.beam_search.max_blocks, 10);
assert_eq!(config.fusion.logger.level, FusionLogLevel::Medium);
assert!(config.fusion.logger.stdout);
assert_eq!(config.autodiff.logger.level, AutodiffLogLevel::Basic);
}
}