From 5757eb740ed113ae915925c330316ef83f287bf4 Mon Sep 17 00:00:00 2001 From: tomoaki Date: Sun, 28 Dec 2025 13:51:44 +0900 Subject: [PATCH] runner: preserve UTF-8 in text-merge normalization --- .../modes/common_util/resolve/strip/merge.rs | 18 +++++++++++++++--- .../integration/apps/string_cp_mode_min_vm.sh | 2 +- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/runner/modes/common_util/resolve/strip/merge.rs b/src/runner/modes/common_util/resolve/strip/merge.rs index c772ed08..b5ac35de 100644 --- a/src/runner/modes/common_util/resolve/strip/merge.rs +++ b/src/runner/modes/common_util/resolve/strip/merge.rs @@ -217,8 +217,8 @@ fn normalize_text_for_inline(s: &str) -> String { // pattern: `;` followed by optional spaces/newlines then `}` // Do a few passes to cover nested cases without regex for _ in 0..2 { - let mut tmp = String::with_capacity(out.len()); let bytes = out.as_bytes(); + let mut tmp: Vec = Vec::with_capacity(bytes.len()); let mut i = 0usize; while i < bytes.len() { if bytes[i] == b';' { @@ -238,13 +238,25 @@ fn normalize_text_for_inline(s: &str) -> String { continue; } } - tmp.push(bytes[i] as char); + tmp.push(bytes[i]); i += 1; } - out = tmp; + out = String::from_utf8(tmp).expect("normalize_text_for_inline: invalid UTF-8"); } if !out.ends_with('\n') { out.push('\n'); } out } + +#[cfg(test)] +mod tests { + use super::normalize_text_for_inline; + + #[test] + fn normalize_text_for_inline_preserves_utf8() { + let src = "aé𝄞;\n}\n"; + let out = normalize_text_for_inline(src); + assert_eq!(out, "aé𝄞\n}\n"); + } +} diff --git a/tools/smokes/v2/profiles/integration/apps/string_cp_mode_min_vm.sh b/tools/smokes/v2/profiles/integration/apps/string_cp_mode_min_vm.sh index c24f0c63..eab1dc04 100644 --- a/tools/smokes/v2/profiles/integration/apps/string_cp_mode_min_vm.sh +++ b/tools/smokes/v2/profiles/integration/apps/string_cp_mode_min_vm.sh @@ -13,7 +13,7 @@ run_case() { local expect_len="$2" set +e - OUTPUT=$(timeout "$RUN_TIMEOUT_SECS" env -u NYASH_ROOT NYASH_STR_CP="$mode" "$NYASH_BIN" "$INPUT" 2>&1) + OUTPUT=$(timeout "$RUN_TIMEOUT_SECS" env NYASH_STR_CP="$mode" "$NYASH_BIN" "$INPUT" 2>&1) EXIT_CODE=$? set -e