| //@ run-pass | |
| //@ needs-subprocess | |
| use std::env::args; | |
| use std::process::Command; | |
| fn assert_reverse_iterator_for_program_arguments(program_name: &str) { | |
| let args: Vec<_> = args().rev().collect(); | |
| assert!(args.len() == 4); | |
| assert_eq!(args[0], "c"); | |
| assert_eq!(args[1], "b"); | |
| assert_eq!(args[2], "a"); | |
| assert_eq!(args[3], program_name); | |
| println!("passed"); | |
| } | |
| fn main() { | |
| let mut args = args(); | |
| let me = args.next().unwrap(); | |
| if let Some(_) = args.next() { | |
| assert_reverse_iterator_for_program_arguments(&me); | |
| return | |
| } | |
| let output = Command::new(&me) | |
| .arg("a") | |
| .arg("b") | |
| .arg("c") | |
| .output() | |
| .unwrap(); | |
| assert!(output.status.success()); | |
| assert!(output.stderr.is_empty()); | |
| assert_eq!(output.stdout, b"passed\n"); | |
| } |