mirror of
https://github.com/storytold/soundcraft.git
synced 2026-10-24 10:36:46 -06:00
CI: one test binary per crate, nextest, line tables only (#985)
* Build: line tables only for workspace crates, no debug info for dependencies Full debug info made most of the dev and test target size and link time. Line tables keep file and line numbers in backtraces; dependency frames lose them. * Tests: build each crate's integration tests as one binary Each tests/*.rs file was its own test binary: 98 binaries, each linking the crate and its dependencies. The files are now modules of tests/it/main.rs, one binary per crate, which cuts link time and target size. Filter by module: `cargo test -p <crate> --test it <module>::`. Binaries with their own main (harness = false) in clap-host and vst3-host stay separate, as do the ui-egui tests that switch the process-wide Light/Dark palette and recovery.rs, whose autosave locks leak into child processes other tests start. * Xtask: run tests with nextest, doctests apart, and no examples in the test build cargo xtask ci runs the tests with cargo nextest when it is installed, else cargo test with a notice, and doctests with cargo test --doc. The test build leaves out examples (--lib --bins --tests); clippy --all-targets still compiles them. Test binaries with harness = false run under cargo test: their own main cannot answer nextest's --list. clippy and the wasm check keep going past a failing crate. cargo xtask test runs the test step alone.
This commit is contained in:
@@ -67,9 +67,11 @@ type_complexity = "allow"
|
||||
|
||||
[profile.dev.package."*"]
|
||||
opt-level = 2
|
||||
debug = false
|
||||
|
||||
[profile.dev]
|
||||
opt-level = 1
|
||||
debug = "line-tables-only"
|
||||
|
||||
[profile.release]
|
||||
opt-level = 3
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
//! `soundcraft-cli mcp` with the automation root flags, run as the real binary.
|
||||
// Integration tests: unwrapping and panicking on failure is fine here, unlike in shipped code (AGENTS.md).
|
||||
#![allow(clippy::unwrap_used, clippy::expect_used, clippy::panic)]
|
||||
|
||||
use std::io::Write;
|
||||
use std::path::PathBuf;
|
||||
@@ -0,0 +1,5 @@
|
||||
//! Integration tests, built as one test binary: each file is a module.
|
||||
|
||||
#[allow(clippy::unwrap_used, clippy::expect_used, clippy::panic)]
|
||||
mod cli;
|
||||
mod closed_stdout;
|
||||
@@ -0,0 +1,4 @@
|
||||
//! Integration tests, built as one test binary: each file is a module.
|
||||
|
||||
#[cfg(target_os = "macos")]
|
||||
mod system_units;
|
||||
@@ -1,6 +1,5 @@
|
||||
//! End to end against the Audio Units Apple ships with macOS: scan → instantiate → params →
|
||||
//! process → state, plus an instrument playing a note. Skips (passes) when a unit is missing.
|
||||
#![cfg(target_os = "macos")]
|
||||
|
||||
use soundcraft_dsp::{Category, Plugin};
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
//! Integration tests, built as one test binary: each file is a module.
|
||||
|
||||
mod encode_format;
|
||||
mod malformed;
|
||||
mod roundtrip;
|
||||
mod stream;
|
||||
mod wav_empty_data;
|
||||
-1
@@ -1,7 +1,6 @@
|
||||
//! `Headless::with_automation_roots` through the real MCP protocol: every file a command reads
|
||||
//! stays inside the read root, every file it writes inside the write root.
|
||||
// Integration tests: unwrapping and panicking on failure is fine here, unlike in shipped code (AGENTS.md).
|
||||
#![allow(clippy::unwrap_used, clippy::expect_used, clippy::panic)]
|
||||
|
||||
use serde_json::{Value, json};
|
||||
use soundcraft_automation::{Headless, mcp::Server};
|
||||
@@ -0,0 +1,5 @@
|
||||
//! Integration tests, built as one test binary: each file is a module.
|
||||
|
||||
mod agent_tasks;
|
||||
#[allow(clippy::unwrap_used, clippy::expect_used, clippy::panic)]
|
||||
mod automation_roots;
|
||||
@@ -3,8 +3,7 @@
|
||||
|
||||
use soundcraft_dsp::{Category, Unit};
|
||||
|
||||
mod common;
|
||||
use common::fixture_dir;
|
||||
use crate::common::fixture_dir;
|
||||
|
||||
const GAIN: &str = "clap:org.soundcraft.test.gain";
|
||||
const SYNTH: &str = "clap:org.soundcraft.test.synth";
|
||||
@@ -0,0 +1,6 @@
|
||||
//! Integration tests, built as one test binary: each file is a module.
|
||||
|
||||
#[path = "../common/mod.rs"]
|
||||
mod common;
|
||||
|
||||
mod fixture_e2e;
|
||||
@@ -0,0 +1,7 @@
|
||||
//! Integration tests, built as one test binary: each file is a module.
|
||||
|
||||
mod fuzz;
|
||||
mod offline_meters;
|
||||
mod offline_normalize;
|
||||
mod plugins;
|
||||
mod transients;
|
||||
@@ -0,0 +1,17 @@
|
||||
//! Integration tests, built as one test binary: each file is a module.
|
||||
|
||||
mod bounce;
|
||||
mod clap_e2e;
|
||||
mod consolidate_selection;
|
||||
mod current_feet_frames_position;
|
||||
mod edit_modes;
|
||||
mod fader_merge_full_history;
|
||||
mod hostile_params;
|
||||
mod hostile_sessions;
|
||||
mod long_renders;
|
||||
mod midi_offset;
|
||||
mod mix_required_params;
|
||||
mod random_edits;
|
||||
mod recording;
|
||||
mod session_transport;
|
||||
mod trim_to_selection;
|
||||
@@ -0,0 +1,4 @@
|
||||
//! Integration tests, built as one test binary: each file is a module.
|
||||
|
||||
mod ops;
|
||||
mod smf;
|
||||
@@ -1,6 +1,5 @@
|
||||
//! A bounce of a bus keeps the requested timeline interval when an aux returns onto the bus
|
||||
//! (its insert's lookahead is compensated like the main mix's).
|
||||
#![allow(clippy::unwrap_used, clippy::expect_used, clippy::panic)]
|
||||
|
||||
use soundcraft_audio_io::AudioBuffer;
|
||||
use soundcraft_mix::{render_bus, render_range};
|
||||
@@ -0,0 +1,6 @@
|
||||
//! Integration tests, built as one test binary: each file is a module.
|
||||
|
||||
#[allow(clippy::unwrap_used, clippy::expect_used, clippy::panic)]
|
||||
mod bus_aux_interval;
|
||||
#[allow(clippy::unwrap_used, clippy::expect_used, clippy::panic)]
|
||||
mod master_insert_latency;
|
||||
-1
@@ -1,6 +1,5 @@
|
||||
//! Delay compensation covers the inserts of the master faders: a bounce of the main mix lines up
|
||||
//! with the same mix without them.
|
||||
#![allow(clippy::unwrap_used, clippy::expect_used, clippy::panic)]
|
||||
|
||||
use soundcraft_audio_io::AudioBuffer;
|
||||
use soundcraft_mix::{MixEngine, render_range};
|
||||
@@ -0,0 +1,4 @@
|
||||
//! Integration tests, built as one test binary: each file is a module.
|
||||
|
||||
mod meter_grid_contract;
|
||||
mod min_secs_exact_ms;
|
||||
@@ -0,0 +1,53 @@
|
||||
//! Integration tests, built as one test binary: each file is a module.
|
||||
//!
|
||||
//! Tests that switch the process-wide Light/Dark palette, and `recovery.rs` (whose autosave locks
|
||||
//! leak into child processes other tests start), are separate binaries in `tests/`.
|
||||
|
||||
mod appearance;
|
||||
mod audio_device;
|
||||
mod bounce;
|
||||
mod bounce_dialog;
|
||||
mod clip_gain_fader;
|
||||
mod clip_menu;
|
||||
mod command_reachability;
|
||||
mod commands_filter;
|
||||
mod docking_workflows;
|
||||
mod edit_menu;
|
||||
mod edit_modes;
|
||||
mod edit_window_headers;
|
||||
mod group_dialog;
|
||||
mod hide_floating;
|
||||
mod idle;
|
||||
mod key_families;
|
||||
mod marker_rename;
|
||||
mod menu_search;
|
||||
mod midi_double_click;
|
||||
mod midi_editor_keys;
|
||||
mod midi_front_visibility;
|
||||
mod midi_panel;
|
||||
mod midi_quantize;
|
||||
mod mix_narrow_headers;
|
||||
mod mix_separate;
|
||||
mod new_midi_clip;
|
||||
mod new_tracks;
|
||||
mod open_on_insert;
|
||||
mod plugin_window;
|
||||
mod pro_tools_keys;
|
||||
mod record_hint;
|
||||
mod rename_dialog;
|
||||
mod sampler_window;
|
||||
mod save_as_replace;
|
||||
mod save_changes;
|
||||
mod send_window;
|
||||
mod shared_controls;
|
||||
mod shortcuts;
|
||||
mod side_lists_access;
|
||||
mod toolbar_tempo;
|
||||
mod track_height;
|
||||
mod track_list;
|
||||
mod track_name_menu;
|
||||
mod trackpad;
|
||||
mod tracks_scroll_bar;
|
||||
mod waveform;
|
||||
mod window_shortcuts;
|
||||
mod zoom_toggle;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user