Дізнайтеся, як тестувати свої вправи з Pyret на Exercism
Після успішного завантаження вправи потрібно встановити модулі Node.js, щоб запускати тести:
cd /path/to/exercise
npm install
Потім додайте теку, що містить інструмент командного рядка pyret, до змінної $PATH
# bash
PATH="./node_modules/.bin:$PATH"
# zsh
path=(./node_modules/.bin $path)
# fish
fish_add_path ./node_modules/.bin
У теці вправи буде кілька файлів, але найважливіші два - це файл рішення та файл тестів. У наведеному нижче прикладі ми завантажили вправу Leap.
leap/
├── leap.arr # Solution file - your code goes here
├── leap-test.arr # Test cases for the exercise
Щоб запустити тести, можна скористатися командою exercism test, якщо завантажено офіційний інтерфейс командного рядка Exercism, або виконати pyret leap-test.arr.
Pyret запустить набір тестів, який складається з низки позначених блоків check, що перевіряють файл рішення на конкретних вхідних даних та очікуваних результатах.
Важлива частина цього процесу - явно експортувати частини коду, щоб набір тестів міг їх бачити.
Тести в цьому треку імпортують файл і отримують доступ до всього, що явно експортовано з коду.
Щоб експортувати змінні, потрібно додати інструкцію provide на початку файлу.
Наведені нижче фрагменти - це два способи експортувати a, b і c.
# using a list of bindings
provide a, b, c end
# using an object literal
provide {
a: a,
b: b,
c: c
}
end
Третій метод, provide *, це скорочення для експорту всіх звʼязувань верхнього рівня, крім власних типів даних.
Однак його зазвичай не радять використовувати, бо Pyret суворо забороняє затінення.
Деякі вправи вимагають, щоб для тестування було експортовано власний тип даних.
У таких випадках можна скористатися інструкцією provide-types.
Оскільки тип даних має додаткові функції, які можуть бути не експортовані, радимо використати provide-types *, попри застереження щодо затінення.
provide-types *
data MyPoint:
| two-dim(x, y)
| three-dim(x, y, z)
end
У всіх заготовках вправ уже налаштовано інструкції provide або provide-types.