Skip to content

テストケース名の検証を /v1/testcase_name_rule の規則で行う - #11

Merged
yuki2006 merged 1 commit into
mainfrom
name-rule
Sep 5, 2026
Merged

yuki2006 merged 1 commit into
mainfrom
name-rule

Conversation

@yuki2006

@yuki2006 yuki2006 commented Sep 5, 2026

Copy link
Copy Markdown
Owner

変更内容

テストケース名に使える文字の一覧を GET /v1/testcase_name_rule から取得し、push / diff の前に「規則で変換した結果が元の名前と違えばエラー」で止めます。A-Za-z0-9._ のハードコード (サーバ規則の写し) を削除しました。今回のハイフン許可のような規則の変更に、CLI の修正なしで追従します。

クライアント自身の安全条件は残し、役割を分離しています:

  • サーバ由来の名前の検証: パス区切り・..:・空名の拒否のみ (ローカルパスと URL に埋め込むための安全条件で、命名規則の写しではない)
  • multipart のファイル名: Content-Disposition ヘッダを壊す文字 (引用符・バックスラッシュ・制御文字・非 ASCII) のみ拒否

実測 (問題 13954、原状復帰済み)

  • case-01.txt がそのままの名前で保存される (?detail=1 で確認)
  • その状態で提出したジャッジが完走し AC (yuki2006 さん確認)
  • 空白入りの case 1.txt は「yukicoder では case1.txt になります」とサーバ規則由来の変換名を示して push 前に停止

単体テスト 55 件、clippy -D warnings / fmt 通過。

🤖 Generated with Claude Code

https://claude.ai/code/session_01GDSDbQcqbZqhXQ1dVo9BeE

使える文字の一覧 (allowedChars) をサーバから取得し、push / diff の前に
「規則で変換した結果が元の名前と違えばエラー」で止める。A-Za-z0-9._ の
ハードコード (サーバ規則の写し) を削除する。ハイフンの許可のような規則の
変更に、CLI の修正なしで追従する。

クライアント自身の安全条件は残し、役割を分離した:
- サーバ由来の名前の検証は、パス区切り・「..」・「:」・空名の拒否のみ
  (ローカルパスと URL に埋め込むため。命名規則の写しではない)
- multipart のファイル名は、Content-Disposition ヘッダを壊す文字
  (引用符・バックスラッシュ・制御文字・非 ASCII) のみ拒否

問題 13954 で実測済み: case-01.txt がそのままの名前で保存され、その状態の
提出でジャッジが完走 (AC)。空白入りの case 1.txt は「case1.txt になります」
とサーバ由来の変換名を示して push 前に止まる。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@yuki2006
yuki2006 merged commit 7d969d1 into main Sep 5, 2026
1 check passed
@yuki2006
yuki2006 deleted the name-rule branch September 5, 2026 01:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant