Skip to content

Commit

Permalink
Rollup merge of rust-lang#67219 - jsgf:command-argv0-debug, r=joshtri…
Browse files Browse the repository at this point in the history
…plett

Fix up Command Debug output when arg0 is specified.

PR rust-lang#66512 added the ability to set argv[0] on
Command. As a side effect, it changed the Debug output to print both the program and
argv[0], which in practice results in stuttery output (`"echo" "echo" "foo"`).

This PR reverts the behaviour to the the old one, so that the command is only printed
once - unless arg0 has been set. In that case it emits `"[command]" "arg0" "arg1" ...`.
  • Loading branch information
Centril authored Dec 20, 2019
2 parents f0eb4b4 + ce56e75 commit b779cbb
Show file tree
Hide file tree
Showing 6 changed files with 30 additions and 2 deletions.
8 changes: 6 additions & 2 deletions src/libstd/sys/unix/process/process_common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -375,8 +375,12 @@ impl ChildStdio {

impl fmt::Debug for Command {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{:?}", self.program)?;
for arg in &self.args {
if self.program != self.args[0] {
write!(f, "[{:?}] ", self.program)?;
}
write!(f, "{:?}", self.args[0])?;

for arg in &self.args[1..] {
write!(f, " {:?}", arg)?;
}
Ok(())
Expand Down
24 changes: 24 additions & 0 deletions src/test/ui/command/command-argv0-debug.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// run-pass

// ignore-windows - this is a unix-specific test
// ignore-cloudabi no processes
// ignore-emscripten no processes
// ignore-sgx no processes
#![feature(process_set_argv0)]

use std::os::unix::process::CommandExt;
use std::process::Command;

fn main() {
let mut command = Command::new("some-boring-name");

assert_eq!(format!("{:?}", command), r#""some-boring-name""#);

command.args(&["1", "2", "3"]);

assert_eq!(format!("{:?}", command), r#""some-boring-name" "1" "2" "3""#);

command.arg0("exciting-name");

assert_eq!(format!("{:?}", command), r#"["some-boring-name"] "exciting-name" "1" "2" "3""#);
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 comments on commit b779cbb

Please sign in to comment.