Testar no percurso de Lua

Aprende a testar os teus exercícios de Lua no Exercism


Corre os testes com

$ busted

Consulta Instalar o Lua localmente para instalares o busted.

Depurar testes unitários

Este guia mostra-te como configurar o VSCode com o framework de testes Busted e o Local Lua Debugger, para poderes definir pontos de interrupção tanto no ficheiro de especificação dos testes como no ficheiro que este testa, o que facilita um fluxo de trabalho simples de Desenvolvimento Orientado a Testes. Isto não é a única forma de o fazer; há muitos métodos que podem funcionar, mas este pelo menos põe-te a trabalhar (nota: foi testado e funciona no Windows 10 e no Ubuntu 20.04).

Posto isto, e deixando o jargão de lado, vamos começar.

Podes saltar estas partes, pois servem apenas para explicar o processo.

No VSCode, remove ou desativa todas as outras extensões de depurador de Lua e instala o Local Lua Debugger. Depois, cria uma configuração de arranque personalizada assim:

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

nota: A propriedade integratedTerminal dá um aviso a dizer Property integratedTerminal is not allowed, mas podes ignorá-lo à vontade.

A propriedade cwd especifica o diretório de trabalho atual, o que é importante para resolver caminhos. Por predefinição, o Exercism instala cada exercício na sua própria pasta, dentro da pasta com o nome do track. Por isso, no caso do Lua, fica assim:

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

Por isso, quando abrimos o VSCode a partir da pasta /lua, assim:

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

ou

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

O VSCode mostra cada exercício na sua própria pasta na nossa área de trabalho. Isto significa que precisamos que a configuração de arranque mude o diretório de trabalho atual, cwd, para a pasta de cada exercício individual. Fazemo-lo com uma combinação das variáveis do VSCode ${workspaceFolder} e ${relativeFileDirname}.

A propriedade args indica o argumento que deve ser passado ao Busted. Neste caso, usamos a variável ${file} para referir o ficheiro aberto neste momento.

Depois, adiciona estas três linhas ao topo do ficheiro de testes do exercício em que estás a trabalhar, com o nome <exercise_name>_spec.lua:

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

Agora, quando quiseres correr os testes com o depurador, abre o ficheiro de testes e executa a configuração de arranque que acabaste de criar, a partir da barra lateral Run and Debug (Ctrl+Shift+D), à esquerda. Se o ficheiro de testes estiver em foco, a configuração de arranque corre esses testes, parando nos pontos de interrupção, e imprime o resultado no separador DEBUG CONSOLE do terminal integrado, em baixo.

Boas programações!