summaryrefslogtreecommitdiffstats
path: root/third_party/rust/serial_test/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/serial_test/README.md')
-rw-r--r--third_party/rust/serial_test/README.md51
1 files changed, 51 insertions, 0 deletions
diff --git a/third_party/rust/serial_test/README.md b/third_party/rust/serial_test/README.md
new file mode 100644
index 0000000000..d379a1d2fd
--- /dev/null
+++ b/third_party/rust/serial_test/README.md
@@ -0,0 +1,51 @@
+# serial_test
+[![Version](https://img.shields.io/crates/v/serial_test.svg)](https://crates.io/crates/serial_test)
+[![Downloads](https://img.shields.io/crates/d/serial_test)](https://crates.io/crates/serial_test)
+[![Docs](https://docs.rs/serial_test/badge.svg)](https://docs.rs/serial_test/)
+[![MIT license](https://img.shields.io/crates/l/serial_test.svg)](./LICENSE)
+[![Build Status](https://github.com/palfrey/serial_test/workflows/Continuous%20integration/badge.svg?branch=main)](https://github.com/palfrey/serial_test/actions)
+[![MSRV: 1.39.0](https://flat.badgen.net/badge/MSRV/1.39.0/purple)](https://blog.rust-lang.org/2019/11/07/Rust-1.39.0.html)
+
+`serial_test` allows for the creation of serialised Rust tests using the `serial` attribute
+e.g.
+```rust
+#[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.
+Tests without the `serial` attribute may run at any time, including in parallel to tests marked as `serial`. Note that if you're using
+an async test reactor attribute (e.g. `tokio::test` or `actix_rt::test`) then they should be listed *before* `serial`, otherwise we
+don't get an async function and things break. There's now an error for this case to improve debugging.
+
+## Usage
+We require at least Rust 1.39 for [async/await](https://blog.rust-lang.org/2019/11/07/Async-await-stable.html) support
+
+Add to your Cargo.toml
+```toml
+[dev-dependencies]
+serial_test = "*"
+```
+
+plus `use serial_test::serial;` (for Rust 2018) or
+```rust
+#[macro_use]
+extern crate serial_test;
+```
+for earlier versions.
+
+You can then either add `#[serial]` or `#[serial(some_text)]` to tests as required.