proto_cli 0.57.3

A multi-language version manager, a unified toolchain.
#![cfg(windows)]

use proto_core::test_utils::create_empty_proto_sandbox;

#[test]
fn exports_posix_paths_for_bash_in_emulated_shells() {
    let sandbox = create_empty_proto_sandbox();

    let assert = sandbox.run_bin(|cmd| {
        cmd.arg("activate").arg("bash").arg("--export");
        cmd.env("MSYSTEM", "MINGW64");
    });

    assert.debug();

    let output = assert.output();
    let path_line = output
        .lines()
        .find(|line| line.contains("_PROTO_ACTIVATED_PATH"))
        .expect("path export exists");

    assert!(path_line.contains("/.proto/shims"));
    assert!(path_line.contains("/.proto/bin"));
    assert!(!path_line.contains('\\'));
    assert!(path_line.contains('/'));
    assert!(path_line.contains(":"));

    let shims_index = path_line.find("/.proto/shims").unwrap();
    let bin_index = path_line.find("/.proto/bin").unwrap();
    assert!(shims_index < bin_index);
}

#[test]
fn leaves_native_shell_paths_unchanged() {
    let sandbox = create_empty_proto_sandbox();

    let assert = sandbox.run_bin(|cmd| {
        cmd.arg("activate").arg("pwsh").arg("--export");
        cmd.env("MSYSTEM", "MINGW64");
    });

    let output = assert.output();
    let path_line = output
        .lines()
        .find(|line| line.contains("_PROTO_ACTIVATED_PATH"))
        .expect("path export exists");

    assert!(path_line.contains(';'));
    assert!(!path_line.contains("/.proto/shims:/"));
}