tests: Move test framework into its own crate
This commit is contained in:
parent
2f5166790c
commit
673d52f013
|
@ -4254,6 +4254,34 @@ dependencies = [
|
||||||
"serde_json",
|
"serde_json",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ruffle_test_framework"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"approx",
|
||||||
|
"async-channel",
|
||||||
|
"chrono",
|
||||||
|
"env_logger",
|
||||||
|
"futures",
|
||||||
|
"image",
|
||||||
|
"libtest-mimic",
|
||||||
|
"pretty_assertions",
|
||||||
|
"regex",
|
||||||
|
"ruffle_core",
|
||||||
|
"ruffle_input_format",
|
||||||
|
"ruffle_render",
|
||||||
|
"ruffle_render_wgpu",
|
||||||
|
"ruffle_socket_format",
|
||||||
|
"ruffle_video_software",
|
||||||
|
"serde",
|
||||||
|
"toml",
|
||||||
|
"tracing",
|
||||||
|
"tracing-subscriber",
|
||||||
|
"url",
|
||||||
|
"walkdir",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruffle_video"
|
name = "ruffle_video"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
@ -4894,26 +4922,9 @@ name = "tests"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"approx",
|
|
||||||
"async-channel",
|
|
||||||
"chrono",
|
|
||||||
"env_logger",
|
|
||||||
"futures",
|
|
||||||
"image",
|
|
||||||
"libtest-mimic",
|
"libtest-mimic",
|
||||||
"pretty_assertions",
|
|
||||||
"regex",
|
|
||||||
"ruffle_core",
|
"ruffle_core",
|
||||||
"ruffle_input_format",
|
"ruffle_test_framework",
|
||||||
"ruffle_render",
|
|
||||||
"ruffle_render_wgpu",
|
|
||||||
"ruffle_socket_format",
|
|
||||||
"ruffle_video_software",
|
|
||||||
"serde",
|
|
||||||
"toml",
|
|
||||||
"tracing",
|
|
||||||
"tracing-subscriber",
|
|
||||||
"url",
|
|
||||||
"walkdir",
|
"walkdir",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@ members = [
|
||||||
"tests/input-format",
|
"tests/input-format",
|
||||||
"tests/socket-format",
|
"tests/socket-format",
|
||||||
"tests/mocket",
|
"tests/mocket",
|
||||||
|
"tests/framework",
|
||||||
]
|
]
|
||||||
default-members = ["desktop"]
|
default-members = ["desktop"]
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
|
|
|
@ -7,39 +7,20 @@ license.workspace = true
|
||||||
repository.workspace = true
|
repository.workspace = true
|
||||||
version.workspace = true
|
version.workspace = true
|
||||||
|
|
||||||
[dependencies]
|
|
||||||
futures = "0.3.29"
|
|
||||||
ruffle_core = { path = "../core", features = ["deterministic", "timeline_debug", "avm_debug", "audio", "mp3", "default_font"] }
|
|
||||||
ruffle_render_wgpu = { path = "../render/wgpu" }
|
|
||||||
ruffle_render = { path = "../render" }
|
|
||||||
ruffle_input_format = { path = "input-format" }
|
|
||||||
ruffle_socket_format = { path = "socket-format" }
|
|
||||||
ruffle_video_software = { path = "../video/software", optional = true }
|
|
||||||
image = { version = "0.24.7", default-features = false, features = ["png"] }
|
|
||||||
regex = "1.10.2"
|
|
||||||
url = "2.4.1"
|
|
||||||
chrono = "0.4.31"
|
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
# Enable running image comparison tests. This is off by default,
|
# Enable running image comparison tests. This is off by default,
|
||||||
# since the images we compare against are generated on CI, and may
|
# since the images we compare against are generated on CI, and may
|
||||||
# not match your local machine's Vulkan version / image output.
|
# not match your local machine's Vulkan version / image output.
|
||||||
imgtests = ["ruffle_video_software"]
|
imgtests = ["ruffle_test_framework/imgtests"]
|
||||||
jpegxr = ["ruffle_core/jpegxr"]
|
jpegxr = ["ruffle_test_framework/jpegxr"]
|
||||||
lzma = ["ruffle_core/lzma"]
|
lzma = ["ruffle_test_framework/lzma"]
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
approx = "0.5.1"
|
ruffle_core = { path = "../core", features = ["deterministic", "timeline_debug", "avm_debug", "audio", "mp3", "default_font"] }
|
||||||
pretty_assertions = "1.4.0"
|
ruffle_test_framework = { path = "framework" }
|
||||||
env_logger = "0.10.0"
|
|
||||||
tracing = { workspace = true}
|
|
||||||
tracing-subscriber = { workspace = true }
|
|
||||||
serde = "1.0.190"
|
|
||||||
toml = "0.8.6"
|
|
||||||
libtest-mimic = "0.6.1"
|
libtest-mimic = "0.6.1"
|
||||||
walkdir = "2.4.0"
|
walkdir = "2.4.0"
|
||||||
anyhow = "1.0.75"
|
anyhow = "1.0.75"
|
||||||
async-channel = "1.9.0"
|
|
||||||
|
|
||||||
[[test]]
|
[[test]]
|
||||||
name = "tests"
|
name = "tests"
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
[package]
|
||||||
|
name = "ruffle_test_framework"
|
||||||
|
authors.workspace = true
|
||||||
|
edition.workspace = true
|
||||||
|
homepage.workspace = true
|
||||||
|
license.workspace = true
|
||||||
|
repository.workspace = true
|
||||||
|
version.workspace = true
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
futures = "0.3.29"
|
||||||
|
ruffle_core = { path = "../../core", features = ["deterministic", "timeline_debug", "avm_debug", "audio", "mp3", "default_font"] }
|
||||||
|
ruffle_render_wgpu = { path = "../../render/wgpu" }
|
||||||
|
ruffle_render = { path = "../../render" }
|
||||||
|
ruffle_input_format = { path = "../input-format" }
|
||||||
|
ruffle_socket_format = { path = "../socket-format" }
|
||||||
|
ruffle_video_software = { path = "../../video/software", optional = true }
|
||||||
|
image = { version = "0.24.7", default-features = false, features = ["png"] }
|
||||||
|
regex = "1.10.2"
|
||||||
|
url = "2.4.1"
|
||||||
|
chrono = "0.4.31"
|
||||||
|
approx = "0.5.1"
|
||||||
|
pretty_assertions = "1.4.0"
|
||||||
|
env_logger = "0.10.0"
|
||||||
|
tracing = { workspace = true}
|
||||||
|
tracing-subscriber = { workspace = true }
|
||||||
|
serde = "1.0.190"
|
||||||
|
toml = "0.8.6"
|
||||||
|
libtest-mimic = "0.6.1"
|
||||||
|
walkdir = "2.4.0"
|
||||||
|
anyhow = "1.0.75"
|
||||||
|
async-channel = "1.9.0"
|
||||||
|
|
||||||
|
[features]
|
||||||
|
imgtests = ["ruffle_video_software"]
|
||||||
|
jpegxr = ["ruffle_core/jpegxr"]
|
||||||
|
lzma = ["ruffle_core/lzma"]
|
|
@ -1,6 +1,3 @@
|
||||||
// Despite being the older method of defining modules, this is required for test modules
|
|
||||||
// https://doc.rust-lang.org/book/ch11-03-test-organization.html
|
|
||||||
|
|
||||||
pub mod environment;
|
pub mod environment;
|
||||||
pub mod fs_commands;
|
pub mod fs_commands;
|
||||||
pub mod image_trigger;
|
pub mod image_trigger;
|
||||||
|
@ -24,3 +21,18 @@ impl<'a> std::fmt::Debug for PrettyString<'a> {
|
||||||
f.write_str(self.0)
|
f.write_str(self.0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn set_logger() {
|
||||||
|
let _ = env_logger::Builder::from_env(
|
||||||
|
env_logger::Env::default().default_filter_or("info,wgpu_core=warn,wgpu_hal=warn"),
|
||||||
|
)
|
||||||
|
.format_timestamp(None)
|
||||||
|
.is_test(true)
|
||||||
|
.try_init();
|
||||||
|
|
||||||
|
let subscriber = tracing_subscriber::fmt::Subscriber::builder()
|
||||||
|
.with_env_filter(tracing_subscriber::EnvFilter::from_default_env())
|
||||||
|
.finish();
|
||||||
|
// Ignore error if it's already been set
|
||||||
|
let _ = tracing::subscriber::set_global_default(subscriber);
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::util::runner::TestLogBackend;
|
use crate::runner::TestLogBackend;
|
||||||
use async_channel::Receiver;
|
use async_channel::Receiver;
|
||||||
use ruffle_core::backend::log::LogBackend;
|
use ruffle_core::backend::log::LogBackend;
|
||||||
use ruffle_core::backend::navigator::{
|
use ruffle_core::backend::navigator::{
|
|
@ -1,6 +1,6 @@
|
||||||
use crate::util::environment::wgpu_descriptors;
|
use crate::environment::wgpu_descriptors;
|
||||||
use crate::util::image_trigger::ImageTrigger;
|
use crate::image_trigger::ImageTrigger;
|
||||||
use crate::util::runner::TestAudioBackend;
|
use crate::runner::TestAudioBackend;
|
||||||
use anyhow::{anyhow, Result};
|
use anyhow::{anyhow, Result};
|
||||||
use approx::assert_relative_eq;
|
use approx::assert_relative_eq;
|
||||||
use regex::Regex;
|
use regex::Regex;
|
|
@ -1,9 +1,9 @@
|
||||||
use crate::util::fs_commands::{FsCommand, TestFsCommandProvider};
|
use crate::fs_commands::{FsCommand, TestFsCommandProvider};
|
||||||
use crate::util::image_trigger::ImageTrigger;
|
use crate::image_trigger::ImageTrigger;
|
||||||
use crate::util::navigator::TestNavigatorBackend;
|
use crate::navigator::TestNavigatorBackend;
|
||||||
use crate::util::options::ImageComparison;
|
use crate::options::ImageComparison;
|
||||||
use crate::util::test::Test;
|
use crate::test::Test;
|
||||||
use crate::util::test_ui::TestUiBackend;
|
use crate::test_ui::TestUiBackend;
|
||||||
use anyhow::{anyhow, Result};
|
use anyhow::{anyhow, Result};
|
||||||
use ruffle_core::backend::audio::{
|
use ruffle_core::backend::audio::{
|
||||||
swf, AudioBackend, AudioMixer, DecodeError, RegisterError, SoundHandle, SoundInstanceHandle,
|
swf, AudioBackend, AudioMixer, DecodeError, RegisterError, SoundHandle, SoundInstanceHandle,
|
||||||
|
@ -138,7 +138,7 @@ pub fn run_swf(
|
||||||
let mut images = test.options.image_comparisons.clone();
|
let mut images = test.options.image_comparisons.clone();
|
||||||
|
|
||||||
let wgpu_descriptors = if cfg!(feature = "imgtests") && !images.is_empty() {
|
let wgpu_descriptors = if cfg!(feature = "imgtests") && !images.is_empty() {
|
||||||
crate::util::environment::wgpu_descriptors()
|
crate::environment::wgpu_descriptors()
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
|
@ -1,7 +1,7 @@
|
||||||
|
use crate::options::TestOptions;
|
||||||
|
use crate::runner::run_swf;
|
||||||
use crate::set_logger;
|
use crate::set_logger;
|
||||||
use crate::util::options::TestOptions;
|
use crate::PrettyString;
|
||||||
use crate::util::runner::run_swf;
|
|
||||||
use crate::util::PrettyString;
|
|
||||||
use anyhow::{anyhow, Context, Result};
|
use anyhow::{anyhow, Context, Result};
|
||||||
use pretty_assertions::Comparison;
|
use pretty_assertions::Comparison;
|
||||||
use ruffle_core::Player;
|
use ruffle_core::Player;
|
|
@ -1,8 +1,8 @@
|
||||||
use crate::external_interface::ExternalInterfaceTestProvider;
|
use crate::external_interface::ExternalInterfaceTestProvider;
|
||||||
use crate::set_logger;
|
|
||||||
use crate::util::options::TestOptions;
|
|
||||||
use crate::util::test::Test;
|
|
||||||
use ruffle_core::external::Value as ExternalValue;
|
use ruffle_core::external::Value as ExternalValue;
|
||||||
|
use ruffle_test_framework::options::TestOptions;
|
||||||
|
use ruffle_test_framework::set_logger;
|
||||||
|
use ruffle_test_framework::test::Test;
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
|
|
|
@ -7,28 +7,12 @@ use crate::shared_object::{shared_object_avm1, shared_object_avm2, shared_object
|
||||||
use anyhow::Context;
|
use anyhow::Context;
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use libtest_mimic::{Arguments, Trial};
|
use libtest_mimic::{Arguments, Trial};
|
||||||
|
use ruffle_test_framework::test::Test;
|
||||||
use std::panic::{catch_unwind, resume_unwind};
|
use std::panic::{catch_unwind, resume_unwind};
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use util::test::Test;
|
|
||||||
|
|
||||||
mod external_interface;
|
mod external_interface;
|
||||||
mod shared_object;
|
mod shared_object;
|
||||||
mod util;
|
|
||||||
|
|
||||||
fn set_logger() {
|
|
||||||
let _ = env_logger::Builder::from_env(
|
|
||||||
env_logger::Env::default().default_filter_or("info,wgpu_core=warn,wgpu_hal=warn"),
|
|
||||||
)
|
|
||||||
.format_timestamp(None)
|
|
||||||
.is_test(true)
|
|
||||||
.try_init();
|
|
||||||
|
|
||||||
let subscriber = tracing_subscriber::fmt::Subscriber::builder()
|
|
||||||
.with_env_filter(tracing_subscriber::EnvFilter::from_default_env())
|
|
||||||
.finish();
|
|
||||||
// Ignore error if it's already been set
|
|
||||||
let _ = tracing::subscriber::set_global_default(subscriber);
|
|
||||||
}
|
|
||||||
|
|
||||||
fn is_candidate(args: &Arguments, test_name: &str) -> bool {
|
fn is_candidate(args: &Arguments, test_name: &str) -> bool {
|
||||||
if let Some(filter) = &args.filter {
|
if let Some(filter) = &args.filter {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use crate::set_logger;
|
|
||||||
use crate::util::options::TestOptions;
|
|
||||||
use crate::util::test::Test;
|
|
||||||
use ruffle_core::backend::storage::{MemoryStorageBackend, StorageBackend};
|
use ruffle_core::backend::storage::{MemoryStorageBackend, StorageBackend};
|
||||||
|
use ruffle_test_framework::options::TestOptions;
|
||||||
|
use ruffle_test_framework::set_logger;
|
||||||
|
use ruffle_test_framework::test::Test;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
pub fn shared_object_avm1() -> Result<(), libtest_mimic::Failed> {
|
pub fn shared_object_avm1() -> Result<(), libtest_mimic::Failed> {
|
||||||
|
|
Loading…
Reference in New Issue