1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
//! [![ci](https://github.com/macisamuele/json-schema-test-suite-rs/workflows/ci/badge.svg)](https://github.com/macisamuele/json-schema-test-suite-rs/actions) //! [![codecov](https://codecov.io/gh/macisamuele/json-schema-test-suite-rs/branch/master/graph/badge.svg)](https://codecov.io/gh/macisamuele/json-schema-test-suite-rs) //! [![Crates.io](https://img.shields.io/crates/v/json-schema-test-suite.svg)](https://crates.io/crates/json-schema-test-suite) //! [![docs.rs](https://docs.rs/json_schema_test_suite/badge.svg)](https://docs.rs/json-schema-test-suite/) //! //! The crate provides a procedural macro attribute that allow to generate all the test cases //! described by [JSON-Schema-Test-Suite](https://github.com/json-schema-org/JSON-Schema-Test-Suite). //! //! The main objective is to ensure that for each test a mock server is started and will be able to //! capture all the requests, ensuring that tests can be ran only interacting with `cargo test` //! //! In order to ude the procedural macro attribute there are few assumptions that are made: //! //! * [`lazy_static`](https://crates.io/crates/lazy_static) dependency is added into your `[dev-dependencies]` //! section of the `Cargo.toml` file //! * [`mockito`](https://crates.io/crates/mockito) dependency is added into your `[dev-dependencies]` //! section of the `Cargo.toml` file //! * [`serde-json`](https://crates.io/crates/serde-json) dependency is added into your `[dev-dependencies]` //! section of the `Cargo.toml` file //! * the annotated method signature should be: `fn (&str, json_schema_test_suite::TestCase) -> ()` //! //! # How to use //! //! ## Cargo.toml //! //! ```toml //! # Ensure that the following lines are present into your Cargo.toml file //! [dev-dependencies] //! json_schema_test_suite = "0" //! # Be careful with dependencies version (using `*` version is never recommended). //! # The proc-macro uses nothing fancy with the dependencies, so any version should work well :) //! lazy_static = "*" //! mockito = "*" //! serde_json = "*" //! ``` //! //! ## Rust test file example //! //! ```rust //! use json_schema_test_suite::{json_schema_test_suite, TestCase}; //! //! // If no tests should be ignored //! #[json_schema_test_suite( //! // path separator is assumed to be `/` (regardless of the run platform) //! "path/to/JSON-Schema-Test-Suite/repository", //! // test directory (in <JSON-Schema-Test-Suite>/tests/<test_directory>) //! "draft7" //! )] //! // If some tests needs to be ignored, just defined them into `{ ... }` as follow //! #[json_schema_test_suite( //! // path separator is assumed to be `/` (regardless of the run platform) //! "path/to/JSON-Schema-Test-Suite/repository", //! // test directory (in <JSON-Schema-Test-Suite>/tests/<test_directory>) //! "draft6", //! { // Names, as generated by the macro, of the tests to ignore //! // NOTE: They can be regular expression as well. //! "name of the tests to ignore", //! } //! )] //! fn my_simple_test( //! // address of the HTTP server providing the remote files of JSON-Schema-Test-Suite. //! // The format will be: `hostname:port`. //! // This parameter is passed because by starting a mock server we might not start it //! // into `localhost:1234` as expected by JSON-Schema-Test-Suite //! server_address: &str, //! // Representation of the test case //! test_case: TestCase, //! ) { //! // TODO: Add here your testing logic //! } //! ``` #![warn( clippy::cast_possible_truncation, clippy::doc_markdown, clippy::explicit_iter_loop, clippy::match_same_arms, clippy::needless_borrow, clippy::needless_pass_by_value, clippy::option_map_unwrap_or, clippy::option_map_unwrap_or_else, clippy::option_unwrap_used, clippy::pedantic, clippy::print_stdout, clippy::redundant_closure, clippy::result_map_unwrap_or_else, clippy::result_unwrap_used, clippy::trivially_copy_pass_by_ref, missing_debug_implementations, missing_docs, trivial_casts, unreachable_pub, unsafe_code, unused_extern_crates, unused_import_braces, unused_qualifications, unused_results, variant_size_differences )] pub use json_schema_test_suite_proc_macro::json_schema_test_suite; pub use json_schema_test_suite_test_case::TestCase;