tests: Move tests away from giant macro to individual test.toml files that describe the test

This commit is contained in:
Nathan Adams 2023-01-24 02:23:33 +01:00
parent 175d131986
commit 7d234956eb
825 changed files with 1215 additions and 979 deletions

16
Cargo.lock generated
View File

@ -2351,6 +2351,17 @@ dependencies = [
"libc",
]
[[package]]
name = "libtest-mimic"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d7b603516767d1ab23d0de09d023e62966c3322f7148297c35cf3d97aa8b37fa"
dependencies = [
"clap",
"termcolor",
"threadpool",
]
[[package]]
name = "libz-sys"
version = "1.1.8"
@ -3620,6 +3631,7 @@ dependencies = [
"log",
"lyon",
"png",
"serde",
"smallvec",
"swf",
"thiserror",
@ -4375,11 +4387,15 @@ dependencies = [
"env_logger",
"futures",
"image",
"libtest-mimic",
"pretty_assertions",
"regex",
"ruffle_core",
"ruffle_input_format",
"ruffle_render_wgpu",
"serde",
"toml",
"walkdir",
]
[[package]]

View File

@ -20,6 +20,7 @@ thiserror = "1.0"
wasm-bindgen = { version = "=0.2.83", optional = true }
gc-arena = { workspace = true }
enum-map = "2.4.2"
serde = "1.0.152"
[dependencies.jpeg-decoder]
version = "0.3.0"

View File

@ -6,6 +6,7 @@ use crate::error::Error;
use crate::shape_utils::DistilledShape;
use downcast_rs::{impl_downcast, Downcast};
use gc_arena::{Collect, GcCell, MutationContext};
use serde::{Deserialize, Serialize};
use std::borrow::Cow;
use std::rc::Rc;
use swf;
@ -205,7 +206,7 @@ pub enum Context3DCommand<'gc> {
#[derive(Copy, Clone, Debug)]
pub struct ShapeHandle(pub usize);
#[derive(Copy, Clone, Debug)]
#[derive(Copy, Clone, Debug, Serialize, Deserialize)]
pub struct ViewportDimensions {
/// The dimensions of the stage's containing viewport.
pub width: u32,

View File

@ -25,3 +25,12 @@ imgtests = ["ruffle_render_wgpu"]
approx = "0.5.1"
pretty_assertions = "1.3.0"
env_logger = "0.10.0"
serde = "1.0"
toml = "0.5.10"
libtest-mimic = "0.6.0"
walkdir = "2.3.2"
[[test]]
name = "tests"
harness = false
path = "tests/regression_tests.rs"

37
tests/README.md Normal file
View File

@ -0,0 +1,37 @@
# SWF Regression Tests
Inside [tests/swfs](tests/swfs) is a large collection of automated tests that are based around running a swf and seeing what happens.
To create a test, make a directory that looks like the following, at minimum:
- directory/
- test.swf
- test.toml
- output.txt
As best practice, please also include any source used to make the swf - such as `test.fla` and any actionscript files.
# Test Structure
## test.toml
Except for `num_frames`, every other field and section is optional.
```toml
num_frames = 1 # The amount of frames of the swf to run
sleep_to_meet_frame_rate = false # If true, slow the tick rate to match the movies requested fps rate
image = false # If true, capture a screenshot of the movie and compare it against a "known good" image
ignore = false # If true, ignore this test. Please comment why, ideally link to an issue, so we know what's up
# Sometimes floating point math doesn't exactly 100% match between flash and rust.
# If you encounter this in a test, the following section will change the output testing from "exact" to "approximate"
# (when it comes to floating point numbers, at least.)
[approximations]
number_patterns = [] # A list of regex patterns with capture groups to additionally treat as approximate numbers
epsilon = 0.0 # The upper bound of any rounding errors. Default is the difference between 1.0 and the next largest representable number
max_relative = 0.0 # The default relative tolerance for testing values that are far-apart. Default is the difference between 1.0 and the next largest representable number
# Options for the player used to run this swf
[player_options]
max_execution_duration = { secs = 15, nanos = 0} # How long can actionscript execute for before being forcefully stopped
viewport_dimensions = { width = 100, height = 100, scale_factor = 1 } # The size of the player. Defaults to the swfs stage size
```

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 3

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 2

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1,2 @@
num_frames = 2
image = true

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 2

View File

@ -0,0 +1 @@
num_frames = 2

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 4

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1,2 @@
num_frames = 1
image = true

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 6

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 2

View File

@ -0,0 +1 @@
num_frames = 5

View File

@ -0,0 +1 @@
num_frames = 3

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 6

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 2

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 3

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 3

View File

@ -0,0 +1 @@
num_frames = 14

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1,4 @@
num_frames = 1
[approximations]
epsilon = 3.0

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1,4 @@
num_frames = 1
[approximations]
epsilon = 0.1

View File

@ -0,0 +1,4 @@
num_frames = 1
[approximations]
epsilon = 3.0

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1,4 @@
num_frames = 1
[approximations]
epsilon = 3.0

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

View File

@ -0,0 +1 @@
num_frames = 1

Some files were not shown because too many files have changed in this diff Show More