//@ 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");
}
