| @@ -54,17 +54,12 @@ else: · 53 unmodified lines |
| 54 | """) | 54 | """) |
| 55 | | 55 | |
| 56 | @classmethod | 56 | @classmethod |
| 57 | def generate_bindgen(cls, version_stdout, libclang_stderr, version_0_66_patched=False, libclang_concat_patched=False): | 57 | def generate_bindgen(cls, version_stdout, libclang_stderr, libclang_concat_patched=False): |
| 58 | if libclang_stderr is None: | 58 | if libclang_stderr is None: |
| 59 | libclang_case = f"raise SystemExit({cls.bindgen_default_bindgen_libclang_failure_exit_code})" | 59 | libclang_case = f"raise SystemExit({cls.bindgen_default_bindgen_libclang_failure_exit_code})" |
| 60 | else: | 60 | else: |
| 61 | libclang_case = f"print({repr(libclang_stderr)}, file=sys.stderr)" | 61 | libclang_case = f"print({repr(libclang_stderr)}, file=sys.stderr)" |
| 62 | | 62 | |
| 63 | if version_0_66_patched: | | |
| 64 | version_0_66_case = "pass" | | |
| 65 | else: | | |
| 66 | version_0_66_case = "raise SystemExit(1)" | | |
| 67 | | | |
| 68 | if libclang_concat_patched: | 63 | if libclang_concat_patched: |
| 69 | libclang_concat_case = "print('pub static mut foofoo: ::std::os::raw::c_int;')" | 64 | libclang_concat_case = "print('pub static mut foofoo: ::std::os::raw::c_int;')" |
| 70 | else: | 65 | else: |
| @@ -74,8 +69,6 @@ else: · 3 unmodified lines |
| 74 | import sys | 69 | import sys |
| 75 | if "rust_is_available_bindgen_libclang.h" in " ".join(sys.argv): | 70 | if "rust_is_available_bindgen_libclang.h" in " ".join(sys.argv): |
| 76 | {libclang_case} | 71 | {libclang_case} |
| 77 | elif "rust_is_available_bindgen_0_66.h" in " ".join(sys.argv): | | |
| 78 | {version_0_66_case} | | |
| 79 | elif "rust_is_available_bindgen_libclang_concat.h" in " ".join(sys.argv): | 72 | elif "rust_is_available_bindgen_libclang_concat.h" in " ".join(sys.argv): |
| 80 | {libclang_concat_case} | 73 | {libclang_concat_case} |
| 81 | else: | 74 | else: |
| @@ -83,8 +76,8 @@ else: · 1 unmodified line |
| 83 | """) | 76 | """) |
| 84 | | 77 | |
| 85 | @classmethod | 78 | @classmethod |
| 86 | def generate_bindgen_version(cls, stdout, version_0_66_patched=False): | 79 | def generate_bindgen_version(cls, stdout): |
| 87 | return cls.generate_bindgen(stdout, cls.bindgen_default_bindgen_libclang_stderr, version_0_66_patched) | 80 | return cls.generate_bindgen(stdout, cls.bindgen_default_bindgen_libclang_stderr) |
| 88 | | 81 | |
| 89 | @classmethod | 82 | @classmethod |
| 90 | def generate_bindgen_libclang_failure(cls): | 83 | def generate_bindgen_libclang_failure(cls): |
| @@ -245,19 +238,6 @@ else: · 154 unmodified lines |
| 245 | result = self.run_script(self.Expected.FAILURE, { "BINDGEN": bindgen }) | 238 | result = self.run_script(self.Expected.FAILURE, { "BINDGEN": bindgen }) |
| 246 | self.assertIn(f"Rust bindings generator '{bindgen}' is too old.", result.stderr) | 239 | self.assertIn(f"Rust bindings generator '{bindgen}' is too old.", result.stderr) |
| 247 | | 240 | |
| 248 | def test_bindgen_bad_version_0_66_0_and_0_66_1(self): | | |
| 249 | for version in ("0.66.0", "0.66.1"): | | |
| 250 | with self.subTest(version=version): | | |
| 251 | bindgen = self.generate_bindgen_version(f"bindgen {version}") | | |
| 252 | result = self.run_script(self.Expected.SUCCESS_WITH_WARNINGS, { "BINDGEN": bindgen }) | | |
| 253 | self.assertIn(f"Rust bindings generator '{bindgen}' versions 0.66.0 and 0.66.1 may not", result.stderr) | | |
| 254 | | | |
| 255 | def test_bindgen_bad_version_0_66_0_and_0_66_1_patched(self): | | |
| 256 | for version in ("0.66.0", "0.66.1"): | | |
| 257 | with self.subTest(version=version): | | |
| 258 | bindgen = self.generate_bindgen_version(f"bindgen {version}", True) | | |
| 259 | result = self.run_script(self.Expected.SUCCESS, { "BINDGEN": bindgen }) | | |
| 260 | | | |
| 261 | def test_bindgen_libclang_failure(self): | 241 | def test_bindgen_libclang_failure(self): |
| 262 | bindgen = self.generate_bindgen_libclang_failure() | 242 | bindgen = self.generate_bindgen_libclang_failure() |
| 263 | result = self.run_script(self.Expected.FAILURE, { "BINDGEN": bindgen }) | 243 | result = self.run_script(self.Expected.FAILURE, { "BINDGEN": bindgen }) |