非推奨API 7件のテストカバレッジについて(報告と相談) #724
Replies: 2 comments
|
お騒がせしております。恐縮ですが、当初の報告に見落としがありましたので、訂正・追記させてください。 見落としの経緯当初の調査では、 含まれていないことについての原因を辿ったところ、
この警告文字列自体は、マクロの定義箇所に 改めて 更新後の集計このマクロ経由の これに伴い更新した お手数をおかけし申し訳ございません。よろしくお願いいたします。 |
|
詳細な調査とご報告ありがとうございます。 ご指摘いただいたテストについてはこちらで対応済みで、次のバージョンに含まれる予定です。 |
Uh oh!
There was an error while loading. Please reload this page.
本件は lr-pyxel の pyxel に対するコンパチビリティ調査として実施した、公開されているAPI(
api-reference.json)と、実際の実装(
crates/pyxel-binding/src/*.rs)、そしてテストスイート(python/tests/)を、全13カテゴリ・151項目にわたって突き合わせた結果の報告となります。(補足欄に相談もあります)
なお以下はClaudeの支援を得て作成しています。
要約
api-reference.jsonには非推奨APIが一貫してドキュメントから除外されていることを確認しましたが、テストスイート側で以下の非推奨API 7件のカバレッジで抜けと思われる項目があることを確認しました。
(同時に
api-reference.jsonと実装、テストスイートの間で、意図しない差異を見つけられなかったことも確認しました)
非推奨APIで、テストが見当たらない、または警告メッセージのみのもの — 7件
以下の項目は、非推奨警告が出ることの確認はあっても、実際の動作についてテストされていない
ように見受けられました。
Sound.old_mml(None)—Sound.old_mml(code)が非推奨警告を出すことのテスト(test_old_mml_emits_deprecation)はありますが、引数無し(None)で呼んだ際にMMLがクリアされる動作(mml(None)側のtest_mml_none_exits_mml_modeに相当するもの)のテストが見当たりませんでした。Tilemap.from_tmx()— テストが見当たりませんでした。Tilemap.collide()— テストが見当たりませんでした。Tilemap.imgsrc(正常系) — 異常系(不正なrefimg設定時にエラーになること)のテストは1件ありますが、正常な値での動作を確認するテストが見当たりませんでした。Tilemap.data_ptr()— テストが見当たりませんでした。Tilemap.set_image()/Tilemap.set_refimg()— テストが見当たりませんでした。Tone.noise/Tone.set_noise/Tone.waveform— いずれもテストが見当たりませんでした。補足
当初は
System.show()にも専用テストが無い点を気にしていましたが、_runner.pyを拝見したところ、run()/show()自体をmonkeypatchで置き換え、flip()ベースで手動にフレームを進める設計を、テストスイート全体で一貫して採用されていることが分かりました。
run()/show()という、本物のブロッキング実装そのものを直接テストしない、という意図的な設計判断と理解し、こちらはIssueの対象から外しています。
調査の過程で、
api-reference.jsonには掲載されていない非推奨API全体の一覧(カテゴリ・警告メッセージ・代替API・テスト有無つき)を、副産物として作成しました。
参考情報としてこちらも共有いたします。
DEPRECATED-API.md
上記7件について、実際にテストコードを作成し、実機 (pyxel/PC/WSL-Ubuntu)&(lr-pyxel/RPi5/Lakka)
上でも動作することを確認済みです。
本件はPull Requestとして提出することが可能ですので、問題がないようでしたら
お知らせください。
不勉強な点や見落としがあればご指摘いただけますと幸いです。
よろしくお願いいたします。
All reactions