Тестування на треку Lua

Дізнайтеся, як тестувати свої вправи з Lua на Exercism


Запустіть тести так:

$ busted

Про встановлення busted ідеться в розділі Установлення Lua локально.

Налагодження модульних тестів

Цей посібник покаже, як налаштувати VSCode із тестовим framework Busted та Local Lua Debugger, щоб ми могли ставити точки зупину і в специфікації тестів, і у файлі, який вона перевіряє, а отже працювати за простою схемою розробки через тестування. Це не канонічний підхід, існує багато методів, які можуть спрацювати, але цей принаймні допоможе нам усе запустити (зауваження: його перевірено, він працює на Windows 10 та Ubuntu 20.04).

Коли з термінологією розібралися, почнімо.

Ці частини можна пропустити, вони лише пояснюють процес.

У VSCode вимкніть або видаліть усі інші розширення для налагодження Lua і встановіть Local Lua Debugger. Потім створіть власну конфігурацію запуску такого вигляду:

{
	"name": "Busted",
	"type": "lua-local",
	"request": "launch",
	"program": {
		"command": "busted"
	},
	"cwd": "${workspaceFolder}/${relativeFileDirname}",
	"args": ["${file}"],
	"integratedTerminal": true
}

Примітка: властивість integratedTerminal видасть попередження Property integratedTerminal is not allowed, але його можна спокійно проігнорувати.

Властивість cwd задає поточну робочу директорію, а це важливо для розвʼязання шляхів. Усталено Exercism установлює кожну вправу в окрему теку всередині теки з назвою треку. Тож у випадку Lua це має такий вигляд:

└── Exercism/
    ├── lua/
    │   ├── armstrong-numbers
    │   ├── bank-account
    │   ├── binarysearch
    │   └── etc...
    └── python/
        └── etc...

Отже, коли ми відкриваємо VSCode з теки /lua ось так:

C:\users\<username>\Exercism\lua> code .

або

/home/<username>/exercism/lua> code .

VSCode покаже кожну вправу в її власній теці в нашому робочому просторі. Це означає, що нам потрібно, щоб конфігурація запуску змінювала поточну робочу директорію, cwd, на теку кожної окремої вправи. Ми робимо це за допомогою комбінації змінних VSCode ${workspaceFolder} та ${relativeFileDirname}.

Властивість args визначає, який аргумент слід передати Busted. У цьому випадку ми використовуємо змінну ${file}, щоб указати на поточний відкритий файл.

Потім додайте ці три рядки на початок файлу тестів вправи, яку виконуємо, а саме файлу з назвою <exercise_name>_spec.lua:

if os.getenv("LOCAL_LUA_DEBUGGER_VSCODE") == "1" then
  require("lldebugger").start()
end

Тепер, коли ми хочемо запустити тести з налагоджувачем, відкриймо файл тестів, а потім запустімо конфігурацію запуску, яку щойно створили, з бічної панелі Run and Debug (Ctrl+Shift+D) ліворуч. Якщо файл тестів у фокусі, конфігурація запуску запустить ці тести, зупиняючись на точках зупину, і виведе результат на вкладці DEBUG CONSOLE у вбудованому терміналі внизу.

Гарного кодування!