diff --git a/Makefile b/Makefile index 08f722cd5..798d3e998 100644 --- a/Makefile +++ b/Makefile @@ -165,6 +165,7 @@ TEST_PROGS := \ base64 \ basename \ cat \ + cksum \ cp \ cut \ env \ @@ -189,6 +190,7 @@ TEST_PROGS := \ sort \ split \ stdbuf \ + sum \ tac \ test \ touch \ diff --git a/test/cksum.rs b/test/cksum.rs new file mode 100644 index 000000000..c5ecdf3be --- /dev/null +++ b/test/cksum.rs @@ -0,0 +1,39 @@ +use std::process::Command; +use util::*; + +static PROGNAME: &'static str = "./cksum"; + +#[path = "common/util.rs"] +#[macro_use] +mod util; + +#[test] +fn test_single_file() { + let mut cmd = Command::new(PROGNAME); + let result = run(&mut cmd.arg("lorem_ipsum.txt")); + + assert_empty_stderr!(result); + assert!(result.success); + assert_eq!(result.stdout, get_file_contents("single_file.expected")); +} + +#[test] +fn test_multiple_files() { + let mut cmd = Command::new(PROGNAME); + let result = run(&mut cmd.arg("lorem_ipsum.txt").arg("alice_in_wonderland.txt")); + + assert_empty_stderr!(result); + assert!(result.success); + assert_eq!(result.stdout, get_file_contents("multiple_files.expected")); +} + +#[test] +fn test_stdin() { + let input = get_file_contents("lorem_ipsum.txt"); + let mut cmd = Command::new(PROGNAME); + let result = run_piped_stdin(&mut cmd, input); + + assert_empty_stderr!(result); + assert!(result.success); + assert_eq!(result.stdout, get_file_contents("stdin.expected")); +} diff --git a/test/fixtures/cksum/alice_in_wonderland.txt b/test/fixtures/cksum/alice_in_wonderland.txt new file mode 100644 index 000000000..a95562a1c --- /dev/null +++ b/test/fixtures/cksum/alice_in_wonderland.txt @@ -0,0 +1,5 @@ +Alice was beginning to get very tired of sitting by +her sister on the bank, and of having nothing to do: once or twice +she had peeped into the book her sister was reading, but it had no +pictures or conversations in it, "and what is the use of a book," +thought Alice "without pictures or conversation?" diff --git a/test/fixtures/cksum/lorem_ipsum.txt b/test/fixtures/cksum/lorem_ipsum.txt new file mode 100644 index 000000000..16752446c --- /dev/null +++ b/test/fixtures/cksum/lorem_ipsum.txt @@ -0,0 +1,13 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing +elit. Nunc interdum suscipit sem vel ornare. Proin euismod, justo +sed mollis dictum, eros urna ultricies augue, eu pharetra mi ex id +ante. Duis convallis porttitor aliquam. Nunc vitae tincidunt ex. +Suspendisse iaculis ligula ac diam consectetur lacinia. Donec vel +velit dui. Etiam fringilla, dolor quis tempor vehicula, lacus +turpis bibendum velit, et pellentesque elit odio a magna. Cras +vulputate tortor non libero vehicula euismod. Aliquam tincidunt +nisl eget enim cursus, viverra sagittis magna commodo. Cras rhoncus +egestas leo nec blandit. Suspendisse potenti. Etiam ullamcorper +leo vel lacus vestibulum, cursus semper eros efficitur. In hac +habitasse platea dictumst. Phasellus scelerisque vehicula +fringilla. diff --git a/test/fixtures/cksum/multiple_files.expected b/test/fixtures/cksum/multiple_files.expected new file mode 100644 index 000000000..d7a4f5b4f --- /dev/null +++ b/test/fixtures/cksum/multiple_files.expected @@ -0,0 +1,2 @@ +378294376 772 lorem_ipsum.txt +3805907707 302 alice_in_wonderland.txt diff --git a/test/fixtures/cksum/single_file.expected b/test/fixtures/cksum/single_file.expected new file mode 100644 index 000000000..e9fc1ca7c --- /dev/null +++ b/test/fixtures/cksum/single_file.expected @@ -0,0 +1 @@ +378294376 772 lorem_ipsum.txt diff --git a/test/fixtures/cksum/stdin.expected b/test/fixtures/cksum/stdin.expected new file mode 100644 index 000000000..28b37d0be --- /dev/null +++ b/test/fixtures/cksum/stdin.expected @@ -0,0 +1 @@ +378294376 772 diff --git a/test/fixtures/sum/alice_in_wonderland.txt b/test/fixtures/sum/alice_in_wonderland.txt new file mode 100644 index 000000000..a95562a1c --- /dev/null +++ b/test/fixtures/sum/alice_in_wonderland.txt @@ -0,0 +1,5 @@ +Alice was beginning to get very tired of sitting by +her sister on the bank, and of having nothing to do: once or twice +she had peeped into the book her sister was reading, but it had no +pictures or conversations in it, "and what is the use of a book," +thought Alice "without pictures or conversation?" diff --git a/test/fixtures/sum/bsd_multiple_files.expected b/test/fixtures/sum/bsd_multiple_files.expected new file mode 100644 index 000000000..1b05ee27f --- /dev/null +++ b/test/fixtures/sum/bsd_multiple_files.expected @@ -0,0 +1,2 @@ +8109 1 lorem_ipsum.txt +1814 1 alice_in_wonderland.txt diff --git a/test/fixtures/sum/bsd_single_file.expected b/test/fixtures/sum/bsd_single_file.expected new file mode 100644 index 000000000..3cffc4337 --- /dev/null +++ b/test/fixtures/sum/bsd_single_file.expected @@ -0,0 +1 @@ +8109 1 diff --git a/test/fixtures/sum/bsd_stdin.expected b/test/fixtures/sum/bsd_stdin.expected new file mode 100644 index 000000000..3cffc4337 --- /dev/null +++ b/test/fixtures/sum/bsd_stdin.expected @@ -0,0 +1 @@ +8109 1 diff --git a/test/fixtures/sum/lorem_ipsum.txt b/test/fixtures/sum/lorem_ipsum.txt new file mode 100644 index 000000000..16752446c --- /dev/null +++ b/test/fixtures/sum/lorem_ipsum.txt @@ -0,0 +1,13 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing +elit. Nunc interdum suscipit sem vel ornare. Proin euismod, justo +sed mollis dictum, eros urna ultricies augue, eu pharetra mi ex id +ante. Duis convallis porttitor aliquam. Nunc vitae tincidunt ex. +Suspendisse iaculis ligula ac diam consectetur lacinia. Donec vel +velit dui. Etiam fringilla, dolor quis tempor vehicula, lacus +turpis bibendum velit, et pellentesque elit odio a magna. Cras +vulputate tortor non libero vehicula euismod. Aliquam tincidunt +nisl eget enim cursus, viverra sagittis magna commodo. Cras rhoncus +egestas leo nec blandit. Suspendisse potenti. Etiam ullamcorper +leo vel lacus vestibulum, cursus semper eros efficitur. In hac +habitasse platea dictumst. Phasellus scelerisque vehicula +fringilla. diff --git a/test/fixtures/sum/sysv_multiple_files.expected b/test/fixtures/sum/sysv_multiple_files.expected new file mode 100644 index 000000000..83a6d6d83 --- /dev/null +++ b/test/fixtures/sum/sysv_multiple_files.expected @@ -0,0 +1,2 @@ +6985 2 lorem_ipsum.txt +27441 1 alice_in_wonderland.txt diff --git a/test/fixtures/sum/sysv_single_file.expected b/test/fixtures/sum/sysv_single_file.expected new file mode 100644 index 000000000..e0f7252cb --- /dev/null +++ b/test/fixtures/sum/sysv_single_file.expected @@ -0,0 +1 @@ +6985 2 lorem_ipsum.txt diff --git a/test/fixtures/sum/sysv_stdin.expected b/test/fixtures/sum/sysv_stdin.expected new file mode 100644 index 000000000..f0fba8c81 --- /dev/null +++ b/test/fixtures/sum/sysv_stdin.expected @@ -0,0 +1 @@ +6985 2 diff --git a/test/sum.rs b/test/sum.rs new file mode 100644 index 000000000..fb4abbf2d --- /dev/null +++ b/test/sum.rs @@ -0,0 +1,70 @@ +use std::process::Command; +use util::*; + +static PROGNAME: &'static str = "./sum"; + +#[path = "common/util.rs"] +#[macro_use] +mod util; + +#[test] +fn test_bsd_single_file() { + let mut cmd = Command::new(PROGNAME); + let result = run(&mut cmd.arg("lorem_ipsum.txt")); + + assert_empty_stderr!(result); + assert!(result.success); + assert_eq!(result.stdout, get_file_contents("bsd_single_file.expected")); +} + +#[test] +fn test_bsd_multiple_files() { + let mut cmd = Command::new(PROGNAME); + let result = run(&mut cmd.arg("lorem_ipsum.txt").arg("alice_in_wonderland.txt")); + + assert_empty_stderr!(result); + assert!(result.success); + assert_eq!(result.stdout, get_file_contents("bsd_multiple_files.expected")); +} + +#[test] +fn test_bsd_stdin() { + let input = get_file_contents("lorem_ipsum.txt"); + let mut cmd = Command::new(PROGNAME); + let result = run_piped_stdin(&mut cmd, input); + + assert_empty_stderr!(result); + assert!(result.success); + assert_eq!(result.stdout, get_file_contents("bsd_stdin.expected")); +} + +#[test] +fn test_sysv_single_file() { + let mut cmd = Command::new(PROGNAME); + let result = run(&mut cmd.arg("-s").arg("lorem_ipsum.txt")); + + assert_empty_stderr!(result); + assert!(result.success); + assert_eq!(result.stdout, get_file_contents("sysv_single_file.expected")); +} + +#[test] +fn test_sysv_multiple_files() { + let mut cmd = Command::new(PROGNAME); + let result = run(&mut cmd.arg("-s").arg("lorem_ipsum.txt").arg("alice_in_wonderland.txt")); + + assert_empty_stderr!(result); + assert!(result.success); + assert_eq!(result.stdout, get_file_contents("sysv_multiple_files.expected")); +} + +#[test] +fn test_sysv_stdin() { + let input = get_file_contents("lorem_ipsum.txt"); + let mut cmd = Command::new(PROGNAME); + let result = run_piped_stdin(&mut cmd.arg("-s"), input); + + assert_empty_stderr!(result); + assert!(result.success); + assert_eq!(result.stdout, get_file_contents("sysv_stdin.expected")); +}