slint/tests/driver/interpreter/build.rs
Simon Hausmann d4a6c5774e Add support for writing tests that run with all styles
Tests under tests/cases/for_each_style are run with all styles at least
in the Rust driver.

Amends 6bb9905191 to include a test that
using edited works.
2024-02-23 16:12:45 +01:00

43 lines
1.6 KiB
Rust

// Copyright © SixtyFPS GmbH <info@slint.dev>
// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-1.1 OR LicenseRef-Slint-commercial
use std::io::Write;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let tests_file_path =
std::path::Path::new(&std::env::var_os("OUT_DIR").unwrap()).join("test_functions.rs");
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()
}) {
let test_function_name = testcase.identifier();
let ignored = testcase.is_ignored("interpreter");
write!(
tests_file,
r##"
#[test]
{ignore}
fn test_interpreter_{function_name}() {{
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,
}}).unwrap();
}}
"##,
ignore = if ignored { "#[ignore]" } else { "" },
function_name = test_function_name,
absolute_path = testcase.absolute_path.to_string_lossy(),
relative_path = testcase.relative_path.to_string_lossy(),
)?;
}
println!("cargo:rustc-env=TEST_FUNCTIONS={}", tests_file_path.to_string_lossy());
println!("cargo:rustc-env=SLINT_ENABLE_EXPERIMENTAL_FEATURES=1");
Ok(())
}