Многофайловые проекты и тесты
Эти рецепты показывают структуру файлов и настройку запуска. Для начала выберите среду в Новое задание → IDE, затем добавьте исходники в Файлы с кодом. В админке не нужно создавать .pumproom.yml: тип задаётся в Параметрах IDE, а открываемый файл и скрытые тесты — в Файлах с кодом.
Блоки .pumproom.yml ниже предназначены для авторов, у которых настроена публикация заданий из Git. Этот файл хранит конфигурацию задания рядом с исходниками в репозитории; сам по себе файл на компьютере не публикует задание в PumpRoom. Способ подключения репозитория и запуска публикации уточните у команды вашей установки.
| Рецепт | Тип в админке | Файлы |
|---|---|---|
| Проверка функции на Python | Python unittest | solution.py, test_solution.py |
| JavaScript-проект | Node.js | main.js и подключаемые модули |
| Собственная сборка | Make | Makefile и исходники программы |
Для первого знакомства с редактором начните с простого задания на Python.
Проверка Python-проектов через unittest
В админке выберите Python unittest. Добавьте два файла из примера ниже. В Выбранном файле по умолчанию укажите solution.py, в Скрытых файлах — test_solution.py.
При публикации из Git вместо настройки формы укажите в .pumproom.yml:
task:
backend: judge
framework: unittest
language: python
selected_file: solution.py
hidden_files:
- test_solution.py
Добавьте в solution.py запускаемую заготовку:
def add(a, b):
return 0 # TODO: верните сумму аргументов
Файл test_solution.py проверяет функцию из solution.py:
import unittest
from solution import add
class SolutionTests(unittest.TestCase):
def test_add(self):
self.assertEqual(add(20, 22), 42)
Для правильного решения замените тело add на return a + b. Запустите оба варианта: тест должен завершиться ошибкой на заготовке и пройти на правильном решении.
Тесты обнаруживаются из корня проекта по стандартному шаблону test*.py.
Вложенные папки с тестами в Python 3.13 должны содержать __init__.py.
Код можно импортировать из корня задания и папки src.
Стандартный отчёт unittest показывает выполненные тесты, ошибки и пропуски.
Падающие тесты, ошибки импорта и пустой набор дают неуспешный результат.
Пропуски и expectedFailure сохраняют обычное поведение unittest.
Проверочные файлы можно скрыть через hidden_files: при запуске используются
их исходные версии. Тесты выполняются в окружении Python Multi с общими
ограничениями ресурсов и доступа к сети. FastAPI можно проверять через
TestClient внутри процесса, без запуска сетевого сервера.
Проекты Node.js
В админке выберите Node.js, добавьте main.js в Файлы с кодом и выберите его для открытия по умолчанию. Минимальный пример выводит 42:
console.log(20 + 22);
При публикации из Git укажите в .pumproom.yml:
task:
backend: judge
framework: node
language: javascript
selected_file: main.js
Команда node main.js запускает файл main.js в корне задания. Из него можно
подключать локальные файлы и встроенные модули Node.js. Для явного выбора режима
модулей используйте "type": "module" или "type": "commonjs" в package.json.
Поддерживаются файлы .js, .mjs и .cjs в соответствии с правилами Node.js.
Зависимости автоматически не устанавливаются; команды npm install и npm start
не вызываются. Поля main и scripts в package.json не меняют точку входа:
ею остаётся main.js. Вывод и ошибки показываются в результате; ограничения
ресурсов и настройка сети применяются ко всему запущенному проекту.
Проекты с Makefile
В админке выберите Make. В Файлы с кодом добавьте main.c и Makefile из примера ниже; для открытия по умолчанию выберите main.c.
При публикации из Git укажите в .pumproom.yml:
task:
backend: judge
framework: make
language: c
selected_file: main.c
В main.c добавьте программу, которая выводит 42:
#include <stdio.h>
int main(void) {
printf("%d\n", 20 + 22);
return 0;
}
В корне задания создайте Makefile:
.DEFAULT_GOAL := execute
.PHONY: execute
execute: main.c
@$(CC) main.c -o answer
@./answer
Строки рецепта начинаются с символа TAB. Команда make собирает и запускает
проект по цели по умолчанию; вывод компилятора и программы показывается в результате. Ошибка сборки или
запуска означает неуспешное выполнение. Сборка и запуск используют общий лимит
ресурсов и настройку доступа к сети задания. Дополнительные зависимости
автоматически не устанавливаются.
Имя цели произвольное: без .DEFAULT_GOAL Make выбирает первую обычную цель.
Для автопроверки цель по умолчанию может запускать тесты вместо программы.
Перед публикацией
Проверьте заготовку, правильное решение и намеренную ошибку в выбранной среде PumpRoom. Для тестовой среды убедитесь, что тесты действительно обнаружены и запускаются. После настройки скрытых файлов проверьте, что студент их не видит, а запуск использует их содержимое.
Файл, выбранный для открытия, и точка входа среды могут отличаться: например, открытым может быть solution.py, а Python unittest запускает обнаруженные тесты. Не выбирайте среду только по расширению открытого файла.
Для ИИ-разбора и передачи зачёта в LMS отдельно настройте проверку решения и интеграцию.