Handle non-UTF-8 program output in the native case runner
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 75/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 領域
- devtools, testing-qa
調査の方向性
tools/run_tests.py(classify_program)とtools/process_tree.pyのサブプロセス処理を調べることから始めてください。再現スクリプトはUnicodeDecodeErrorをトリガーする方法を示しています。目標は、出力のデコードを修正して任意のバイトを適切に処理し、テストレポートが引き続き生成されるようにすることです。提供された再現手順を実行して修正を確認してください。
索引モデルが issue の本文から書いたものです。
説明
Problem
The native runner uses text-mode subprocess output without a robust decoding policy. A successful program that writes arbitrary bytes can raise UnicodeDecodeError, aborting the suite before its report is written.
Start in classify_program in tools/run_tests.py and its subprocess handling in tools/process_tree.py.
Reproduction
Run this focused runner reproduction from the repository root:
import sys
from tools import run_tests as r
metadata = r.parse_test_metadata("tests/cases/shared/test1.wave")
r.classify_program(
"binary-output", "tests/cases/shared/test1.wave",
[sys.executable, "-c", "import sys; sys.stdout.buffer.write(bytes([255]))"],
metadata, None,
)
Save it as /tmp/repro.py, then run PYTHONPATH=. python3 /tmp/repro.py. Replace sys.stdout with sys.stderr to exercise the other stream.
Tested at 01955d715dda275de993948037091140bb859174 on Fedora Linux 43, x86_64, with Python 3.14.
The child exits 0, but either stream makes the runner raise:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
A Wave program writing a u8 value of 255 through io_write_all also compiles and exits 0 at O0/O2, emitting ff. This is an output-handling issue, separate from string escapes (#599) or manifest input decoding (#688).
Completion criteria
- Define a robust decoding policy for runtime stdout/stderr and retain bounded JSON diagnostics.
- Binary output on either stream does not raise or prevent report generation.
- Nonzero exits and artifact failures are still classified correctly; ordinary UTF-8 output is preserved.
- Keep source and manifest input decoding strict.
Difficulty: easy.
- 主要言語
- Rust
- スター
- 56
- フォーク
- 21
- 平均マージ
- 4時間 49分
- マージ済み PR(30日)
- 59
環境構築
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
wavefnd/Wave のほかの issue
-
bug good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
Distinguish Rust character literals from lifetimes in the spacing helper対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンbug good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
bug good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
enhancement good first issue needs testing
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
enhancement good first issue needs testing
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
似ている issue
-
bug cli p3
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 3 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
Telegram and Twitch adapters panic when splitting long messages with multibyte characters対応中かも @RaphaelFakhri が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
spacedriveapp/spacebot#661 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
project-robius/robrix#1177 ·
メンテナーはふだん 1 日以内に返信