У цьому документі пояснюється, як додати нову практичну вправу.
Найпростіший спосіб перевірити, які практичні вправи ще не реалізовано, - перейти на сторінку збірки треку (наприклад, https://exercism.org/tracks/csharp/build) і подивитися розділ «Practice Exercises».
Дані на сторінці збірки оновлюються раз на добу.
Швидко створити каркас нової практичної вправи можна, запустивши скрипт bin/add-practice-exercise (джерело) з кореневого каталогу треку:
bin/add-practice-exercise <exercise-slug>
За бажанням можна також указати складність вправи (через -d) та/або імʼя користувача автора на GitHub (через -a):
bin/add-practice-exercise -d 3 -a foobar <exercise-slug>
Якщо в репозиторії треку немає цього файлу, його можна вільно скопіювати у свій репозиторій за посиланням на джерело вище.
Після створення каркасних файлів потрібно буде:
.meta/config.json вправи:
authors
config.json треку:
practices (потрібно лише тоді, коли у треку є концептуальні вправи)prerequisites (потрібно лише тоді, коли у треку є концептуальні вправи)Важлива частина додавання вправи - це додавання тестів. Загалом кажучи, під час додавання тестів до практичної вправи є два варіанти:
canonical-data.json вправи, який можна знайти в репозиторії problem-specifications.https://exercism.org/exercises/<slug>, щоб побачити, які треки реалізували конкретну вправу).Другий варіант може бути особливо привабливим, бо дає швидкий результат. Але варто памʼятати, що реалізацію слід доопрацювати під свій трек. Наприклад, деякі треки не використовують класи, а працюють лише з функціями. Якщо ж трек зазвичай працює з обʼєктами, реалізацію слід адаптувати до того, що найкраще підходить цьому треку.
Деякі треки використовують генератор тестів, щоб автоматично (пере)генерувати файл(и) тестів вправи. Перевірте документацію треку, чи є там генератор тестів і як ним користуватися.
Щоб переконатися, що код, який проходить тести, написати можливо, потрібно додати приклад реалізації.
Код не обовʼязково має бути ідіоматичним, він лише має проходити тести.
Перевірити, що приклад реалізації проходить усі тести, можна, запустивши скрипт bin/verify-exercises (джерело) з кореневого каталогу треку:
bin/verify-exercises <exercise-slug>
За виводом переконайтеся, що приклад реалізації проходить усі тести.
Якщо в репозиторії треку немає цього файлу, його можна вільно скопіювати у свій репозиторій за посиланням на джерело вище.
Під капотом скрипт bin/verify-exercises робить кілька речей:
Файли-заглушки реалізації дають студентові відправну точку.
Ми радимо, щоб файли-заглушки містили мінімальну кількість коду, достатню для того, щоб:
На практиці це означає визначення функцій/методів, які перевіряє набір тестів. Треки вільні у тому, як саме вони оформлюють цей код, аби лише код-заглушка спочатку не проходив жодного тесту.
Python:
def two_fer(name):
pass
Kotlin:
fun twofer(name: String): String {
TODO("Implement the function to complete the task")
}
Останній крок - запустити лінтер, щоб перевірити, чи правильно структуровано (конфігураційні) файли треку, і синтаксично, і семантично.
Спочатку переконайтеся, що встановлено найновішу версію configlet, запустивши:
bin/fetch-configlet
Потім запустіть лінтер, виконавши:
bin/configlet lint
За виводом перевірте, що все гаразд.
Коли все гаразд, можна надіслати пул-реквест до репозиторію треку.
Перед надсиланням прочитайте Посібник із пул-реквестів для контрибʼюторів і Посібник із пул-реквестів.
Переконайтеся, що в описі PR вказано вправу, яку додають.