-
Notifications
You must be signed in to change notification settings - Fork 0
HOWTO_create_new_test
Это страничка посвящена созданию тестов для нашей тестирующей системы.
Специально для этого курса была создана тестирующая система, её код выложен на GitHub тут: https://github.com/gvozdarev-sa/intest. Пока это только alpha версия, так что возможны ошибки. Конечно же там нет конфигурации самих тестов, которая находится в локальном репозитории.
По всем вопросам пишите сюда: gvozdarev.sa@gmail.com
Для версии с web интерфейсом входные параметры передаются через http GET запрос в следующем формате:
?test=main_container;o=test:task0--users:u1@intest.com,u2@intest.com
В результате будет запущена команда:
perl intest.pl --test main_container --o test:task0--users:u1@intest.com,u2@intest.com
Опция --o это те параметры, которые будут переданы в test main_container
- test - определяет какой тест будет запущен для всех пользователей.
- users - через запятую емэйлы пользователей для который будет запущено тестирование
- only_for_mentors - через запятую eмэйлы менторов, к которым должны принадлежать пользователи.
замечание only_for_mentors работает как фильтр, если Вы укажите users, то тестирование будет запущено только для принадлежащих хотя бы одному ментору.
Для того что бы определить для кого проводится тестирование, используется этот файл, он загружается внутри main_container и определяет путь внутри репозитория, менторов, к которым принадлежат пользователи и т.д.
- клонируется этот репозиторий. Пока клонируется только master
- Cчитывается в нём users.json
- Для каждого пользователя прошедшего фильтры запускается тест указанный в параметрах
- Копируются файлы нужные для тестирования, путь определяется так
<root_of_repo><path_of_user><task_name>main.cГде path_of_user - это путь указанный в файле users.json, task_name, тест который запускается. Именно поэтому важно соблюдать структуру репозитория и корректный файл users.json - Компилируются исходники в bin/a.out
- Запускается тест контейнер <task_name>container, который запускает a.out с разными входными параметрами и STDIN, и проверяет STDOUT, STDERR и код возврата по правилам указанным в контейнере.
Лог в HTML формате
Запустить
perl new_test.pl
И отвечать на вопросы
Скрипт делает тоже самое, что описано здесь. В связи с вышенаписанным, основной файл для изменения теста - это _<task_name>container.json. Поэтому для создания нового теста нужно сделать следующие шаги:
- Скопировать файлы task0.json и task0_container.json в собственную папку
- Переименовать task0 в зараннее определённое имя задачи <task>
- Изменить поле_name_в <task>.json и <task>_container.json
- Изменить/добавить/удалить подтесты core_run_compare в <task>_container.json в соответсвие с условиями задачи
- Добавить <task>/<task>_container и <task>/<task> в tests.json
- Объявить всем, всем, всем о создании нового теста с именем <test>, и просьбой класть исходники для этой задачи в <path_of_user><task>/main.c
- Mentors
- UsingGitOnWindows
-
GIT
- GitStatus
- GitBranches
- WorkingWithIssues
- HOWTO_create_new_test
- CommentStyle
- CodeReview
- Testing
- CodeStyle
- CompilersIDEs
- WindowsCmd
- WikiImages
- LinksAndResources
- FAQ