test(cli): per-test project dirs via a [nodes] pointer — project_lock retired
Every E2E test that mutated the shared demo-project fixture store now mints its own tempdir project whose 2-line Aura.toml points at the once-built fixture crate by absolute [nodes] pointer; the runs/ store follows the project root, so no two tests contend and libtest's default thread parallelism applies. project_load keeps driving the fixture directly (the suite's only proof of the inline-crate routing arm); its single store-mutating test is that binary's only one, so no lock is needed there either. This also closes the documented cross-process race window (#223): there is no shared mutable store left to race on. Measured on the data-full host: cli_run 211s -> 57.2s (140 tests), research_docs 21.1s -> 2.1s (73 tests), project_load green, clippy clean. refs #250
This commit is contained in:
@@ -1,12 +1,11 @@
|
||||
//! Integration test: drive the built `aura` binary as a downstream user would,
|
||||
//! asserting the `run` subcommand's stdout/exit contract and the bad-args path.
|
||||
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::path::Path;
|
||||
use std::process::Command;
|
||||
use std::sync::MutexGuard;
|
||||
|
||||
mod common;
|
||||
use common::{built_project, project_lock};
|
||||
use common::fresh_project;
|
||||
|
||||
/// Path to the freshly-built `aura` binary (Cargo sets this env var for the test
|
||||
/// crate; the binary is named `aura` in `Cargo.toml`).
|
||||
@@ -22,29 +21,6 @@ fn temp_cwd(name: &str) -> std::path::PathBuf {
|
||||
dir
|
||||
}
|
||||
|
||||
/// Removes `<fixture>/runs` on drop (including mid-panic) so a migrated test never
|
||||
/// leaks its content-addressed store into the git-tracked fixture tree.
|
||||
struct RunsCleanup(PathBuf);
|
||||
impl Drop for RunsCleanup {
|
||||
fn drop(&mut self) {
|
||||
std::fs::remove_dir_all(&self.0).ok();
|
||||
}
|
||||
}
|
||||
|
||||
/// Enter the shared built project fixture with a FRESH `runs/` store, serialized.
|
||||
/// Returns the fixture dir (has an Aura.toml, so `provenance()` is `Some`) and the
|
||||
/// guards; bind the guards for the whole test body: `let (dir, _g) = fresh_project();`.
|
||||
/// The guard tuple orders `RunsCleanup` before the `MutexGuard` deliberately: tuple
|
||||
/// fields drop in index order, so the `runs/` removal (index 0) runs while the lock
|
||||
/// (index 1) is still held — the serialization the lock exists to enforce.
|
||||
fn fresh_project() -> (&'static PathBuf, (RunsCleanup, MutexGuard<'static, ()>)) {
|
||||
let lock = project_lock();
|
||||
let dir = built_project();
|
||||
let runs = dir.join("runs");
|
||||
std::fs::remove_dir_all(&runs).ok();
|
||||
(dir, (RunsCleanup(runs), lock))
|
||||
}
|
||||
|
||||
/// #218: a well-formed dissolved verb run outside a project refuses up front
|
||||
/// (exit 1, "needs a project") and leaves no store — parity with `campaign run`.
|
||||
/// The refusal names the INVOKED verb, not a copy-pasted generic string — a
|
||||
@@ -1178,7 +1154,7 @@ fn sweep_real_no_geometry_symbol_refuses_with_exit_1() {
|
||||
let fixture = format!("{}/examples/r_sma_open.json", env!("CARGO_MANIFEST_DIR"));
|
||||
let out = std::process::Command::new(BIN)
|
||||
.args(["sweep", &fixture, "--axis", "sma_signal.fast.length=2,4", "--real", "NONEXISTENT"])
|
||||
.current_dir(dir).output().unwrap();
|
||||
.current_dir(&dir).output().unwrap();
|
||||
assert_eq!(out.status.code(), Some(1));
|
||||
assert!(String::from_utf8_lossy(&out.stderr).contains("no recorded geometry"));
|
||||
}
|
||||
@@ -1264,7 +1240,7 @@ fn sweep_real_blueprint_member_manifest_stamps_the_default_stop() {
|
||||
"--axis", "sma_signal.slow.length=8",
|
||||
"--name", "brp_nostop",
|
||||
])
|
||||
.current_dir(dir)
|
||||
.current_dir(&dir)
|
||||
.output()
|
||||
.unwrap();
|
||||
assert!(out.status.success(), "stderr: {}", String::from_utf8_lossy(&out.stderr));
|
||||
@@ -1311,7 +1287,7 @@ fn sweep_real_blueprint_member_manifest_stamps_project_provenance() {
|
||||
"--axis", "sma_signal.slow.length=8",
|
||||
"--name", "brp_provenance",
|
||||
])
|
||||
.current_dir(dir)
|
||||
.current_dir(&dir)
|
||||
.output()
|
||||
.unwrap();
|
||||
assert!(out.status.success(), "stderr: {}", String::from_utf8_lossy(&out.stderr));
|
||||
@@ -1397,7 +1373,7 @@ fn sweep_real_ohlc_channel_members_run_and_reproduce() {
|
||||
let fixture = format!("{}/examples/r_channel_open.json", env!("CARGO_MANIFEST_DIR"));
|
||||
let axes = std::process::Command::new(BIN)
|
||||
.args(["sweep", &fixture, "--list-axes"])
|
||||
.current_dir(dir)
|
||||
.current_dir(&dir)
|
||||
.output()
|
||||
.unwrap();
|
||||
assert_eq!(
|
||||
@@ -1418,7 +1394,7 @@ fn sweep_real_ohlc_channel_members_run_and_reproduce() {
|
||||
"--axis", "hl_channel.channel_length=3,5",
|
||||
"--name", "chan",
|
||||
])
|
||||
.current_dir(dir)
|
||||
.current_dir(&dir)
|
||||
.output()
|
||||
.unwrap();
|
||||
assert!(out.status.success(), "stderr: {}", String::from_utf8_lossy(&out.stderr));
|
||||
@@ -1439,7 +1415,7 @@ fn sweep_real_ohlc_channel_members_run_and_reproduce() {
|
||||
.to_string();
|
||||
let rep = std::process::Command::new(BIN)
|
||||
.args(["reproduce", &family_id])
|
||||
.current_dir(dir)
|
||||
.current_dir(&dir)
|
||||
.output()
|
||||
.unwrap();
|
||||
assert!(
|
||||
@@ -1486,7 +1462,7 @@ fn sweep_real_blueprint_member_lines_pin_the_dissolved_contract() {
|
||||
"--axis", "sma_signal.slow.length=8,16",
|
||||
"--name", "brp",
|
||||
])
|
||||
.current_dir(dir)
|
||||
.current_dir(&dir)
|
||||
.output()
|
||||
.unwrap();
|
||||
assert!(out.status.success(), "stderr: {}", String::from_utf8_lossy(&out.stderr));
|
||||
@@ -1534,7 +1510,7 @@ fn sweep_real_blueprint_member_lines_pin_the_dissolved_contract() {
|
||||
// exactly one new Sweep family persisted, with the grid's four members.
|
||||
let fams = std::process::Command::new(BIN)
|
||||
.args(["runs", "families"])
|
||||
.current_dir(dir)
|
||||
.current_dir(&dir)
|
||||
.output()
|
||||
.unwrap();
|
||||
assert!(fams.status.success(), "families exit: {:?}", fams.status);
|
||||
@@ -1637,7 +1613,7 @@ fn sweep_real_blueprint_member_lines_pin_the_dissolved_contract() {
|
||||
"--axis", "sma_signal.slow.length=8,16",
|
||||
"--name", "brp",
|
||||
])
|
||||
.current_dir(dir)
|
||||
.current_dir(&dir)
|
||||
.output()
|
||||
.unwrap();
|
||||
assert!(out2.status.success(), "second run stderr: {}", String::from_utf8_lossy(&out2.stderr));
|
||||
@@ -1724,7 +1700,7 @@ fn sweep_real_with_trace_writes_tap_series_to_disk() {
|
||||
"--axis", "sma_signal.slow.length=8",
|
||||
"--trace", "brp",
|
||||
])
|
||||
.current_dir(dir)
|
||||
.current_dir(&dir)
|
||||
.output()
|
||||
.unwrap();
|
||||
// (1) the #168 refusal is lifted: the advertised flag runs instead of exit 2.
|
||||
@@ -1792,13 +1768,13 @@ fn reproduce_real_sweep_family_re_derives_bit_identically() {
|
||||
"--axis", "sma_signal.slow.length=8",
|
||||
"--name", "repro_sweep",
|
||||
])
|
||||
.current_dir(dir)
|
||||
.current_dir(&dir)
|
||||
.output()
|
||||
.unwrap();
|
||||
assert!(mint.status.success(), "sweep mint stderr: {}", String::from_utf8_lossy(&mint.stderr));
|
||||
|
||||
let id = family_id_of_kind(dir, "Sweep");
|
||||
let out = Command::new(BIN).args(["reproduce", &id]).current_dir(dir).output().unwrap();
|
||||
let id = family_id_of_kind(&dir, "Sweep");
|
||||
let out = Command::new(BIN).args(["reproduce", &id]).current_dir(&dir).output().unwrap();
|
||||
let stdout = String::from_utf8_lossy(&out.stdout).into_owned();
|
||||
assert!(
|
||||
out.status.success(),
|
||||
@@ -1946,13 +1922,13 @@ fn reproduce_real_walkforward_family_does_not_panic() {
|
||||
"--axis", "sma_signal.slow.length=8",
|
||||
"--name", "repro_wf",
|
||||
])
|
||||
.current_dir(dir)
|
||||
.current_dir(&dir)
|
||||
.output()
|
||||
.unwrap();
|
||||
assert!(mint.status.success(), "walkforward mint stderr: {}", String::from_utf8_lossy(&mint.stderr));
|
||||
|
||||
let id = family_id_of_kind(dir, "WalkForward");
|
||||
let out = Command::new(BIN).args(["reproduce", &id]).current_dir(dir).output().unwrap();
|
||||
let id = family_id_of_kind(&dir, "WalkForward");
|
||||
let out = Command::new(BIN).args(["reproduce", &id]).current_dir(&dir).output().unwrap();
|
||||
let stdout = String::from_utf8_lossy(&out.stdout).into_owned();
|
||||
let stderr = String::from_utf8_lossy(&out.stderr).into_owned();
|
||||
assert_ne!(
|
||||
@@ -2109,7 +2085,7 @@ fn sweep_real_multi_column_blueprint_opens_high_and_low_columns() {
|
||||
"--axis", "hl_signal.fast.length=2,4",
|
||||
"--axis", "hl_signal.slow.length=8",
|
||||
])
|
||||
.current_dir(dir)
|
||||
.current_dir(&dir)
|
||||
.output()
|
||||
.unwrap();
|
||||
assert!(out.status.success(), "stderr: {}", String::from_utf8_lossy(&out.stderr));
|
||||
@@ -2194,7 +2170,7 @@ fn aura_sweep_real_blueprint_subset_axes_refuses_without_store_litter() {
|
||||
"--axis", "sma_signal.fast.length=2,4",
|
||||
"--name", "c0110-subset",
|
||||
])
|
||||
.current_dir(dir)
|
||||
.current_dir(&dir)
|
||||
.output()
|
||||
.expect("spawn aura sweep (subset axes)");
|
||||
assert_ne!(
|
||||
@@ -2248,7 +2224,7 @@ fn sweep_dissolved_accepts_an_axis_over_a_bound_param() {
|
||||
"--axis", "sma_signal.fast.length=2,3",
|
||||
"--name", "bound-override",
|
||||
])
|
||||
.current_dir(dir)
|
||||
.current_dir(&dir)
|
||||
.output()
|
||||
.expect("spawn aura sweep over a bound-param axis");
|
||||
assert_eq!(
|
||||
@@ -2258,7 +2234,7 @@ fn sweep_dissolved_accepts_an_axis_over_a_bound_param() {
|
||||
path too, stderr: {}",
|
||||
String::from_utf8_lossy(&out.stderr)
|
||||
);
|
||||
let fams = Command::new(BIN).args(["runs", "families"]).current_dir(dir).output().unwrap();
|
||||
let fams = Command::new(BIN).args(["runs", "families"]).current_dir(&dir).output().unwrap();
|
||||
assert!(fams.status.success(), "families exit: {:?}", fams.status);
|
||||
let fams_out = String::from_utf8_lossy(&fams.stdout).into_owned();
|
||||
assert_eq!(fams_out.lines().count(), 1, "exactly one family persisted: {fams_out}");
|
||||
@@ -2608,7 +2584,7 @@ fn generalize_grades_a_candidate_across_two_instruments() {
|
||||
"--stop-length", "14", "--stop-k", "2.0",
|
||||
"--from", FROM_MS, "--to", TO_MS,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura");
|
||||
if out.status.code() == Some(1) {
|
||||
@@ -2654,7 +2630,7 @@ fn generalize_real_e2e_pins_the_exact_current_grade() {
|
||||
"--stop-length", "14", "--stop-k", "2.0",
|
||||
"--from", FROM_MS, "--to", TO_MS,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura");
|
||||
if out.status.code() == Some(1) {
|
||||
@@ -2711,7 +2687,7 @@ fn generalize_grades_a_non_r_sma_blueprint() {
|
||||
"--stop-length", "14", "--stop-k", "2.0",
|
||||
"--from", FROM_MS, "--to", TO_MS,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura");
|
||||
if out.status.code() == Some(1) {
|
||||
@@ -2759,7 +2735,7 @@ fn walkforward_real_e2e_pins_the_exact_current_grade() {
|
||||
"--stop-length", "14", "--stop-k", "2.0",
|
||||
"--from", FROM_MS, "--to", TO_MS,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura");
|
||||
if out.status.code() == Some(1) {
|
||||
@@ -2821,7 +2797,7 @@ fn walkforward_dissolves_a_non_r_sma_blueprint() {
|
||||
"--stop-length", "14", "--stop-k", "2.0",
|
||||
"--from", FROM_MS, "--to", TO_MS,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura");
|
||||
if out.status.code() == Some(1) {
|
||||
@@ -2886,7 +2862,7 @@ fn walkforward_dissolved_accepts_select_plateau() {
|
||||
"--select", "plateau:worst",
|
||||
"--from", "1735689600000", "--to", "1747353600000",
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura");
|
||||
if out.status.code() == Some(1) {
|
||||
@@ -2931,7 +2907,7 @@ fn walkforward_real_e2e_pins_the_exact_current_plateau_grade() {
|
||||
"--from", FROM_MS, "--to", TO_MS,
|
||||
"--select", "plateau:worst",
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura");
|
||||
if out.status.code() == Some(1) {
|
||||
@@ -2986,7 +2962,7 @@ fn walkforward_dissolved_defaults_a_single_omitted_knob() {
|
||||
"--stop-length", "3",
|
||||
"--from", "1735689600000", "--to", "1747353600000",
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura");
|
||||
if out.status.code() == Some(1) {
|
||||
@@ -3134,7 +3110,7 @@ fn walkforward_dissolves_through_the_campaign_path() {
|
||||
"--stop-length", "14", "--stop-k", "2.0",
|
||||
"--from", FROM_MS, "--to", TO_MS,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura");
|
||||
if out.status.code() == Some(1) {
|
||||
@@ -3180,7 +3156,7 @@ fn walkforward_dissolves_through_the_campaign_path() {
|
||||
|
||||
let fams = std::process::Command::new(env!("CARGO_BIN_EXE_aura"))
|
||||
.args(["runs", "families"])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn families");
|
||||
let fams_out = String::from_utf8_lossy(&fams.stdout).into_owned();
|
||||
@@ -3228,7 +3204,7 @@ fn walkforward_stopless_defaults_the_regime_byte_identically_to_explicit_3_2() {
|
||||
"--axis", "sma_signal.fast.length=3", "--axis", "sma_signal.slow.length=12",
|
||||
"--from", FROM_MS, "--to", TO_MS,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura");
|
||||
if stopless.status.code() == Some(1) {
|
||||
@@ -3257,7 +3233,7 @@ fn walkforward_stopless_defaults_the_regime_byte_identically_to_explicit_3_2() {
|
||||
"--stop-length", "3", "--stop-k", "2.0",
|
||||
"--from", FROM_MS, "--to", TO_MS,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura");
|
||||
assert_eq!(
|
||||
@@ -3311,7 +3287,7 @@ fn generalize_dissolves_through_the_campaign_path() {
|
||||
"--stop-length", "14", "--stop-k", "2.0",
|
||||
"--from", FROM_MS, "--to", TO_MS,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura");
|
||||
if out.status.code() == Some(1) {
|
||||
@@ -3362,7 +3338,7 @@ fn generalize_dissolves_through_the_campaign_path() {
|
||||
// per-instrument Sweep family per cell (persisted by the executor).
|
||||
let fams = std::process::Command::new(env!("CARGO_BIN_EXE_aura"))
|
||||
.args(["runs", "families"])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn families");
|
||||
let fams_out = String::from_utf8_lossy(&fams.stdout).into_owned();
|
||||
@@ -3403,7 +3379,7 @@ fn generalize_repeated_identical_invocation_does_not_litter_the_store() {
|
||||
"--stop-length", "14", "--stop-k", "2.0",
|
||||
"--from", FROM_MS, "--to", TO_MS,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura")
|
||||
};
|
||||
@@ -3459,7 +3435,7 @@ fn generalize_distinct_invocations_persist_distinct_campaign_documents() {
|
||||
"--stop-length", "14", "--stop-k", "2.0",
|
||||
"--from", FROM_MS, "--to", TO_MS,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura")
|
||||
};
|
||||
@@ -3506,7 +3482,7 @@ fn generalize_without_explicit_window_resolves_a_shared_window_and_completes() {
|
||||
"--axis", "sma_signal.fast.length=3", "--axis", "sma_signal.slow.length=12",
|
||||
"--stop-length", "14", "--stop-k", "2.0",
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura");
|
||||
if out.status.code() == Some(1) {
|
||||
@@ -3584,7 +3560,7 @@ fn generalize_without_explicit_window_resolves_the_intersection_of_all_symbols()
|
||||
"--axis", "sma_signal.fast.length=3", "--axis", "sma_signal.slow.length=12",
|
||||
"--name", name,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura sweep");
|
||||
assert_eq!(
|
||||
@@ -3616,7 +3592,7 @@ fn generalize_without_explicit_window_resolves_the_intersection_of_all_symbols()
|
||||
"--axis", "sma_signal.fast.length=3", "--axis", "sma_signal.slow.length=12",
|
||||
"--name", "gen-both",
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura generalize");
|
||||
assert_eq!(
|
||||
@@ -3796,7 +3772,7 @@ fn generalize_persists_a_discoverable_cross_instrument_family() {
|
||||
"--stop-length", "14", "--stop-k", "2.0",
|
||||
"--from", FROM_MS, "--to", TO_MS,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura");
|
||||
if out.status.code() == Some(1) {
|
||||
@@ -3813,7 +3789,7 @@ fn generalize_persists_a_discoverable_cross_instrument_family() {
|
||||
// the run persisted the per-instrument members as a discoverable CrossInstrument family.
|
||||
let fams = std::process::Command::new(env!("CARGO_BIN_EXE_aura"))
|
||||
.args(["runs", "families"])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn families");
|
||||
assert!(fams.status.success(), "families exit: {:?}", fams.status);
|
||||
@@ -3858,7 +3834,7 @@ fn generalize_family_members_are_attributed_to_the_right_instrument() {
|
||||
"--stop-length", "14", "--stop-k", "2.0",
|
||||
"--from", FROM_MS, "--to", TO_MS,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura");
|
||||
if out.status.code() == Some(1) {
|
||||
@@ -3874,7 +3850,7 @@ fn generalize_family_members_are_attributed_to_the_right_instrument() {
|
||||
|
||||
let fam = std::process::Command::new(env!("CARGO_BIN_EXE_aura"))
|
||||
.args(["runs", "family", "generalize-0"])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn runs family");
|
||||
assert!(fam.status.success(), "runs family exit: {:?}", fam.status);
|
||||
@@ -3925,7 +3901,7 @@ fn generalize_family_members_stamp_project_provenance() {
|
||||
"--stop-length", "14", "--stop-k", "2.0",
|
||||
"--from", FROM_MS, "--to", TO_MS,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura");
|
||||
if out.status.code() == Some(1) {
|
||||
@@ -3941,7 +3917,7 @@ fn generalize_family_members_stamp_project_provenance() {
|
||||
|
||||
let fam = std::process::Command::new(env!("CARGO_BIN_EXE_aura"))
|
||||
.args(["runs", "family", "generalize-0"])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn runs family");
|
||||
assert!(fam.status.success(), "runs family exit: {:?}", fam.status);
|
||||
@@ -4959,7 +4935,7 @@ fn mc_r_bootstrap_real_e2e_pins_the_exact_current_grade() {
|
||||
"--block-len", "5", "--resamples", "1000", "--seed", "42",
|
||||
"--from", FROM_MS, "--to", TO_MS,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura");
|
||||
if out.status.code() == Some(1) {
|
||||
@@ -5016,7 +4992,7 @@ fn mc_dissolves_a_non_r_sma_blueprint() {
|
||||
"--block-len", "5", "--resamples", "1000", "--seed", "42",
|
||||
"--from", FROM_MS, "--to", TO_MS,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura");
|
||||
if out.status.code() == Some(1) {
|
||||
@@ -5071,7 +5047,7 @@ fn mc_dissolves_through_the_campaign_path() {
|
||||
"--block-len", "5", "--resamples", "1000", "--seed", "42",
|
||||
"--from", FROM_MS, "--to", TO_MS,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura");
|
||||
if out.status.code() == Some(1) {
|
||||
@@ -5125,7 +5101,7 @@ fn mc_dissolves_through_the_campaign_path() {
|
||||
|
||||
let fams = std::process::Command::new(env!("CARGO_BIN_EXE_aura"))
|
||||
.args(["runs", "families"])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn families");
|
||||
let fams_out = String::from_utf8_lossy(&fams.stdout).into_owned();
|
||||
@@ -5181,7 +5157,7 @@ fn mc_real_fits_the_injected_roller_to_a_short_window() {
|
||||
"--block-len", "5", "--resamples", "100", "--seed", "42",
|
||||
"--from", SUB_FROM_MS, "--to", SUB_TO_MS,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura mc");
|
||||
|
||||
@@ -5290,7 +5266,7 @@ fn mc_dissolved_seed_changes_the_bootstrap_draw_not_the_pooled_series() {
|
||||
"--block-len", "5", "--resamples", "1000", "--seed", seed,
|
||||
"--from", FROM_MS, "--to", TO_MS,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura")
|
||||
};
|
||||
@@ -5351,7 +5327,7 @@ fn walkforward_campaign_runs_an_arbitrary_blueprint() {
|
||||
"--stop-length", "3", "--stop-k", "2.0",
|
||||
"--from", FROM_MS, "--to", TO_MS,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura");
|
||||
if out.status.code() == Some(1) {
|
||||
@@ -5403,7 +5379,7 @@ fn mc_campaign_runs_an_arbitrary_blueprint() {
|
||||
"--block-len", "5", "--resamples", "100", "--seed", "7",
|
||||
"--from", FROM_MS, "--to", TO_MS,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura");
|
||||
if out.status.code() == Some(1) {
|
||||
@@ -5452,7 +5428,7 @@ fn generalize_campaign_runs_an_arbitrary_blueprint() {
|
||||
"--stop-length", "3", "--stop-k", "2.0",
|
||||
"--from", GER40_SEPT2024_FROM_MS, "--to", GER40_SEPT2024_TO_MS,
|
||||
])
|
||||
.current_dir(cwd)
|
||||
.current_dir(&cwd)
|
||||
.output()
|
||||
.expect("spawn aura");
|
||||
if out.status.code() == Some(1) {
|
||||
|
||||
Reference in New Issue
Block a user