Open rsk0315 opened 2 years ago
resolves https://github.com/online-judge-tools/oj/issues/899
撃墜ケースを見つける前提であれば、見つけたケースを後から利用できる形式のテストがあるのが好ましいと思いました。 現状の t/r では、ジャッジコマンドが都度ケースを生成する前提になっており、これに適していなさそうです。
t/r
それを踏まえ、以下のオプション・サブコマンドを追加しました:
t/rf
t/r -i
$ for f in test/* ; [[ -e a.pipe ]] && rm a.pipe ; mkfifo a.pipe && ./a.out < a.pipe | ./judge $f > a.pipe ; done
$f
g/i
g/r
% # ジェネレータなしで hack % oj g/r -d test/e target/release/e-wa target/release/e-judge-self-gen % # ジェネレータを用いて hack + ケースの保存 % oj g/r -d test/e -g target/release/e-gen target/release/e-wa target/release/e-judge % # 生成したファイルを用いてテスト % oj t/r -i -c target/release/e target/release/e-judge test/e/*
-i, --from-file
-i
test/
-d DIR
h/r
hack-reactive
./a.out
oj h/r -c ./hacked -g ./generator ./judge
resolves https://github.com/online-judge-tools/oj/issues/899
追加内容
撃墜ケースを見つける前提であれば、見つけたケースを後から利用できる形式のテストがあるのが好ましいと思いました。 現状の
t/r
では、ジャッジコマンドが都度ケースを生成する前提になっており、これに適していなさそうです。それを踏まえ、以下のオプション・サブコマンドを追加しました:
t/rf
~t/r -i
:テストケースを読んで処理を行うジャッジ用のテスト$ for f in test/* ; [[ -e a.pipe ]] && rm a.pipe ; mkfifo a.pipe && ./a.out < a.pipe | ./judge $f > a.pipe ; done
に相当$f
には、提出プログラムに見せないジャッジ用のデータが入るのを想定(ジャッジが任意に利用)g/i
などで生成可能g/r
:リアクティブ用の生成コマンドt/r
で使うのと同じ)を仮定例
懸念
t/rf
のエイリアスは微妙な感じがする~t/r
のオプションに-i, --from-file
のようなのを足した方がよかったか~-i
を使うとデフォルトではtest/
のファイルを使用、-d DIR
でディレクトリを指定など、他と合わせる感じで~t/r -i
に変更g/r
はg/i
と違って hack が前提なので、h/r
hack-reactive
などにした方がよい?./a.out
にしてoj h/r -c ./hacked -g ./generator ./judge
とかにしてしまう?