dev-flaky 0.1.0

Flaky-test detection for Rust. Repeated-run reliability tracking with per-test confidence scoring. Part of the dev-* verification suite.
Documentation
use dev_flaky::{FlakyResult, FlakyRun, TestReliability};

#[test]
fn smoke_default_iterations() {
    let r = FlakyRun::new("x", "0.1.0");
    assert_eq!(r.iteration_count(), 10);
}

#[test]
fn smoke_iterations_minimum_is_two() {
    let r = FlakyRun::new("x", "0.1.0").iterations(0);
    assert_eq!(r.iteration_count(), 2);
    let r = FlakyRun::new("x", "0.1.0").iterations(1);
    assert_eq!(r.iteration_count(), 2);
}

#[test]
fn smoke_stable_test() {
    let t = TestReliability {
        name: "ok".into(),
        passes: 10,
        failures: 0,
    };
    assert!(t.is_stable());
    assert_eq!(t.reliability(), 1.0);
}

#[test]
fn smoke_broken_test() {
    let t = TestReliability {
        name: "bad".into(),
        passes: 0,
        failures: 10,
    };
    assert!(t.is_broken());
    assert_eq!(t.reliability(), 0.0);
}

#[test]
fn smoke_flaky_test() {
    let t = TestReliability {
        name: "flaky".into(),
        passes: 6,
        failures: 4,
    };
    assert!(t.is_flaky());
    assert!((t.reliability() - 0.6).abs() < 0.0001);
}

#[test]
fn smoke_empty_result_passes() {
    let r = FlakyResult {
        name: "x".into(),
        version: "0.1.0".into(),
        iterations: 10,
        tests: Vec::new(),
    };
    assert!(r.into_report().passed());
}

#[test]
fn smoke_broken_test_produces_failing_report() {
    let r = FlakyResult {
        name: "x".into(),
        version: "0.1.0".into(),
        iterations: 10,
        tests: vec![TestReliability {
            name: "broken".into(),
            passes: 0,
            failures: 10,
        }],
    };
    assert!(r.into_report().failed());
}

#[test]
fn smoke_flaky_count() {
    let r = FlakyResult {
        name: "x".into(),
        version: "0.1.0".into(),
        iterations: 10,
        tests: vec![
            TestReliability {
                name: "stable".into(),
                passes: 10,
                failures: 0,
            },
            TestReliability {
                name: "flaky".into(),
                passes: 5,
                failures: 5,
            },
        ],
    };
    assert_eq!(r.flaky_count(), 1);
}