mirror of
https://github.com/slint-ui/slint.git
synced 2025-11-15 10:10:57 +00:00
widgets tests: Also test with the interpreter
This commit is contained in:
parent
ac53049408
commit
af09222dfd
5 changed files with 18 additions and 15 deletions
|
|
@ -24,6 +24,8 @@ export component TestCase inherits Window {
|
||||||
maximum: 100;
|
maximum: 100;
|
||||||
}
|
}
|
||||||
out property <float> neg-val <=> slider-min-neg.value;
|
out property <float> neg-val <=> slider-min-neg.value;
|
||||||
|
|
||||||
|
out property <bool> test: pos-val == 10 && default-min == 0 && default-val == 0 && neg-val == -10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,10 +14,16 @@ pub struct TestCase {
|
||||||
impl TestCase {
|
impl TestCase {
|
||||||
/// Return a string which is a valid C++/Rust identifier
|
/// Return a string which is a valid C++/Rust identifier
|
||||||
pub fn identifier(&self) -> String {
|
pub fn identifier(&self) -> String {
|
||||||
self.relative_path
|
let mut result = self
|
||||||
|
.relative_path
|
||||||
.with_extension("")
|
.with_extension("")
|
||||||
.to_string_lossy()
|
.to_string_lossy()
|
||||||
.replace([std::path::MAIN_SEPARATOR, '-'], "_")
|
.replace([std::path::MAIN_SEPARATOR, '-'], "_");
|
||||||
|
if let Some(requested_style) = &self.requested_style {
|
||||||
|
result.push_str("_");
|
||||||
|
result.push_str(requested_style);
|
||||||
|
}
|
||||||
|
result
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns true if the test case should be ignored for the specified driver.
|
/// Returns true if the test case should be ignored for the specified driver.
|
||||||
|
|
|
||||||
|
|
@ -9,10 +9,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
|
|
||||||
let mut tests_file = std::fs::File::create(&tests_file_path)?;
|
let mut tests_file = std::fs::File::create(&tests_file_path)?;
|
||||||
|
|
||||||
for testcase in test_driver_lib::collect_test_cases("cases")?.into_iter().filter(|testcase| {
|
for testcase in test_driver_lib::collect_test_cases("cases")?.into_iter() {
|
||||||
// Style testing not supported yet
|
|
||||||
testcase.requested_style.is_none()
|
|
||||||
}) {
|
|
||||||
let test_function_name = testcase.identifier();
|
let test_function_name = testcase.identifier();
|
||||||
let ignored = testcase.is_ignored("interpreter");
|
let ignored = testcase.is_ignored("interpreter");
|
||||||
|
|
||||||
|
|
@ -25,7 +22,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
interpreter::test(&test_driver_lib::TestCase{{
|
interpreter::test(&test_driver_lib::TestCase{{
|
||||||
absolute_path: std::path::PathBuf::from(r#"{absolute_path}"#),
|
absolute_path: std::path::PathBuf::from(r#"{absolute_path}"#),
|
||||||
relative_path: std::path::PathBuf::from(r#"{relative_path}"#),
|
relative_path: std::path::PathBuf::from(r#"{relative_path}"#),
|
||||||
requested_style: None,
|
requested_style: {requested_style},
|
||||||
}}).unwrap();
|
}}).unwrap();
|
||||||
}}
|
}}
|
||||||
"##,
|
"##,
|
||||||
|
|
@ -33,6 +30,8 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
function_name = test_function_name,
|
function_name = test_function_name,
|
||||||
absolute_path = testcase.absolute_path.to_string_lossy(),
|
absolute_path = testcase.absolute_path.to_string_lossy(),
|
||||||
relative_path = testcase.relative_path.to_string_lossy(),
|
relative_path = testcase.relative_path.to_string_lossy(),
|
||||||
|
requested_style =
|
||||||
|
testcase.requested_style.map_or("None".into(), |style| format!("Some({style:?})")),
|
||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ pub fn test(testcase: &test_driver_lib::TestCase) -> Result<(), Box<dyn Error>>
|
||||||
let mut compiler = slint_interpreter::ComponentCompiler::default();
|
let mut compiler = slint_interpreter::ComponentCompiler::default();
|
||||||
compiler.set_include_paths(include_paths);
|
compiler.set_include_paths(include_paths);
|
||||||
compiler.set_library_paths(library_paths);
|
compiler.set_library_paths(library_paths);
|
||||||
compiler.set_style(String::from("fluent")); // force to fluent style as Qt does not like multi-threaded test execution
|
compiler.set_style(testcase.requested_style.unwrap_or("fluent").into());
|
||||||
|
|
||||||
let component =
|
let component =
|
||||||
spin_on::spin_on(compiler.build_from_source(source, testcase.absolute_path.clone()));
|
spin_on::spin_on(compiler.build_from_source(source, testcase.absolute_path.clone()));
|
||||||
|
|
|
||||||
|
|
@ -15,10 +15,6 @@ fn main() -> std::io::Result<()> {
|
||||||
if module_name.starts_with(|c: char| !c.is_ascii_alphabetic()) {
|
if module_name.starts_with(|c: char| !c.is_ascii_alphabetic()) {
|
||||||
module_name.insert(0, '_');
|
module_name.insert(0, '_');
|
||||||
}
|
}
|
||||||
if let Some(style) = testcase.requested_style {
|
|
||||||
module_name.push('_');
|
|
||||||
module_name.push_str(style);
|
|
||||||
}
|
|
||||||
writeln!(generated_file, "#[path=\"{0}.rs\"] mod r#{0};", module_name)?;
|
writeln!(generated_file, "#[path=\"{0}.rs\"] mod r#{0};", module_name)?;
|
||||||
let source = std::fs::read_to_string(&testcase.absolute_path)?;
|
let source = std::fs::read_to_string(&testcase.absolute_path)?;
|
||||||
let ignored = testcase.is_ignored("rust");
|
let ignored = testcase.is_ignored("rust");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue