Перейти к основному содержимому

Многофайловые проекты и тесты

Эти рецепты показывают структуру файлов и настройку запуска. Для начала выберите среду в Новое задание → IDE, затем добавьте исходники в Файлы с кодом. В админке не нужно создавать .pumproom.yml: тип задаётся в Параметрах IDE, а открываемый файл и скрытые тесты — в Файлах с кодом.

Блоки .pumproom.yml ниже предназначены для авторов, у которых настроена публикация заданий из Git. Этот файл хранит конфигурацию задания рядом с исходниками в репозитории; сам по себе файл на компьютере не публикует задание в PumpRoom. Способ подключения репозитория и запуска публикации уточните у команды вашей установки.

РецептТип в админкеФайлы
Проверка функции на PythonPython unittestsolution.py, test_solution.py
JavaScript-проектNode.jsmain.js и подключаемые модули
Собственная сборкаMakeMakefile и исходники программы

Для первого знакомства с редактором начните с простого задания на 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 отдельно настройте проверку решения и интеграцию.