Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/gunnar-ui

xtask/tests/ci_quick.rs

//! **The quick set fits the forge's 40 GB target** (lane CI-RED, 2026-10-31): gunnar-ui-ci was
//! stopped at 6878ddc5 with 42 GB of target. Each per-feature step of gunnar-ui-server is another
//! feature resolution, so another copy of the server and everything it pulls, in the one target.
//! As Gunnar's 8c399ddf: the quick set builds with no debug info, no symbol table and no
//! incremental cache (`QUICK_ENV`), and its off-by-default surfaces are compiled and tested
//! together in ONE step (`features`); the per-feature steps run from the full set on.

use nornir_xtask_support::ci::Mode;

#[test]
fn the_quick_set_is_one_feature_union_and_the_per_feature_steps_are_the_full_sets() {
    let plan = xtask::ci::plan(&xtask::workspace_root());
    let quick: Vec<&str> = plan.steps.iter().filter(|s| s.runs_in(Mode::Quick)).map(|s| s.label()).collect();
    assert_eq!(quick, ["lockcheck", "test", "features", "wasm", "wasm-metered", "browser"]);
    let f = plan.steps.iter().find(|s| s.label() == "features").unwrap();
    assert_eq!(
        f.describe(),
        "[toolchain] cargo test --locked -p gunnar-ui-server --features metered,public-site,forges,mail,sso,mcp"
    );
    for label in ["public-site", "public-site-metered", "forges", "forges-metered", "sso", "mail", "mcp", "rows"] {
        let s = plan.steps.iter().find(|s| s.label() == label).unwrap_or_else(|| panic!("a {label} step"));
        assert!(s.runs_in(Mode::Full) && !s.runs_in(Mode::Quick), "{label}: the full set's");
    }
    assert_eq!(
        xtask::ci::QUICK_ENV,
        &[
            ("CARGO_INCREMENTAL", "0"),
            ("CARGO_PROFILE_DEV_DEBUG", "0"),
            ("CARGO_PROFILE_TEST_DEBUG", "0"),
            ("CARGO_PROFILE_DEV_STRIP", "symbols"),
            ("CARGO_PROFILE_TEST_STRIP", "symbols"),
        ]
    );
    assert_eq!(xtask::ci::mode_env(Mode::Quick), xtask::ci::QUICK_ENV);
    assert!(xtask::ci::mode_env(Mode::Full).is_empty(), "the full set keeps its profile");
}