Skip to content

v0.5.3: LC_ALL=C scoped to sitter's string handling; hooks and the wrapped command inherit the operator locale (#75)

Choose a tag to compare

@github-actions github-actions released this 08 Sep 08:20
· 8 commits to main since this release
2f9c9fc

v0.5.3 — LC_ALL=C no longer leaks into hooks and the wrapped command (#75)

Seven functions in sitter assigned LC_ALL=C as a bare global. When the operator had LC_ALL exported (containers, CI), those assignments overwrote the exported value mid-run, so --on-fail hooks observed LC_ALL=C instead of the operator's locale.

Fixed

  • json_quote, sanitize_expect_value, truncate_utf8, emit_expect_event, build_ask_event_record: local LC_ALL=C.
  • invoke_hook, emit_event: assignment removed; the 512-byte detail_truncated count moves to a byte_length helper so no LC_ALL=C frame is alive when the hook is spawned (bash locals inherit the export attribute of an exported global).
  • --on-fail hooks and the wrapped command now inherit the operator's LC_ALL/LANG unchanged. Sitter's internal string-handling helpers and the explicitly scoped replay pipelines still run under LC_ALL=C.

Tests

  • hook_sees_operator_locale (run + expect/sweep hook paths, unset control, 513-byte multibyte detail_truncated).
  • ledger_sweep_exported_locale_equivalence (sweep rows bytewise identical under LANG-only / LC_ALL=C.UTF-8 / en_US.UTF-8 / C).

Docs: docs/reference.md, docs/reference.ja.md.

PR: #81 · Issue: #75 · Previous release: v0.5.2