Testar no percurso de MoonScript

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


Testar na track do MoonScript é exatamente igual a testar na track do Lua. A partir do diretório de um exercício, escreve:

$ busted

Testes pendentes

Esta track segue a metodologia de Desenvolvimento Orientado por Testes do Exercism. Recebes um conjunto de testes completo, mas só o primeiro teste está "ativo".

Para ativares os testes, muda o comando de um teste de pending para it.

Se gostas de correr todos os testes o tempo todo, podes usar uma ferramenta de linha de comandos para os mudar todos de uma vez. Aqui está um exemplo com o perl (que está instalado em praticamente todo o lado):

$ perl -i -pe 's/^\s+\Kpending\b/it/' two_fer_spec.moon

Quando estás a trabalhar no editor online, o test runner corre todos os testes automaticamente.

Usar o LuaRocks

O Lua, por si só, é uma linguagem muito pequena. O LuaRocks é o gestor de pacotes de módulos Lua.

Podes usar qualquer módulo nas tuas soluções, mas nem todos estarão disponíveis no test runner online. O test runner disponibiliza estes:

Já disponíveis como dependências do busted

  • penlight (home)

    O Penlight é um conjunto de bibliotecas Lua puras que facilitam tarefas comuns, como iterar sobre diretórios, ler ficheiros de configuração e afins. Fornece operações funcionais sobre tabelas e sequências.

  • dkjson (home)

    O dkjson é um módulo para codificar e descodificar dados JSON.

Já disponíveis como dependências do MoonScript

  • LPeg (home)

    O LPeg é uma nova biblioteca de correspondência de padrões para Lua, baseada em Gramáticas de Expressão de Análise (PEGs).

  • LuaFileSystem (home)

    O LuaFileSystem oferece uma forma portável de aceder à estrutura de diretórios subjacente e aos atributos dos ficheiros.

Data e hora

  • date (github)

    Análise de strings de data e hora; adição e subtração de tempo; cálculo de intervalos de tempo; suporta datas ISO 8601.

  • lua-tz (github)

    O Lua TZ fornece funções de data e hora com suporte para fusos horários. As funções principais têm uma interface semelhante às funções padrão os.date e os.time, mas aceitam ainda um argumento de fuso horário.

  • luatz (github)

    Uma biblioteca Lua para manipulação de tempo e data.