about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src/back/command_line_args/tests.rs
blob: 69641fed3bc92bc428c7b0535eacece43094bd54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#[test]
fn quote_command_line_args() {
    use super::quote_command_line_args;

    struct Case<'a> {
        args: &'a [&'a str],
        expected: &'a str,
    }

    let cases = &[
        Case { args: &[], expected: "" },
        Case { args: &["--hello", "world"], expected: r#""--hello" "world""# },
        Case { args: &["--hello world"], expected: r#""--hello world""# },
        Case {
            args: &["plain", "$dollar", "spa ce", r"back\slash", r#""quote""#, "plain"],
            expected: r#""plain" "\$dollar" "spa ce" "back\\slash" "\"quote\"" "plain""#,
        },
    ];

    for &Case { args, expected } in cases {
        let args = args.iter().copied().map(str::to_owned).collect::<Vec<_>>();
        let actual = quote_command_line_args(&args);
        assert_eq!(actual, expected, "args {args:?}");
    }
}