luogu-dev / cyaron

CYaRon: Yet Another Random Olympic-iNformatics test data generator
GNU Lesser General Public License v3.0
1.32k stars 164 forks source link

两个相同的程序(输入合法)对拍出错 #38

Closed rqy2002 closed 6 years ago

rqy2002 commented 6 years ago

RT,似乎第二个程序会拿到空输入。

例如 a.py :

import cyaron
import random
while True:
    input_io = cyaron.IO()
    input_io.input_writeln(random.randint(1, 3))
    cyaron.Compare.program("./b", input=input_io, std_program="./a")

其中 ./a./b 由同一个 cpp 编译而来:

#include <cstdio>

char s[10000000];
int main() {
  printf("%d\n", fread(s, 1, 10000000, stdin)); // 输出“输入文件大小”
  return 0;
}

运行python2 a.py:

Traceback (most recent call last):
  File "a.py", line 7, in <module>
    cyaron.Compare.program("./b", input=input_io, std_program="./a")
  File "/home/rqy/.local/lib/python2.7/site-packages/cyaron/compare.py", line 134, in program
    [x for x in map(do, programs)]
  File "/home/rqy/.local/lib/python2.7/site-packages/cyaron/compare.py", line 129, in do
    cls.__compare_two(program_name, content, std, grader)
  File "/home/rqy/.local/lib/python2.7/site-packages/cyaron/compare.py", line 28, in __compare_two
    raise CompareMismatch(name, info)
cyaron.compare.CompareMismatch: ('./b', TextMismatch(u'0\n', u'2\n', 'On line {} column {}, read {}, expected {}.', 1, 1, u'0', u'2'))

python3 a.py 的结果类似,只是路径python2.7换成了python3.6; u'0\n'变成了'0\n'等。

rqy2002 commented 6 years ago

还有,错误里的TextMismatch(u'0\n', u'2\n', 'On line {} column {}, read {}, expected {}.', 1, 1, u'0', u'2') ,是不是应该在某个地方 format 一下?

lin-toto commented 6 years ago

will fix

himself65 commented 6 years ago

fixed