chore(release): prepare public source release

This commit is contained in:
MercuryToolbox Release
2026-07-18 15:41:59 +08:00
commit e365e5df4d
508 changed files with 163373 additions and 0 deletions
+159
View File
@@ -0,0 +1,159 @@
//! Integration tests for the `snip` command.
use std::fs;
use std::path::PathBuf;
use assert_cmd::Command;
use predicates::prelude::*;
use tempfile::{TempDir, tempdir};
const SAMPLE_RS: &str = "reading/sample.rs";
fn cargo_command() -> Command {
Command::cargo_bin("snip").expect("binary")
}
fn fixture(path: &str) -> PathBuf {
PathBuf::from(env!("CARGO_MANIFEST_DIR"))
.join("..")
.join("..")
.join("fixtures")
.join(path)
}
fn temp_file(name: &str, contents: impl AsRef<[u8]>) -> (TempDir, PathBuf) {
let dir = tempdir().expect("tempdir");
let path = dir.path().join(name);
fs::write(&path, contents).expect("fixture");
(dir, path)
}
fn pwsh_command(script: impl AsRef<str>) -> Command {
let mut command = Command::new("pwsh");
command
.arg("-NoProfile")
.arg("-Command")
.arg(script.as_ref());
command
}
fn ps_quote(value: impl std::fmt::Display) -> String {
format!("'{}'", value.to_string().replace('\'', "''"))
}
#[test]
fn extracts_requested_line_ranges() {
let mut command = cargo_command();
command
.arg("--lines")
.arg("18:31")
.arg(fixture(SAMPLE_RS))
.assert()
.success()
.stdout(predicate::str::contains("reason=lines"))
.stdout(predicate::str::contains("18: pub fn run"))
.stdout(predicate::str::contains("31: }"));
}
#[test]
fn extracts_symbol_blocks() {
let mut command = cargo_command();
command
.arg("--symbol")
.arg("ComputeScore")
.arg(fixture("reading/sample.cs"))
.assert()
.success()
.stdout(predicate::str::contains("reason=symbol:ComputeScore"))
.stdout(predicate::str::contains(
"9: private int ComputeScore",
))
.stdout(predicate::str::contains("15: }"));
}
#[test]
fn extracts_regex_matches_with_context_as_json() {
let mut command = cargo_command();
command
.arg("--around")
.arg("Mode::Fast")
.arg("--context")
.arg("1")
.arg("--json")
.arg(fixture("reading/sample.rs"))
.assert()
.success()
.stdout(predicate::str::contains("\"reason\":\"around:Mode::Fast\""))
.stdout(predicate::str::contains("\"start_line\":21"))
.stdout(predicate::str::contains("\"end_line\":23"));
}
#[test]
fn supports_stdin_content_snipping() {
let binary = assert_cmd::cargo::cargo_bin("snip");
let input = fixture(SAMPLE_RS);
let script = format!(
"[System.IO.File]::ReadLines({}) | & {} --around 'helper' --context 0",
ps_quote(input.display()),
ps_quote(binary.display())
);
let mut command = pwsh_command(script);
command
.assert()
.success()
.stdout(predicate::str::contains("<stdin>"))
.stdout(predicate::str::contains("fn helper"));
}
#[test]
fn utf8_bom_stdin_does_not_pollute_first_snippet_line() {
let mut command = cargo_command();
command
.args(["--lines", "1:1"])
.write_stdin("\u{feff}fn main() {}\n")
.assert()
.success()
.stdout(predicate::str::contains("1: fn main() {}"));
}
#[test]
fn utf8_bom_file_does_not_pollute_first_snippet_line() {
let (_dir, path) = temp_file("bom.rs", "\u{feff}fn main() {}\n");
let mut command = cargo_command();
command
.arg("--lines")
.arg("1:1")
.arg(&path)
.assert()
.success()
.stdout(predicate::str::contains("1: fn main() {}"));
}
#[test]
fn invalid_utf8_file_reports_read_error() {
let (_dir, path) = temp_file("invalid-utf8.rs", [0x66, 0x6E, 0x80, 0x0A]);
let mut command = cargo_command();
command
.arg("--lines")
.arg("1:1")
.arg(&path)
.assert()
.failure()
.stderr(predicate::str::contains("failed to read"))
.stderr(predicate::str::contains("invalid-utf8.rs"));
}
#[test]
fn help_includes_selector_examples() {
let mut command = cargo_command();
command
.arg("--help")
.assert()
.success()
.stdout(predicate::str::contains("--lines"))
.stdout(predicate::str::contains("--symbol"))
.stdout(predicate::str::contains("ConvertFrom-Json"));
}