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

nordisk/monetize

crates/monetize-admin/tests/console_stale.rs

//! ★ **[console-stale]** (2026-10-12): a console bundle older than its sources
//! is refused by name; a fresh one is taken.

#[path = "../build/console_fresh.rs"]
mod console_fresh;

use std::fs::{self, File};
use std::time::{Duration, SystemTime};

fn touch(p: &std::path::Path, at: SystemTime) {
    fs::create_dir_all(p.parent().unwrap()).unwrap();
    fs::write(p, b"x").unwrap();
    File::options()
        .write(true)
        .open(p)
        .unwrap()
        .set_modified(at)
        .unwrap();
}

#[test]
fn a_bundle_older_than_its_sources_is_refused_by_name_and_a_fresh_one_is_taken() {
    let root = std::env::temp_dir().join(format!("console-stale-{}", std::process::id()));
    let _ = fs::remove_dir_all(&root);
    let (web, dist) = (
        root.join("monetize-ui-web"),
        root.join("monetize-ui-web/dist"),
    );
    let t0 = SystemTime::now() - Duration::from_secs(3600);
    touch(&dist.join("index.html"), t0);
    touch(&web.join("src/passkey.rs"), t0 + Duration::from_secs(60));
    let refused = console_fresh::check(&dist, &web).unwrap_err();
    assert!(
        refused.contains("[console-stale]") && refused.contains("passkey.rs"),
        "{refused}"
    );
    touch(&dist.join("index.html"), t0 + Duration::from_secs(120));
    assert_eq!(console_fresh::check(&dist, &web), Ok(()), "rebuilt: taken");
    let _ = fs::remove_dir_all(&root);
}