Skip to content

Commit 09ac682

Browse files
author
bors-servo
authored
Auto merge of rust-lang#720 - fitzgen:testing-libclang-versions, r=emilio
Gate on libclang 4 CI passing :) Need those test expectation diffs across libclang versions from Travis CI...
2 parents e30f219 + dc09012 commit 09ac682

File tree

290 files changed

+806
-284
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

290 files changed

+806
-284
lines changed

.travis.yml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,15 @@ env:
1717
global:
1818
- CARGO_TARGET_DIR=/tmp/bindgen
1919
matrix:
20-
- LLVM_VERSION=3.7.1 BINDGEN_FEATURES=testing_only_llvm_stable
21-
- LLVM_VERSION=3.8.1 BINDGEN_FEATURES=testing_only_llvm_stable
22-
- LLVM_VERSION=3.9.0 BINDGEN_FEATURES=
23-
- LLVM_VERSION=4.0.0 BINDGEN_FEATURES=
20+
- LLVM_VERSION=3.7.1 BINDGEN_FEATURES=testing_only_libclang_3_8
21+
- LLVM_VERSION=3.8.1 BINDGEN_FEATURES=testing_only_libclang_3_8
22+
- LLVM_VERSION=3.9.0 BINDGEN_FEATURES=testing_only_libclang_3_9
23+
- LLVM_VERSION=4.0.0 BINDGEN_FEATURES=testing_only_libclang_4
2424

2525
matrix:
2626
fast_finish: true
2727
allow_failures:
28-
- env: LLVM_VERSION=4.0.0 BINDGEN_FEATURES=
29-
- env: LLVM_VERSION=3.7.1 BINDGEN_FEATURES=testing_only_llvm_stable
28+
- env: LLVM_VERSION=3.7.1 BINDGEN_FEATURES=testing_only_libclang_3_8
3029

3130
cache:
3231
directories:

CONTRIBUTING.md

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ out to us in a GitHub issue, or stop by
1414
- [Testing](#testing)
1515
- [Overview](#overview)
1616
- [Running All Tests](#running-all-tests)
17+
- [Running a Single Test](#running-a-single-test)
1718
- [Authoring New Tests](#authoring-new-tests)
19+
- [Test Expectations and `libclang` Versions](#test-expectations-and-libclang-versions)
1820
- [Automatic code formatting](#automatic-code-formatting)
1921
- [Generating Graphviz Dot Files](#generating-graphviz-dot-files)
2022
- [Debug Logging](#debug-logging)
@@ -91,9 +93,17 @@ Run `cargo test` to compare generated Rust bindings to the expectations.
9193
### Running All Tests
9294

9395
```
94-
$ cargo test [--all-features]
96+
$ cargo test --features testing_only_libclang_$VERSION
9597
```
9698

99+
Where `$VERSION` is one of:
100+
101+
* `4`
102+
* `3_9`
103+
* `3_8`
104+
105+
depending on which version of `libclang` you have installed.
106+
97107
### Running a Single Test
98108

99109
To generate bindings for a single test header, compile the bindings, and run the
@@ -124,6 +134,25 @@ Then verify the new Rust bindings compile and pass some basic tests:
124134
$ cargo test -p tests_expectations
125135
```
126136

137+
### Test Expectations and `libclang` Versions
138+
139+
If a test generates different bindings across different `libclang` versions (for
140+
example, because we take advantage of better/newer APIs when possible), then you
141+
can add multiple test expectations, one for each supported `libclang`
142+
version. Instead of having a single `tests/expectations/tests/my_test.rs` file,
143+
add each of:
144+
145+
* `tests/expectations/tests/libclang-4/my_test.rs`
146+
* `tests/expectations/tests/libclang-3.9/my_test.rs`
147+
* `tests/expectations/tests/libclang-3.8/my_test.rs`
148+
149+
If you need to update the test expectations for a test file that generates
150+
different bindings for different `libclang` versions, you *don't* need to have
151+
many version of `libclang` installed locally. Just make a work-in-progress pull
152+
request, and then when Travis CI fails, it will log a diff of the
153+
expectations. Use the diff to patch the appropriate expectation file locally and
154+
then update your pull request.
155+
127156
## Automatic code formatting
128157

129158
We use [`rustfmt`](https://github.com/rust-lang-nursery/rustfmt) to enforce a

Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,6 @@ static = []
7777
# on bindgen!
7878
testing_only_docs = []
7979
testing_only_extra_assertions = []
80-
testing_only_llvm_stable = []
80+
testing_only_libclang_4 = []
81+
testing_only_libclang_3_9 = []
82+
testing_only_libclang_3_8 = []

bindgen-integration/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,6 @@ bindgen = { path = ".." }
1111
gcc = "0.3"
1212

1313
[features]
14-
testing_only_llvm_stable = ["bindgen/testing_only_llvm_stable"]
14+
testing_only_libclang_4 = ["bindgen/testing_only_libclang_4"]
15+
testing_only_libclang_3_9 = ["bindgen/testing_only_libclang_3_9"]
16+
testing_only_libclang_3_8 = ["bindgen/testing_only_libclang_3_8"]

src/main.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,12 @@ pub fn main() {
3131
let bind_args: Vec<_> = env::args().collect();
3232

3333
let version = clang_version();
34-
let expected_version = if cfg!(feature = "testing_only_llvm_stable") {
34+
let expected_version = if cfg!(feature = "testing_only_libclang_4") {
35+
(4, 0)
36+
} else if cfg!(feature = "testing_only_libclang_3_8") {
3537
(3, 8)
3638
} else {
39+
// Default to 3.9.
3740
(3, 9)
3841
};
3942

tests/expectations/tests/16-byte-alignment.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/381-decltype-alias.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/accessors.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/annotation_hide.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
/**

tests/expectations/tests/anon_enum.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/anon_enum_trait.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/anon_enum_whitelist.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
pub const NODE_FLAG_FOO: _bindgen_ty_1 = _bindgen_ty_1::NODE_FLAG_FOO;

tests/expectations/tests/anon_struct_in_union.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/anon_union.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/anonymous-template-types.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/arg_keyword.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
extern "C" {

tests/expectations/tests/bad-namespace-parenthood-inheritance.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/base-to-derived.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/bitfield-enum-basic.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
pub const Foo_Bar: Foo = Foo(2);

tests/expectations/tests/bitfield-large.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/bitfield-method-same-name.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/bitfield_align.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/bitfield_method_mangling.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/blocks.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
extern "C" {
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
pub type std_make_integer_sequence = u8;

tests/expectations/tests/c-empty-layout.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/canonical_path_without_namespacing.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/char.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
pub type Char = ::std::os::raw::c_char;

tests/expectations/tests/class.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/class_nested.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/class_no_members.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/class_static.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/class_static_const.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/class_use_as.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
/**

tests/expectations/tests/class_with_dtor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/class_with_inner_struct.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
#[repr(C)]

tests/expectations/tests/class_with_typedef.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* automatically generated by rust-bindgen */
22

33

4-
#![allow(non_snake_case)]
4+
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
55

66

77
pub type AnotherInt = ::std::os::raw::c_int;

0 commit comments

Comments
 (0)