simit 0.17.7

Semver-aware git commit helper for Rust projects
Documentation
use std::fs;
use std::process::Command;

use tempfile::TempDir;

mod common;

fn simit() -> Command {
    common::simit()
}

fn init_package() -> TempDir {
    let temp = TempDir::new().unwrap();
    fs::write(
        temp.path().join("Cargo.toml"),
        r#"[package]
name = "demo-app"
version = "0.1.0"
edition = "2024"

[package.metadata.simit.winget]
package_id = "Example.DemoApp"
download_repo = "example/demo-app"
zip_archive = "demo-app-{version}-x86_64-windows.zip"
"#,
    )
    .unwrap();
    fs::create_dir(temp.path().join("src")).unwrap();
    fs::write(temp.path().join("src/main.rs"), "fn main() {}\n").unwrap();
    temp
}

#[test]
fn submit_dry_run_prints_wingetcreate_command_without_secret() {
    let temp = init_package();

    let output = simit()
        .current_dir(temp.path())
        .env("WINGET_PAT", "secret-token")
        .args([
            "dist",
            "winget",
            "submit",
            "--version",
            "1.2.3",
            "--dry-run",
            "--wine",
            "fake-wine",
            "--wingetcreate",
            temp.path().join("fake-wingetcreate.exe").to_str().unwrap(),
        ])
        .output()
        .unwrap();

    assert!(
        output.status.success(),
        "{}",
        String::from_utf8_lossy(&output.stderr)
    );
    let stdout = String::from_utf8(output.stdout).unwrap();
    assert!(stdout.contains("fake-wine "));
    assert!(stdout.contains("fake-wingetcreate.exe update Example.DemoApp"));
    assert!(stdout.contains("--version 1.2.3"));
    assert!(stdout.contains("https://codeberg.org/example/demo-app/releases/download/1.2.3/demo-app-1.2.3-x86_64-windows.zip|x64"));
    assert!(stdout.contains("--token $WINGET_PAT --submit"));
    assert!(!stdout.contains("secret-token"));
}