Home

Awesome

cubeb-coreaudio-rs

CircleCI Build & Test

Rust implementation of Cubeb on the MacOS platform.

Current Goals

Status

This is now the Firefox's default audio backend on Mac OS.

Install

Install cubeb-coreaudio within cubeb

Run the following command:

curl https://raw.githubusercontent.com/mozilla/cubeb-coreaudio-rs/trailblazer/build-audiounit-rust-in-cubeb.sh | sh

Other

Just clone this repo

Test

Please run sh run_tests.sh.

Some tests cannot be run in parallel. They may operate the same device at the same time, or indirectly fire some system events that are listened by some tests.

The tests that may affect others are marked #[ignore]. They will be run by cargo test ... -- --ignored ... after finishing normal tests. Most of the tests are executed in run_tests.sh. Only those tests commented with FIXIT are left.

Git Hooks

You can install git hooks by running install_git_hook.sh. Then pre-push script will be run and do the cargo fmt and cargo clippy check before the commits are pushed to remote.

Run Sanitizers

Run AddressSanitizer (ASan), LeakSanitizer (LSan), MemorySanitizer (MSan), ThreadSanitizer (TSan) by sh run_sanitizers.sh.

The above command will run all the test suits in run_tests.sh by all the available sanitizers. However, it takes a long time for finshing the tests.

Device Tests

Run run_device_tests.sh.

If you'd like to run all the device tests with sanitizers, use RUSTFLAGS="-Z sanitizer=<SAN>" sh run_device_tests.sh with valid <SAN> such as address or thread.

Device Switching

The system default device will be changed during our tests. All the available devices will take turns being the system default device. However, after finishing the tests, the default device will be set to the original one. The sounds in the tests should be able to continue whatever the system default device is.

Device Plugging/Unplugging

We implement APIs simulating plugging or unplugging a device by adding or removing an aggregate device programmatically. It's used to verify our callbacks for minitoring the system devices work.

Manual Test

TODO

See todo list

Issues

Test issues

Branches