[package] name = "cucumber" version = "0.21.1" edition = "2021" rust-version = "1.75" description = """\ Cucumber testing framework for Rust, with async support. \ Fully native, no external test runners or dependencies.\ """ license = "MIT OR Apache-2.0" authors = [ "Brendan Molloy ", "Ilya Solovyiov ", "Kai Ren ", ] documentation = "https://docs.rs/cucumber" homepage = "https://github.com/cucumber-rs/cucumber" repository = "https://github.com/cucumber-rs/cucumber" readme = "README.md" categories = ["asynchronous", "development-tools::testing"] keywords = ["cucumber", "testing", "bdd", "atdd", "async"] include = [ "/src/", "/tests/json.rs", "/tests/junit.rs", "/tests/libtest.rs", "/tests/tracing.rs", "/tests/wait.rs", "/CHANGELOG.md", "/LICENSE-*", "/README.md", ] [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] [features] default = ["macros"] # Enables compatibility with Rust libtest (like outputting in its JSON format). libtest = ["dep:serde", "dep:serde_json", "timestamps"] # Enables step attributes and auto-wiring. macros = [ "dep:anyhow", "dep:cucumber-codegen", "dep:cucumber-expressions", "dep:inventory", ] # Enables support for outputting in Cucumber JSON format. output-json = [ "dep:base64", "dep:Inflector", "dep:mime", "dep:serde", "dep:serde_json", "timestamps", ] # Enables support for outputting JUnit XML report. output-junit = ["dep:junit-report", "timestamps"] # Enables timestamps collecting for all events. timestamps = [] # Enables integraion with `tracing` crate. tracing = ["dep:crossbeam-utils", "dep:tracing", "dep:tracing-subscriber"] [dependencies] clap = { version = "4.3.2", features = ["derive", "wrap_help"] } console = "0.15" derive_more = { version = "0.99.17", features = ["as_ref", "deref", "deref_mut", "display", "error", "from", "from_str", "into"], default-features = false } drain_filter_polyfill = "0.1.2" either = "1.6" futures = "0.3.17" gherkin = "0.14" globwalk = "0.9" humantime = "2.1" itertools = "0.13" lazy-regex = "3.0" linked-hash-map = "0.5.3" once_cell = "1.13" pin-project = "1.0" regex = "1.5.5" sealed = "0.5" smart-default = "0.7.1" # "macros" feature dependencies. anyhow = { version = "1.0.58", optional = true } cucumber-codegen = { version = "=0.21.1", path = "./codegen", optional = true } cucumber-expressions = { version = "0.3", features = ["into-regex"], optional = true } inventory = { version = "0.3", optional = true } # "output-json" and/or "libtest" features dependencies. base64 = { version = "0.22", optional = true } Inflector = { version = "0.11", default-features = false, optional = true } mime = { version = "0.3.16", optional = true } serde = { version = "1.0.103", features = ["derive"], optional = true } serde_json = { version = "1.0.18", optional = true } # "output-junit" feature dependencies. junit-report = { version = "0.8", optional = true } # "tracing" feature dependencies. crossbeam-utils = { version = "0.8.14", optional = true } tracing = { version = "0.1", optional = true } tracing-subscriber = { version = "0.3.16", optional = true } [dev-dependencies] derive_more = "0.99.17" rand = "0.8" tempfile = "3.2" tokio = { version = "1.12", features = ["macros", "rt-multi-thread", "sync", "time"] } [[test]] name = "json" required-features = ["output-json", "tracing"] [[test]] name = "junit" required-features = ["output-junit", "tracing"] [[test]] name = "libtest" required-features = ["libtest"] [[test]] name = "tracing" required-features = ["tracing"] harness = false [[test]] name = "wait" required-features = ["libtest"] harness = false [workspace] members = ["codegen"]