File: README.md

package info (click to toggle)
rust-cxx 1.0.192-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,808 kB
  • sloc: cpp: 1,625; javascript: 124; sh: 11; makefile: 8
file content (41 lines) | stat: -rw-r--r-- 1,525 bytes parent folder | download | duplicates (5)
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# Testing

This document provides an outline of different kinds of tests used by the `cxx`
project.

## Errors from proc macro

We want to verify that the `#[cxx::bridge]` macro reports expected error
messages when invoked by `rustc` on certain inputs.

Such verification is handled by test cases underneath **tests/ui** directory and
driven by **tests/compiletest.rs**. The test cases consist of a pair of files:

* **foo.rs** is the input
* **foo.stderr** is the expected Rust compiler diagnostic

## Errors from C++ compiler

We want to verify that cxx's generated C++ code triggers expected C++ compiler
diagnostics on certain inputs.

Such verification is covered by **tests/cpp_ui_tests.rs**.

## End-to-end functionality

End-to-end functional tests are structured as follows:

* The code under test is contained underneath **tests/ffi** directory which
  contains:
    - Rust code under test &emdash; the `cxx-test-suite` crate (**lib.rs** and
      **module.rs**) with:
        - A few `#[cxx::bridge]` invocations
        - Rust types (e.g. `struct R`)
        - Rust functions and methods (e.g. `fn r_return_primitive`)
    - C/C++ code under test (**tests.h** and **tests.cc**)
        - C++ types (e.g. `class C`)
        - C++ functions and methods (e.g. `c_return_primitive`)
* The testcases can be found in:
    - Rust calling into C++: **tests/test.rs**.
    - C++ calling into Rust: **tests/ffi/test.cc**. These tests are manually
      dispatched from the `cxx_run_test` function in **tests/ffi/test.cc**.