dockerfile for allcups
Автоматизированная проверка для второй домашки и небольшой шаблон для оформления остальных работа.
Идея следующая:
В статических данных храним test.c/checker.py, Makefile и hw_number.json. Первые два файла нужны, чтобы студенты не поломали тестирование, третий необходим, чтобы можно было различить с какой именно домашней работой взаимодействуем. Для каждой задачи эти файлы будут собственные. После моунта всех путей, запускаем test.sh, который определяет номер работы, копирует тесты и Makefile, собирает решение и запускает тесты. Исходя из результата тестов записывает ответ в output.json.
Студент может отправить неограниченное количество файлов, если упакует их в архив. Изначально считаю, что загружают solution.zip
Вопросы:
- Makefile'ы местами немного различаются. Где-то происходит только сборка, где-то сборка и запуск тестов. Возможно стоит немного переписать их под общий стиль, чтобы не покрывать это условиями в
test.sh, потому что логика тестирования для 3, 4 и 5 работ одинаковая. - Не совсем понимаю как проверить из
test.shкакие макросы, объявленные у студента в работе, чтобы выставить корректное количество баллов. Есть вариант в исходном файле с помощью grep проверить наличие макроса, но не уверен, что это будет хорошим решением. - Кажется в одной из работы был момент, когда проверка может производиться совсем долго. Что делаем в такой ситуации?
Тестировал подобным запуском:
docker build . -f DockAllcups.dockerfile -t allcups
docker run --mount "type=bind,src=$(pwd)/../testDockerFiles/resources,dst=/tmp/data" --mount "type=bind,src=$(pwd)/../testDockerFiles/solution,dst=/sysprog/solution" allcups
Где в папке testDockerFiles эмитировал решения студента и статические файлы для задачи.