From a0698f885f22fbdcf93f04d498aa0b02ba4d41f2 Mon Sep 17 00:00:00 2001 From: Christian Fochler Date: Sun, 23 Aug 2020 13:30:42 +0200 Subject: [PATCH] Update README - make example testable --- Cargo.toml | 5 +++++ README.md | 40 ++++++++++++++++------------------------ README.md.skt.md | 16 ++++++++++++++++ build.rs | 3 +++ tests/skeptic.rs | 1 + 5 files changed, 41 insertions(+), 24 deletions(-) create mode 100644 README.md.skt.md create mode 100644 build.rs create mode 100644 tests/skeptic.rs diff --git a/Cargo.toml b/Cargo.toml index 60ba32a..e327971 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,6 +6,7 @@ license = "MIT" repository = "https://github.com/ChriFo/test-server-rs" publish = false edition = "2018" +build = "build.rs" [dependencies] actix-rt = "1.1.1" @@ -17,5 +18,9 @@ futures = "0.3.5" http = "0.2.1" rand = "0.7.3" +[build-dependencies] +skeptic = "0.13.4" + [dev-dependencies] +skeptic = "0.13.4" ureq = { version = "1.4.0", default-features = false } diff --git a/README.md b/README.md index a7a1d6c..7fbed12 100644 --- a/README.md +++ b/README.md @@ -12,35 +12,27 @@ test-server = { git = "https://github.com/ChriFo/test-server-rs", tag = "0.9.0" [HttpResponse](https://actix.rs/api/actix-web/stable/actix_web/struct.HttpResponse.html) and [HttpRequest](https://actix.rs/api/actix-web/stable/actix_web/struct.HttpRequest.html) are re-exports from [actix-web](https://github.com/actix/actix-web). -```rust -use failure::Error; -use test_server::{HttpRequest, HttpResponse}; +```rust,skt-test +// start server at random port +let _ = test_server::new("127.0.0.1:0", test_server::HttpResponse::Ok)?; -#[test] -fn example_test() -> Result<(), Error> { - // start server at random port - let _ = test_server::new("127.0.0.1:0", HttpResponse::Ok)?; +// start server at given port +let server = test_server::new("127.0.0.1:8080", |req: test_server::HttpRequest| { + println!("{:#?}", req); + test_server::HttpResponse::Ok().body("hello world") +})?; - // start server at given port - let server = test_server::new("127.0.0.1:8080", |req: HttpRequest| { - println!("Request: {:#?}", req); - HttpResponse::Ok().body("hello world") - })?; +// request against server +let _ = get_request(&server.url()); - // request against server - let _ = client::get(&server.url()); +assert_eq!(1, server.requests.len()); - assert_eq!(1, server.requests.len()); +// requests are Request from crate http (which is re-exported as http as well) +let last_request = server.requests.next().unwrap(); - // requests are Request from http crate (which is re-exported as http as well) - let last_request = server.requests.next().unwrap(); - - assert_eq!("GET", last_request.method()); - assert_eq!("/", last_request.uri().path()); - // body, headers and query params are also available - - Ok(()) -} +assert_eq!("GET", last_request.method()); +assert_eq!("/", last_request.uri().path()); +// body, headers and query params are also available ``` For more examples have a look at the [tests](https://github.com/ChriFo/test-server-rs/blob/master/tests/server.rs). diff --git a/README.md.skt.md b/README.md.skt.md new file mode 100644 index 0000000..f15ac78 --- /dev/null +++ b/README.md.skt.md @@ -0,0 +1,16 @@ +```rust,skt-test +extern crate anyhow; +extern crate test_server; +extern crate ureq; + +fn get_request(url: &str) -> ureq::Response {{ + ureq::get(url).call() +}} + +fn main() -> anyhow::Result<()> {{ + + {} + + Ok(()) +}} +``` \ No newline at end of file diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..64b479b --- /dev/null +++ b/build.rs @@ -0,0 +1,3 @@ +fn main() { + skeptic::generate_doc_tests(&["README.md"]); +} diff --git a/tests/skeptic.rs b/tests/skeptic.rs new file mode 100644 index 0000000..ff46c9c --- /dev/null +++ b/tests/skeptic.rs @@ -0,0 +1 @@ +include!(concat!(env!("OUT_DIR"), "/skeptic-tests.rs"));