serial_test

Crates.ioserial_test
lib.rsserial_test
version3.2.0
sourcesrc
created_at2018-12-30 23:25:35.760393
updated_at2024-11-08 19:28:07.728609
descriptionAllows for the creation of serialised Rust tests
homepage
repositoryhttps://github.com/palfrey/serial_test/
max_upload_size
id104626
size41,054
Tom Parker-Shemilt (palfrey)

documentation

README

serial_test

Version Downloads Docs MIT license Build Status MSRV: 1.68.2

serial_test allows for the creation of serialised Rust tests using the serial attribute e.g.

#[test]
#[serial]
fn test_serial_one() {
  // Do things
}

#[test]
#[serial]
fn test_serial_another() {
  // Do things
}

#[tokio::test]
#[serial]
async fn test_serial_another() {
  // Do things asynchronously
}

Multiple tests with the serial attribute are guaranteed to be executed in serial. Ordering of the tests is not guaranteed however. Other tests with the parallel attribute may run at the same time as each other, but not at the same time as a test with serial. Tests with neither attribute may run at any time and no guarantees are made about their timing! Both support optional keys for defining subsets of tests to run in serial together, see docs for more details.

For cases like doctests and integration tests where the tests are run as separate processes, we also support file_serial, with similar properties but based off file locking. Note that there are no guarantees about one test with serial and another with file_serial as they lock using different methods.

All of the attributes can also be applied at a mod level and will be automagically applied to all test functions in that block.

Usage

The minimum supported Rust version here is 1.68.2. Note this is minimum supported, as it may well compile with lower versions, but they're not supported at all. Upgrades to this will require at a major version bump. 1.x supports 1.51 if you need a lower version than that.

Add to your Cargo.toml

[dev-dependencies]
serial_test = "*"

plus use serial_test::serial; in your imports section.

You can then either add #[serial] or #[serial(some_key)] to tests as required.

Commit count: 360

cargo fmt