[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"