rust-expect 0.2.0

Next-generation Expect-style terminal automation library for Rust
Documentation
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2024"
rust-version = "1.88"
name = "rust-expect"
version = "0.2.0"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Next-generation Expect-style terminal automation library for Rust"
readme = "README.md"
keywords = [
    "expect",
    "pty",
    "terminal",
    "automation",
    "async",
]
categories = [
    "command-line-utilities",
    "development-tools::testing",
    "asynchronous",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/praxiomlabs/rust-expect"

[features]
default = []
full = [
    "ssh",
    "mock",
    "screen",
    "pii-redaction",
    "metrics",
]
insecure-skip-verify = []
legacy-encoding = []
metrics = [
    "dep:opentelemetry",
    "dep:opentelemetry_sdk",
    "dep:opentelemetry-otlp",
    "dep:tracing-opentelemetry",
    "dep:tracing-subscriber",
    "dep:prometheus",
]
mock = []
pii-redaction = []
screen = ["dep:bitflags"]
ssh = ["dep:russh"]
test-utils = []

[lib]
name = "rust_expect"
path = "src/lib.rs"

[[example]]
name = "basic"
path = "examples/basic.rs"

[[example]]
name = "basic_session"
path = "examples/basic_session.rs"

[[example]]
name = "dialog"
path = "examples/dialog.rs"

[[example]]
name = "drive_htop"
path = "examples/drive_htop.rs"
required-features = ["screen"]

[[example]]
name = "drive_less"
path = "examples/drive_less.rs"
required-features = ["screen"]

[[example]]
name = "error_handling"
path = "examples/error_handling.rs"

[[example]]
name = "interact_hooks"
path = "examples/interact_hooks.rs"

[[example]]
name = "interactive"
path = "examples/interactive.rs"

[[example]]
name = "large_output"
path = "examples/large_output.rs"

[[example]]
name = "metrics"
path = "examples/metrics.rs"

[[example]]
name = "mock_testing"
path = "examples/mock_testing.rs"

[[example]]
name = "multi_session"
path = "examples/multi_session.rs"

[[example]]
name = "patterns"
path = "examples/patterns.rs"

[[example]]
name = "pii_redaction"
path = "examples/pii_redaction.rs"

[[example]]
name = "screen_buffer"
path = "examples/screen_buffer.rs"

[[example]]
name = "ssh"
path = "examples/ssh.rs"

[[example]]
name = "ssh_session"
path = "examples/ssh_session.rs"

[[example]]
name = "sync_api"
path = "examples/sync_api.rs"

[[example]]
name = "transcript"
path = "examples/transcript.rs"

[[example]]
name = "windows_pty_test"
path = "examples/windows_pty_test.rs"

[[example]]
name = "zero_config"
path = "examples/zero_config.rs"

[[test]]
name = "auto_config_tests"
path = "tests/auto_config_tests.rs"

[[test]]
name = "config_tests"
path = "tests/config_tests.rs"

[[test]]
name = "dialog_tests"
path = "tests/dialog_tests.rs"

[[test]]
name = "encoding_tests"
path = "tests/encoding_tests.rs"

[[test]]
name = "error_tests"
path = "tests/error_tests.rs"

[[test]]
name = "expect_integration"
path = "tests/expect_integration.rs"

[[test]]
name = "health_tests"
path = "tests/health_tests.rs"

[[test]]
name = "interact_tests"
path = "tests/interact_tests.rs"

[[test]]
name = "mock_integration"
path = "tests/mock_integration.rs"

[[test]]
name = "multi_session_tests"
path = "tests/multi_session_tests.rs"

[[test]]
name = "output_tap_and_screen"
path = "tests/output_tap_and_screen.rs"

[[test]]
name = "pattern_tests"
path = "tests/pattern_tests.rs"

[[test]]
name = "pii_tests"
path = "tests/pii_tests.rs"

[[test]]
name = "platform_tests"
path = "tests/platform_tests.rs"

[[test]]
name = "screen_tests"
path = "tests/screen_tests.rs"

[[test]]
name = "send_tests"
path = "tests/send_tests.rs"

[[test]]
name = "spawn_integration"
path = "tests/spawn_integration.rs"

[[test]]
name = "ssh_tests"
path = "tests/ssh_tests.rs"

[[test]]
name = "sync_tests"
path = "tests/sync_tests.rs"

[[test]]
name = "transcript_tests"
path = "tests/transcript_tests.rs"

[[bench]]
name = "comparative"
path = "benches/comparative.rs"
harness = false

[[bench]]
name = "pattern_matching"
path = "benches/pattern_matching.rs"
harness = false

[[bench]]
name = "screen_buffer"
path = "benches/screen_buffer.rs"
harness = false

[dependencies.bitflags]
version = "2.9"
optional = true

[dependencies.bytes]
version = "1.10"

[dependencies.futures]
version = "0.3"

[dependencies.libc]
version = "0.2"

[dependencies.memchr]
version = "2"

[dependencies.opentelemetry]
version = "0.31"
optional = true

[dependencies.opentelemetry-otlp]
version = "0.31"
features = [
    "tonic",
    "grpc-tonic",
]
optional = true

[dependencies.opentelemetry_sdk]
version = "0.31"
features = ["rt-tokio"]
optional = true

[dependencies.prometheus]
version = "0.14"
optional = true

[dependencies.rand]
version = "0.9"

[dependencies.regex]
version = "1.12"

[dependencies.russh]
version = "0.56"
optional = true

[dependencies.rust-expect-macros]
version = "0.2.0"

[dependencies.rust-pty]
version = "0.2.0"

[dependencies.serde_json]
version = "1.0"

[dependencies.thiserror]
version = "2.0"

[dependencies.tokio]
version = "~1.49"
features = ["full"]

[dependencies.tracing]
version = "0.1"

[dependencies.tracing-opentelemetry]
version = "0.32"
optional = true

[dependencies.tracing-subscriber]
version = "0.3"
features = [
    "env-filter",
    "json",
]
optional = true

[dev-dependencies.criterion]
version = "0.7"
features = ["html_reports"]

[dev-dependencies.expectrl]
version = "0.8"

[dev-dependencies.proptest]
version = "1.9"

[dev-dependencies.tempfile]
version = "3"

[target."cfg(windows)".dependencies.windows-sys]
version = "0.61"
features = [
    "Win32_Foundation",
    "Win32_System_Console",
    "Win32_System_Threading",
    "Win32_System_Pipes",
    "Win32_Security",
    "Win32_System_JobObjects",
    "Win32_System_IO",
    "Win32_System_LibraryLoader",
    "Win32_Storage_FileSystem",
]

[lints.clippy]
cast_possible_truncation = "allow"
cast_possible_wrap = "allow"
cast_precision_loss = "allow"
cast_sign_loss = "allow"
literal_string_with_formatting_args = "allow"
match_same_arms = "allow"
missing_errors_doc = "allow"
missing_fields_in_debug = "allow"
missing_panics_doc = "allow"
module_name_repetitions = "allow"
option_if_let_else = "allow"
redundant_pub_crate = "allow"

[lints.clippy.all]
level = "warn"
priority = -1

[lints.clippy.nursery]
level = "warn"
priority = -1

[lints.clippy.pedantic]
level = "warn"
priority = -1

[lints.rust]
missing_docs = "warn"
unsafe_code = "warn"