xref: /third_party/rust/crates/cxx/gen/cmd/src/test.rs (revision 33d722a9)
1const EXPECTED: &str = "\
2cxxbridge $VERSION
3David Tolnay <dtolnay@gmail.com>
4https://github.com/dtolnay/cxx
5
6Usage:
7    cxxbridge <input>.rs              Emit .cc file for bridge to stdout
8    cxxbridge <input>.rs --header     Emit .h file for bridge to stdout
9    cxxbridge --header                Emit \"rust/cxx.h\" header to stdout
10
11Arguments:
12  [input]
13          Input Rust source file containing #[cxx::bridge].
14
15Options:
16      --cfg <name=\"value\" | name[=true] | name=false>
17          Compilation configuration matching what will be used to build
18          the Rust side of the bridge.
19
20      --cxx-impl-annotations <annotation>
21          Optional annotation for implementations of C++ function wrappers
22          that may be exposed to Rust. You may for example need to provide
23          __declspec(dllexport) or __attribute__((visibility(\"default\")))
24          if Rust code from one shared object or executable depends on
25          these C++ functions in another.
26
27      --header
28          Emit header with declarations only. Optional if using `-o` with
29          a path ending in `.h`.
30
31      --help
32          Print help information.
33
34  -i, --include <include>
35          Any additional headers to #include. The cxxbridge tool does not
36          parse or even require the given paths to exist; they simply go
37          into the generated C++ code as #include lines.
38
39  -o, --output <output>
40          Path of file to write as output. Output goes to stdout if -o is
41          not specified.
42
43      --version
44          Print version information.
45";
46
47#[test]
48fn test_help() {
49    let mut app = super::app();
50    let mut out = Vec::new();
51    app.write_long_help(&mut out).unwrap();
52    let help = String::from_utf8(out).unwrap();
53    let version = option_env!("CARGO_PKG_VERSION").unwrap_or_default();
54    let expected = EXPECTED.replace("$VERSION", version);
55    assert_eq!(help, expected);
56}
57
58#[test]
59fn test_cli() {
60    let app = super::app();
61    app.debug_assert();
62}
63