58 lines
1.8 KiB
Rust
58 lines
1.8 KiB
Rust
//! Integration tests for the `sysshape` command.
|
|
|
|
use assert_cmd::Command;
|
|
use predicates::prelude::*;
|
|
use std::fs;
|
|
use tempfile::tempdir;
|
|
|
|
fn cargo_command() -> Command {
|
|
Command::cargo_bin("sysshape").expect("binary")
|
|
}
|
|
|
|
#[test]
|
|
fn summarizes_system_as_json() {
|
|
let mut command = cargo_command();
|
|
command
|
|
.args(["--json", "--env", "safe", "--group", "shell"])
|
|
.assert()
|
|
.success()
|
|
.stdout(predicate::str::contains("\"system\""))
|
|
.stdout(predicate::str::contains("\"architecture\""))
|
|
.stdout(predicate::str::contains("\"tools\""));
|
|
}
|
|
|
|
#[test]
|
|
fn detects_only_present_shimmed_tools() {
|
|
let temp = tempdir().expect("tempdir");
|
|
let cargo_cmd = temp.path().join("cargo.cmd");
|
|
let cmake_cmd = temp.path().join("cmake.cmd");
|
|
fs::write(&cargo_cmd, "@echo off\r\necho cargo 9.9.9\r\n").expect("cargo shim");
|
|
fs::write(&cmake_cmd, "@echo off\r\necho cmake version 3.99.0\r\n").expect("cmake shim");
|
|
|
|
let mut command = cargo_command();
|
|
command
|
|
.args(["--json", "--env", "none", "--group", "all"])
|
|
.env("PATH", temp.path())
|
|
.env("PATHEXT", ".CMD;.EXE")
|
|
.assert()
|
|
.success()
|
|
.stdout(predicate::str::contains("\"name\":\"cargo\""))
|
|
.stdout(predicate::str::contains("\"version\":\"cargo 9.9.9\""))
|
|
.stdout(predicate::str::contains("\"name\":\"cmake\""))
|
|
.stdout(predicate::str::contains(
|
|
"\"version\":\"cmake version 3.99.0\"",
|
|
));
|
|
}
|
|
|
|
#[test]
|
|
fn help_includes_group_and_env_examples() {
|
|
let mut command = cargo_command();
|
|
command
|
|
.arg("--help")
|
|
.assert()
|
|
.success()
|
|
.stdout(predicate::str::contains("--env"))
|
|
.stdout(predicate::str::contains("--group"))
|
|
.stdout(predicate::str::contains("sysshape --json"));
|
|
}
|