From af09222dfd257b3fc77d27450b8b1b47d65d68c2 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Tue, 7 May 2024 12:38:33 +0200 Subject: [PATCH] widgets tests: Also test with the interpreter --- tests/cases/widgets/slider_default_value.slint | 8 +++++--- tests/driver/driverlib/lib.rs | 10 ++++++++-- tests/driver/interpreter/build.rs | 9 ++++----- tests/driver/interpreter/interpreter.rs | 2 +- tests/driver/rust/build.rs | 4 ---- 5 files changed, 18 insertions(+), 15 deletions(-) diff --git a/tests/cases/widgets/slider_default_value.slint b/tests/cases/widgets/slider_default_value.slint index 6c4e3a6a7..42bb43084 100644 --- a/tests/cases/widgets/slider_default_value.slint +++ b/tests/cases/widgets/slider_default_value.slint @@ -6,17 +6,17 @@ import { Slider } from "std-widgets.slint"; export component TestCase inherits Window { width: 100px; height: 100px; - + slider_min_pos := Slider { minimum: 10; maximum: 100; } out property pos-val <=> slider-min-pos.value; - + slider_min_default := Slider { maximum: 100; } - out property default-min <=> slider-min-default.minimum; + out property default-min <=> slider-min-default.minimum; out property default-val <=> slider-min-default.value; slider_min_neg := Slider { @@ -24,6 +24,8 @@ export component TestCase inherits Window { maximum: 100; } out property neg-val <=> slider-min-neg.value; + + out property test: pos-val == 10 && default-min == 0 && default-val == 0 && neg-val == -10; } diff --git a/tests/driver/driverlib/lib.rs b/tests/driver/driverlib/lib.rs index 1decef607..e86ee4a1f 100644 --- a/tests/driver/driverlib/lib.rs +++ b/tests/driver/driverlib/lib.rs @@ -14,10 +14,16 @@ pub struct TestCase { impl TestCase { /// Return a string which is a valid C++/Rust identifier pub fn identifier(&self) -> String { - self.relative_path + let mut result = self + .relative_path .with_extension("") .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. diff --git a/tests/driver/interpreter/build.rs b/tests/driver/interpreter/build.rs index f7134b453..89d2a3d95 100644 --- a/tests/driver/interpreter/build.rs +++ b/tests/driver/interpreter/build.rs @@ -9,10 +9,7 @@ fn main() -> Result<(), Box> { 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| { - // Style testing not supported yet - testcase.requested_style.is_none() - }) { + for testcase in test_driver_lib::collect_test_cases("cases")?.into_iter() { let test_function_name = testcase.identifier(); let ignored = testcase.is_ignored("interpreter"); @@ -25,7 +22,7 @@ fn main() -> Result<(), Box> { interpreter::test(&test_driver_lib::TestCase{{ absolute_path: std::path::PathBuf::from(r#"{absolute_path}"#), relative_path: std::path::PathBuf::from(r#"{relative_path}"#), - requested_style: None, + requested_style: {requested_style}, }}).unwrap(); }} "##, @@ -33,6 +30,8 @@ fn main() -> Result<(), Box> { function_name = test_function_name, absolute_path = testcase.absolute_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:?})")), )?; } diff --git a/tests/driver/interpreter/interpreter.rs b/tests/driver/interpreter/interpreter.rs index b8b6c3879..e500e83b8 100644 --- a/tests/driver/interpreter/interpreter.rs +++ b/tests/driver/interpreter/interpreter.rs @@ -18,7 +18,7 @@ pub fn test(testcase: &test_driver_lib::TestCase) -> Result<(), Box> let mut compiler = slint_interpreter::ComponentCompiler::default(); compiler.set_include_paths(include_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 = spin_on::spin_on(compiler.build_from_source(source, testcase.absolute_path.clone())); diff --git a/tests/driver/rust/build.rs b/tests/driver/rust/build.rs index e4b28d054..d35bba741 100644 --- a/tests/driver/rust/build.rs +++ b/tests/driver/rust/build.rs @@ -15,10 +15,6 @@ fn main() -> std::io::Result<()> { if module_name.starts_with(|c: char| !c.is_ascii_alphabetic()) { 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)?; let source = std::fs::read_to_string(&testcase.absolute_path)?; let ignored = testcase.is_ignored("rust");