use anyhow::Error;
use dissolve::core::CollectorResult;
use dissolve::RuffDeprecatedFunctionCollector;
pub fn collect_replacements(source: &str) -> CollectorResult {
collect_replacements_with_module(source, "test_module")
}
pub fn collect_replacements_with_module(source: &str, module_name: &str) -> CollectorResult {
let collector = RuffDeprecatedFunctionCollector::new(module_name.to_string(), None);
collector.collect_from_source(source.to_string()).unwrap()
}
pub fn try_collect_replacements_with_module(
source: &str,
module_name: &str,
) -> Result<CollectorResult, Error> {
let collector = RuffDeprecatedFunctionCollector::new(module_name.to_string(), None);
collector.collect_from_source(source.to_string())
}
pub fn assert_replacement_exists(
result: &CollectorResult,
key: &str,
expected_expr: &str,
expected_construct: dissolve::core::ConstructType,
) {
assert!(
result.replacements.contains_key(key),
"Expected replacement '{}' not found",
key
);
let replacement = &result.replacements[key];
assert_eq!(replacement.replacement_expr, expected_expr);
assert_eq!(replacement.construct_type, expected_construct);
}
pub fn assert_parameter_count(result: &CollectorResult, key: &str, expected_count: usize) {
let replacement = &result.replacements[key];
assert_eq!(replacement.parameters.len(), expected_count);
}
pub fn simple_function_source(old_name: &str, new_name: &str, params: &str) -> String {
format!(
r#"from dissolve import replace_me
@replace_me
def {}({}):
return {}({})
"#,
old_name, params, new_name, params
)
}
pub fn simple_class_source(old_name: &str, new_name: &str, init_params: &str) -> String {
format!(
r#"from dissolve import replace_me
@replace_me
class {}:
def __init__(self, {}):
self._wrapped = {}({})
"#,
old_name, init_params, new_name, init_params
)
}