test(cli): the terminal tests speak BSD script on macOS; a noted root is compared as the system spells it
The portable macOS job, now past the server start: `script -qefc` is util-linux's spelling; macOS's BSD `script` has no -f and no -c, so the three pseudo-terminal helpers choose the spelling for the OS. And the root noted "for next time" is the canonical path (macOS writes /tmp as /private/tmp); the test compares it canonically. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HS8WZziDnyxunC23MUxrLp
This commit is contained in:
1 parent
1353be0c10
commit
932c05177f
3 files changed
+53
-7
No files matched your search
@@ -1944,7 +1944,7 @@ fn the_books_command_takes_its_flags_and_asks_before_adopting() {
|
||||
args.push(a.to_string());
|
||||
}
|
||||
let mut child = Command::new("script")
|
||||
.args(["-qefc", &args.join(" "), "/dev/null"])
|
||||
.args(script_args(&args.join(" ")))
|
||||
.env_clear()
|
||||
.env("PATH", "/usr/bin:/bin")
|
||||
.env("HOME", home.dir.path())
|
||||
@@ -2948,3 +2948,17 @@ fn token_check_says_where_the_token_file_stands_and_an_unreadable_one_is_said()
|
||||
let (_, listed, _) = token(&["list"]);
|
||||
assert!(listed.contains("No tokens yet"), "{listed}");
|
||||
}
|
||||
|
||||
/// `script`'s arguments to run `command` on a pseudo-terminal, quietly,
|
||||
/// with the command's exit code as its own: util-linux's spelling on
|
||||
/// Linux, BSD's on macOS (no `-f`, no `-c`; the command after the file).
|
||||
fn script_args(command: &str) -> Vec<String> {
|
||||
if cfg!(target_os = "macos") {
|
||||
["-qeF", "/dev/null", "/bin/sh", "-c", command]
|
||||
} else {
|
||||
["-qefc", command, "/dev/null"]
|
||||
}
|
||||
.into_iter()
|
||||
.map(String::from)
|
||||
.collect()
|
||||
}
|
||||
Reference in new issue
Block a user