]> git.lizzy.rs Git - rust.git/blob - src/test/ui/env-args-reverse-iterator.rs
Auto merge of #67290 - jonas-schievink:leak-audit, r=KodrAus
[rust.git] / src / test / ui / env-args-reverse-iterator.rs
1 // run-pass
2 // ignore-cloudabi no processes
3 // ignore-emscripten no processes
4 // ignore-sgx no processes
5
6 use std::env::args;
7 use std::process::Command;
8
9 fn assert_reverse_iterator_for_program_arguments(program_name: &str) {
10     let args: Vec<_> = args().rev().collect();
11
12     assert!(args.len() == 4);
13     assert_eq!(args[0], "c");
14     assert_eq!(args[1], "b");
15     assert_eq!(args[2], "a");
16     assert_eq!(args[3], program_name);
17
18     println!("passed");
19 }
20
21 fn main() {
22     let mut args = args();
23     let me = args.next().unwrap();
24
25     if let Some(_) = args.next() {
26         assert_reverse_iterator_for_program_arguments(&me);
27         return
28     }
29
30     let output = Command::new(&me)
31         .arg("a")
32         .arg("b")
33         .arg("c")
34         .output()
35         .unwrap();
36     assert!(output.status.success());
37     assert!(output.stderr.is_empty());
38     assert_eq!(output.stdout, b"passed\n");
39 }