MoonScript 트랙에서 테스트하기

Exercism에서 MoonScript 연습 문제를 테스트하는 방법을 알아봐요.


MoonScript 트랙에서의 테스트는 Lua 트랙에서의 테스트와 똑같아요. 연습 문제 디렉터리에서 다음을 입력해요:

$ busted

보류 중인 테스트

이 트랙은 Exercism의 테스트 주도 개발 방법론을 따라요. 완전한 테스트 모음이 주어지지만, 첫 번째 테스트만 "활성화"되어 있어요.

테스트를 활성화하려면 테스트의 명령을 pending에서 it로 바꿔요.

항상 모든 테스트를 실행하는 걸 좋아하는 분이라면, 명령줄 도구를 사용해 한 번에 모두 바꿀 수 있어요. 다음은 perl을 사용한 예시예요(perl은 거의 모든 곳에 설치되어 있어요):

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

온라인 에디터에서 작업할 때는 테스트 러너가 모든 테스트를 자동으로 실행해요.

LuaRocks 사용하기

Lua 자체는 아주 작은 언어예요. LuaRocks는 Lua 모듈을 위한 패키지 관리자예요.

풀이에서 어떤 모듈이든 자유롭게 사용할 수 있지만, 온라인 테스트 러너에서 모두 사용할 수 있는 것은 아니에요. 테스트 러너는 다음을 제공해요:

busted 의존성으로 이미 사용 가능

  • penlight (홈)

    Penlight은 디렉터리 순회, 설정 파일 읽기 같은 일반적인 작업을 더 쉽게 처리할 수 있도록 해 주는 순수 Lua 라이브러리 모음이에요. 테이블과 시퀀스에 대한 함수형 연산을 제공해요.

  • dkjson (홈)

    dkjson은 JSON 데이터를 인코딩하고 디코딩하는 모듈이에요.

MoonScript 의존성으로 이미 사용 가능

  • LPeg (홈)

    LPeg는 파싱 표현 문법(PEG)에 기반한 Lua용 새로운 패턴 매칭 라이브러리예요.

  • LuaFileSystem (홈)

    LuaFileSystem은 기본 디렉터리 구조와 파일 속성에 접근하는 이식성 있는 방법을 제공해요.

날짜와 시간

  • date (github)

    날짜와 시간 문자열 파싱, 시간 덧셈과 뺄셈, 시간 범위 계산, ISO 8601 날짜 지원.

  • lua-tz (github)

    Lua TZ는 시간대 지원을 포함한 날짜와 시간 함수를 제공해요. 핵심 함수들은 표준 함수인 os.date와 os.time과 비슷한 인터페이스를 가지지만, 추가로 시간대 인자를 받아요.

  • luatz (github)

    시간과 날짜를 다루기 위한 Lua 라이브러리예요.