Jeen - Yet anothere techlog

STFUAWSC

Download Package Dir/files From Directory Index

최근에 모 오픈소스의 패키지 리포지트리가 조만간 닫힐 것이라는 뉴스가 있어서… 만일을 위해 거기 있는 패키지 파일들을 일단 긁어오기로 했습니다. –_–;

그래서 크롤러를 하나 만들까 하다가… 이런 류의 작업은 뭔가 만들어 놓은 툴이 있을 것이라는 생각에 이리저리 뒤져보고 찾아봤지만 마땅한 키워드를 얻지 못했습니다.

결국 지인들에게 수소문해본 결과 아래와 같은 커맨드를 통해서 Directory Index 구조를 취하는 페이지에서 파일들을 몽땅 긁어올 수 있다는 걸을 알게되었습니다.

bash $ wget -e robots=off -k -r —no-parent —wait=5 http://download.virtualbox.org/virtualbox/debian/

index.html 등의 불필요한 파일들도 같이 다운로드 되기도 하지만… 일단 다 받고나서…

bash $ find . | grep index.html | xargs rm

으로 삭제…

그리하여 조만간 끊어질지도 모르는 사태에 대비코자 미리 이렇게 준비를 끝냈습니다.

.proverc for Less Typing

그러고보니 앞전에 쓴 글에서

bash $ prove -Ilib -Pretty -v -lr

요렇게 길게 쓰고 있었는데, 문서도 제대로 안보고 이래저래 옵션들을 갖다붙이다보니 돌이켜보면 참 부끄럽기 그지 없습니다.

위의 prove 문서를 참고로해서 제가 무엇을 잘못했는지 다시 한번 돌이켜봤습니다.

-Ilib 과 -l 은 같다.

그러니까 위에서는 -Ilib-lr 로 같이 쓰고 있었는데 –_–;;

-l, —lib Add ‘lib’ to the path for your tests (-Ilib).

-l 로 단순히 줄여서 표현할 수 있습니다. 해당 옵션이 무엇인지도 모르고 그냥 붙여쓰고 있었다니…

타이핑횟수를 줄인다.

그러니까 매번 테스트할 때마다

$ prove -Pretty -lvr

이렇게 쓰기 참 번거롭지요.

그러고보니 해당 프로젝트 루트아래에 .proverc 를 만들어서 사용하는 방법이 있었습니다.

-l -v -r -Pretty

이렇게 해두면 이제 앞으로는

$ prove

만으로 위의 옵션을 활성화한 채로 테스트를 동작시킬 수 있습니다.

결론

똑같은 일을 3번, 4번하다 보면 가끔 내가 뭐하는 짓인가 하는 생각이 들 때가 있는데… 좀 더 빨리 깨달았으면 좋았을 것을 이라는 생각을 그때마다 하게 됩니다.

Using Test::Pretty

사실 TAP 의 결과자체는 그렇게 이쁘장하지 않습니다. 이전에 NHN Deview 2012 에서 Mocha 로 돌렸을 때 나오는 이쁨직한 테스트 결과를 보고,

아, 저러면 왠지 테스트코드 쓰고, 돌릴 만하겠다

라는 뻘생각이 들었습니다. 하지만 전 테스트코드를 그렇게 용의주도하게 쓰지 않는 편이어서 그냥 다른 세상 이야기라고 넘겼습니다.

그러는 와중에 일본의 Perl IRC 채널에서 Test::*TAP 등에 대한 여러가지 회의론(?) 같은 이야기가 들려오다가 BDD 나 테스트 결과 자체가 하나의 Spec 으로 재이용되는 등의 이야기를 듣고는 많이 감화되었죠.

그러는 중에 @tokuhirom 씨가 최근에 내놓은 Test::PrettyTest::Ika 라는 모듈이 등장했습니다.

Test::Ika 의 경우는 Perl5 용 BDD Framework 의 자리를 노리는 그런 모듈입니다만.. 현재의 버젼(0.02)에서는 생각대로 결과가 나와주지 않기에 조금 아쉬웠습니다.

그게 describe, it 등의 BDD 에서 사용하는 구문을 사용하고 있지만, Test::Mojo 처럼 Test::More 를 래핑한 모듈에서 사용할 때라든가… 좀 많이 아쉬운 장면들이 아직 있습니다. 뭐 물론 만든 지 얼마 안되기도 하고 그런 의미에서는 전도유망하다고할까요 :–)

Test::Pretty 의 경우는 크게 이를 고려하지 않고도 흔히 사용하는 Test::More 로 테스트코드를 쓰고, prove Plugin 으로 동작합니다. 이름 그대로 결과를 이쁘게 보여준다는 것이죠.

다음처럼 말이죠.

일반적인 TAP 형식의 출력

일반적인 TAP 형식

Test::Pretty 를 이용한 출력

Test::Pretty 를 이용한 출력

어떻게 실행을?

Pretty 형식으로는 단일파일만 나오고, 전체 테스트코드를 한번에 돌렸을 때는 위처럼 나오지 않기에 왜 그럴까 고심해보다가 아래처럼 테스트코드를 실행하면 제대로 동작하는 것을 확인했습니다.

bash $ prove -Ilib -Pretty -v -lr

결론

JS 테스트 프레임워크인 Mocha 를 들여다 봤는데 여러모로 베껴왔으면 하는 그런 세련됨이 있네요. :–)