Minijudge — легковесная утилита для тестирования кода

Revision ru5, by xen, 2016-04-23 14:37:26

Привет, Codeforces!

Пару месяцев назад я написал небольшую утилиту, которой бы хотел поделиться. Как отмечено в заголовке, она предназначена для быстрого прогона решений на наборе тестов. Возможно (и я в этом даже уверен), что аналоги, умеющие ровно то же или даже больше, уже существуют, но в первую очередь я ставил перед собой цель написать что-нибудь легковесное, кроссплатформенное и, по возможности, легко куда-нибудь интегрируемое.

Сабж (ссылка ведет на Github)  

Некое подобие предыстории:

В один прекрасный день, разбирая накопившийся на жестком диске хлам, я наткнулся на архив одного достаточно старого контеста, который, как оказалось, я проглядел и так и не имел шанса написать. Задачи из этого контеста показались мне довольно интересными, поэтому возникла идея найти этот его в разделе тренировок на Codeforces. К сожалению, он там не обнаружился.

Так как желание написать контест почему-то было неожиданно сильным, а перспектива писать задачи без возможности оперативно их проверить меня не привлекала, было решено написать маленькую утилиту, которая помогла бы мне прогнать задачи по системным тестам из архива. Через несколько часов была готова рабочая версия утилиты.

В другой прекрасный день, через пару недель спустя, появилась другая идея: расширить утилиту до полноценной (но в то же время небольшой) тестирующей системы, которую бы было можно легко поднять в локальной сети для написания контестов с друзьями. В качестве proof of concept даже было написано простенькое веб-приложение, но, к сожалению, до большего руки так и не дошли. Зато скрипт оказался вполне себе полезной штукой в повседневной, так сказать, жизни.

Замечания:

Исходный код пока еще находится в состоянии work in progress, но сама утилита вполне себе работоспособна. Скрипт кушает преимущественно чекеры на основе testlib, но, думаю, любой чекер со сходными параметрами запуска и возвращающий один из стандартных кодов, также подойдет.

Для запуска утилиты следует воспользоваться Python 3 (более подробно об этом, а также о необходимых зависимостях, сказано в readme).

Работоспособность была проверена на OS X и Linux, так что прошу сообщать об ошибках, если таковые возникнут. Прошу также обратить внимание на файл compilers.json с описанием компиляторов и интерпретаторов: вполне возможно, что команды, приведенные в нем, не будут работать «из коробки» на других платформах.

UPD: Демо работы утилиты.

Tags утилиты, тест, тестирующая система

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en4 English xen 2016-04-23 14:38:01 51 Added demo
ru5 Russian xen 2016-04-23 14:37:26 66 Добавил демо работы
ru4 Russian xen 2016-04-23 00:45:26 0 (опубликовано)
ru3 Russian xen 2016-04-22 23:57:09 0 Русские теги
en3 English xen 2016-04-22 23:56:34 1 English tags
en2 English xen 2016-04-22 23:53:05 1262 Full English translation
ru2 Russian xen 2016-04-22 23:39:35 50 Небольшие правки
en1 English xen 2016-04-22 23:38:24 2563 Initial revision for English translation (unfinished)
ru1 Russian xen 2016-04-22 23:08:02 2561 Первая редакция (сохранено в черновиках)