From b8ab2c125fa7803a6c68e9e6a940e662d87e00c5 Mon Sep 17 00:00:00 2001 From: Joseph Crail Date: Thu, 9 Jul 2015 15:02:38 -0400 Subject: [PATCH] Fix stdbuf regression. When replacing range_inclusive(), I introduced a bug when parsing arguments. I added a smoke test to prevent basic regressions in the future. --- Makefile | 1 + src/stdbuf/stdbuf.rs | 2 +- test/stdbuf.rs | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 test/stdbuf.rs diff --git a/Makefile b/Makefile index 7dab6188c..ed43eceab 100644 --- a/Makefile +++ b/Makefile @@ -185,6 +185,7 @@ TEST_PROGS := \ seq \ sort \ split \ + stdbuf \ tac \ test \ tr \ diff --git a/src/stdbuf/stdbuf.rs b/src/stdbuf/stdbuf.rs index 1423d86a7..86b7249f6 100644 --- a/src/stdbuf/stdbuf.rs +++ b/src/stdbuf/stdbuf.rs @@ -225,7 +225,7 @@ pub fn uumain(args: Vec) -> i32 { let mut options = ProgramOptions {stdin: BufferType::Default, stdout: BufferType::Default, stderr: BufferType::Default}; let mut command_idx = -1; - for i in 1 .. args.len()-1 { + for i in 1 .. args.len()+1 { match parse_options(&args[1 .. i], &mut options, &opts) { Ok(OkMsg::Buffering) => { command_idx = i - 1; diff --git a/test/stdbuf.rs b/test/stdbuf.rs new file mode 100644 index 000000000..ff7d5259f --- /dev/null +++ b/test/stdbuf.rs @@ -0,0 +1,16 @@ +use std::process::Command; +use util::*; + +static PROGNAME: &'static str = "./stdbuf"; + +#[path = "common/util.rs"] +#[macro_use] +mod util; + +#[test] +fn test_stdbuf_unbuffered_stdout() { + // This is a basic smoke test + let mut cmd = Command::new(PROGNAME); + let result = run_piped_stdin(&mut cmd.args(&["-o0", "head"]), "The quick brown fox jumps over the lazy dog."); + assert_eq!(result.stdout, "The quick brown fox jumps over the lazy dog."); +}