gecko-dev/third_party/rust/uniffi_testing
Ben Dean-Kawamura aff73c9027 Bug 1867639 - Vendor in new application-services / Glean / UniFFI. r=markh,janerik,supply-chain-reviewers,mach-reviewers,ahal
Updated uniffi-bindgen-gecko-js to work with UniFFI 0.25.2:
- Use `config.toml` to list UniFFI sources.  This makes it easier to
  associate data with them, for example the `crate_name` field that's
  now required to generate the sources.
- Enable the `extern-rustbuffer` feature on `uniffi_core`
- Updated the external types fixture to work around
  https://github.com/mozilla/uniffi-rs/issues/1872

Ran mach vendor and mach cargo vet to update the Rust crates.

Differential Revision: https://phabricator.services.mozilla.com/D195163
2023-12-12 14:13:44 +00:00
..
src Bug 1840044 - Update to Glean 53.1.0, UniFFI 0.24.1 and latest application-services. r=TravisLong,nika,markh,supply-chain-reviewers 2023-07-26 15:34:27 +00:00
.cargo-checksum.json Bug 1867639 - Vendor in new application-services / Glean / UniFFI. r=markh,janerik,supply-chain-reviewers,mach-reviewers,ahal 2023-12-12 14:13:44 +00:00
Cargo.toml Bug 1867639 - Vendor in new application-services / Glean / UniFFI. r=markh,janerik,supply-chain-reviewers,mach-reviewers,ahal 2023-12-12 14:13:44 +00:00
README.md

README.md

This crate contains helper code for testing bindings. Our general system is to generate bindings for the libraries from the examples and fixtures directories, then execute a script that tests the bindings.

Each bindings crate can do this in a different way, but the typical system is:

  • Construct a UniFFITestHelper struct to assist the process
  • Call UniFFITestHelper.create_out_dir() to create a temp directory to store testing files
  • Call UniFFITestHelper.copy_cdylibs_to_out_dir() to copy the dylib artifacts for the example/fixture library to the out_dir. This is needed because the bindings code dynamically links to or loads from this library.
  • Call UniFFITestHelper.get_compile_sources() to iterate over (udl_path, uniffi_config_path) pairs and generate the bindings from them. This step is specific to the bindings language, it may mean creating a .jar file, compiling a binary, or just copying script files over.
  • Execute the test script and check if it succeeds. This step is also specific to the bindings language.