Closed ryo-n closed 4 years ago
@ryo-n
テスト用の統計情報を出力するために oj t --json
みたいなオプションを使っていて、これが壊れてしまっています。
stderr を stdout にすることよりもテストを回す方が重要なので、これが壊れないように追加の修正をお願いします。(しんどそうならプルリクエストを放棄して close してもらってもかまいません)
「--json
というオプションがあること」も「そのようなオプションが標準入出力を使うこと」もあまり不適切な仕様ではありませんでした。今ではどちらかと言えば消したいと思っています。--json
を消して --log-file=path/to.json
のような出力先ファイルを指定できる隠しオプション (argparse.SUPPRESS などを使って --help
で見えないようになっているとうれしい) を足すように全体を書き直してもらえると理想です。
@kmyk
標準出力からjsonデータ部分を抽出する方が影響少なそうだったので、その方法でひとまず対応してみました。 抽出する部分が若干強引なので何か良い方法とかあればアドバイス頂ければと思います。 (jsonデータ構造の正規表現を利用して抽出とかが素直?)
--json
オプションに関しては消したいとのことなので、--log-file=path/to.json
の方式もちょっとチャレンジしてみようかと思います。
その場合はtestサブコマンド以外の--json
オプションも同様に消してしまって問題ないのでしょうか?
@kmyk
--json オプションの名前を別のものに変更した上で --help では表示されないようにしてください。
helpで表示しないようにし、オプションの名前を変更しました。
「内部的なテストでしか使われず、もし予期しない入力がされて壊れてもせいぜいテストが落ちるだけ」「--json オプションが消えるとこのコードも消える」という性質のコードなので、実装はこれで問題ないと思います。一方で、なぜこのような「若干強引な」方法が用いられているかについて、コード中にコメントとして簡単に書いておいてほしいです。この issue やプルリクへのリンクを貼る程度でもかまいません。
コメント追加しました
nitpick: snake_case を使ってください。
変数名をsnake_caseに修正しました。
nitpick: 型ヒントを書いておいてほしい
型ヒント追加しました。
このPRではここまでの修正にし、"テスト用output json dataをファイルに保存するように変更する" などの課題を別途作って、
--log-file=path/to.json
対応をしようと思いますがどうでしょうか。
はい。「--log-file=path/to.json 対応を別のプルリクにする」のはよい案だと思います
ありがとうございます。
824 対応
StreamHandlerを標準エラー出力から標準出力に変更しました