#reaper #midi #daw #plugin

rea-rs-test

用于在真实REAPER实例中测试REAPER扩展的库

3个版本

0.1.3 2024年3月31日
0.1.2 2022年12月26日
0.1.1 2022年12月26日

804音频

Download history 2/week @ 2024-05-21 1/week @ 2024-05-28

每月下载 113

MIT 许可证

455KB
12K SLoC

rea-rs-test

简化REAPER扩展插件测试。

这个集成测试套件最初由Benjamin Klum为 reaper-rs 编写,但依赖于未发布且不会很快发布的 reaper-high crate。此外,它还深度集成到库中。

此版本尽可能封装,留下简单的测试接口。

对于测试类型为 cdylib 的REAPER扩展,您需要将项目文件夹转换为工作空间。所以,基本上,项目树看起来像这样

workspace_directory
├── Cargo.toml
├── README.md
├—— my_lib
   ├—— src
      └── lib.rs
└── test
    ├── Cargo.toml
    ├── src
       └── lib.rs
    └── tests
        └── integration_test.rs

test crate不会提供给最终用户,但会用于测试您的库。由于需要修补reaper-low和reaper-medium,因此 test/Cargo.toml 的内容

[package]
edition = "2021"
name = "reaper-test-extension-plugin"
publish = false
version = "0.1.0"

[dependencies]
rea-rs = "0.1.1"
rea-rs-macros = "0.1.0"
rea-rs-test = "0.1.0"
my_lib = {path = "../my_lib"}

[lib]
crate-type = ["cdylib"]
name = "reaper_test_extension_plugin"

test/tests/integration_test.rs 的内容

use rea_rs_test::{run_integration_test, ReaperVersion};
#[test]
fn main() {
    run_integration_test(ReaperVersion::latest());
}

test/src/lib.rs 是放置集成测试的文件。

use rea_rs_macros::reaper_extension_plugin;
use rea_rs_test::*;
use rea_rs::{Reaper; PluginContext};
use std::error::Error;
fn hello_world(reaper: &mut Reaper) -> TestStepResult {
    reaper.show_console_msg("Hello world!");
    Ok(())
}
#[reaper_extension_plugin]
fn test_extension(context: PluginContext) -> Result<(), Box<dyn Error>> {
    // setup test global environment
    let test = ReaperTest::setup(context, "test_action");
    // Push single test step.
    test.push_test_step(TestStep::new("Hello World!", hello_world));
    Ok(())
}

要运行集成测试,请转到测试文件夹,然后输入: cargo build --workspace; cargo test

提示

使用crate logenv_logger 将打印到stdio。集成测试会自动开启env logger。

依赖关系

~22–37MB
~668K SLoC