Scopri come testare i tuoi esercizi di Lua su Exercism
Esegui i test con
$ busted
Per installare busted, fai riferimento a Installare Lua in locale.
Questa guida ti mostrerà come configurare VSCode con il framework di test Busted e Local Lua Debugger, così da poter impostare punti di interruzione sia nello spec del test sia nel file che stai testando, il che semplifica un flusso di lavoro di sviluppo guidato dai test. Questo metodo non è canonico, esistono molte alternative che potrebbero funzionare, ma questo almeno ti permette di iniziare (nota: è stato testato e funziona su Windows 10 e Ubuntu 20.04).
Fatta chiarezza sul gergo, iniziamo.
Puoi saltare queste parti: servono solo a spiegare il procedimento.
In VSCode rimuovi o disabilita tutte le altre estensioni di debug per Lua e installa Local Lua Debugger. Poi crea una launch configuration personalizzata come questa:
{
"name": "Busted",
"type": "lua-local",
"request": "launch",
"program": {
"command": "busted"
},
"cwd": "${workspaceFolder}/${relativeFileDirname}",
"args": ["${file}"],
"integratedTerminal": true
}
nota: La proprietà integratedTerminal mostrerà un avviso che dice Property integratedTerminal is not allowed, ma puoi tranquillamente ignorarlo.
La proprietà
cwdspecifica la directory di lavoro corrente, un dettaglio importante per risolvere i percorsi. Per impostazione predefinita Exercism installa ogni esercizio in una cartella propria, dentro la cartella con il nome della track. Quindi nel caso di Lua appare così:└── Exercism/ ├── lua/ │ ├── armstrong-numbers │ ├── bank-account │ ├── binarysearch │ └── etc... └── python/ └── etc...Quindi quando apriamo VSCode dalla cartella
/luain questo modo:
C:\users\<username>\Exercism\lua> code .oppure
/home/<username>/exercism/lua> code .VSCode mostrerà ogni esercizio nella propria cartella all'interno del workspace. Questo significa che la launch config deve cambiare la directory di lavoro corrente,
cwd, per ogni singola cartella di esercizio. Lo facciamo combinando le variabili di VSCode${workspaceFolder}e${relativeFileDirname}.La proprietà
argsè l'argomento che va passato a Busted. In questo caso usiamo la variabile${file}per fare riferimento al file attualmente aperto.
Poi aggiungi queste tre righe in cima al file di test dell'esercizio che stai affrontando, chiamato <exercise_name>_spec.lua:
if os.getenv("LOCAL_LUA_DEBUGGER_VSCODE") == "1" then
require("lldebugger").start()
end
Ora, quando vuoi eseguire i test con il debugger, apri il file di test e avvia la launch configuration che hai appena creato dalla barra laterale Run and Debug (Ctrl+Shift+D) a sinistra. Se il file di test è attivo, la launch configuration eseguirà quei test, fermandosi sui punti di interruzione, e stamperà l'output nella scheda DEBUG CONSOLE del terminale integrato in basso.
Buona programmazione!