Skip to content

Commit c4b9062

Browse files
committed
Stage 4
README.md: codetracer-python-recorder/Cargo.lock: codetracer-python-recorder/Cargo.toml: codetracer-python-recorder/src/policy.rs: codetracer-python-recorder/src/runtime/io_capture/fd_mirror.rs: codetracer-python-recorder/src/runtime/io_capture/install.rs: codetracer-python-recorder/src/runtime/io_capture/mod.rs: codetracer-python-recorder/src/runtime/io_capture/proxies.rs: codetracer-python-recorder/src/runtime/io_capture/sink.rs: codetracer-python-recorder/src/runtime/mod.rs: design-docs/adr/0008-line-aware-io-capture.md: design-docs/io-capture-line-proxy-implementation-plan.md: design-docs/io-capture-line-proxy-implementation-plan.status.md: Signed-off-by: Tzanko Matev <[email protected]>
1 parent 72b2ff6 commit c4b9062

File tree

13 files changed

+863
-21
lines changed

13 files changed

+863
-21
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ Line-aware stdout/stderr capture proxies are now enabled by default. Control the
5454

5555
- CLI: `python -m codetracer_python_recorder --io-capture=off script.py` disables capture, while `--io-capture=proxies+fd` also mirrors raw file-descriptor writes.
5656
- Python: `configure_policy(io_capture_line_proxies=False)` toggles proxies, and `configure_policy(io_capture_fd_fallback=True)` enables the FD fallback.
57-
- Environment: set `CODETRACER_CAPTURE_IO=off`, `proxies`, or `proxies,fd` to match the CLI and Python helpers.
57+
- Environment: set `CODETRACER_CAPTURE_IO=off`, `proxies`, or `proxies+fd` (`,` is also accepted) to match the CLI and Python helpers.
5858

5959
### Migration checklist for downstream tools
6060

codetracer-python-recorder/Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

codetracer-python-recorder/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ serde = { version = "1.0", features = ["derive"] }
3131
serde_json = "1.0"
3232
uuid = { version = "1.10", features = ["v4"] }
3333
recorder-errors = { version = "0.1.0", path = "crates/recorder-errors" }
34+
libc = "0.2"
3435

3536
[dev-dependencies]
3637
pyo3 = { version = "0.25.1", features = ["auto-initialize"] }

codetracer-python-recorder/src/policy.rs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ fn parse_capture_io(value: &str) -> RecorderResult<(bool, bool)> {
251251

252252
let mut line_proxies = false;
253253
let mut fd_fallback = false;
254-
for token in lower.split(',') {
254+
for token in lower.split(|c| matches!(c, ',' | '+')) {
255255
match token.trim() {
256256
"" => {}
257257
"proxies" | "proxy" => line_proxies = true,
@@ -460,6 +460,22 @@ mod tests {
460460
reset_policy();
461461
}
462462

463+
#[test]
464+
fn configure_policy_from_env_accepts_plus_separator() {
465+
reset_policy();
466+
let env_guard = env_lock();
467+
env::set_var(ENV_CAPTURE_IO, "proxies+fd");
468+
469+
configure_policy_from_env().expect("configure from env with plus separator");
470+
471+
drop(env_guard);
472+
473+
let snap = policy_snapshot();
474+
assert!(snap.io_capture.line_proxies);
475+
assert!(snap.io_capture.fd_fallback);
476+
reset_policy();
477+
}
478+
463479
#[test]
464480
fn configure_policy_from_env_rejects_invalid_boolean() {
465481
reset_policy();

0 commit comments

Comments
 (0)