요즘 아톰(Atom) 에디터에 푹 빠져 모든 언어(및 마크다운, 아스키독 등 문서)를 이 에디터에서 돌려보고 있다. 자세한 건 나중에 다시 쓰고...
클로저 파일을 프로젝트 만들지 않고 파일 단위로 아톰에서 실행하기 위해 라이닝겐 배치 파일을 수정한 건 이미 깃허브에 올렸고, 오늘은 스칼라 파일이 여러 개 있을 때 실행하는 방법이다. 덧붙여 스칼라테스트(ScalaTest)도 지원하게 했다. 이건 딱히 깃허브에 올릴 수가 없어(전에 올린 것도 사실 PR 보내기도 좀 거시기한 수정이었다만) 일단 여기에 올린다.
수정 방법. scala.bat를 보면 .scala 파일을 실행하는 부분은 다음과 같다.
"%_JAVACMD%" %_JAVA_OPTS% %_PROPS% -cp "%_TOOL_CLASSPATH%" scala.tools.nsc.MainGenericRunner %*
여길 이렇게 고친다.
set _SCALA_FILE=%~n1
set _SCALA_FILE_PATH=%~dp1
"%_JAVACMD%" %_JAVA_OPTS% %_PROPS% -cp "%_TOOL_CLASSPATH%" scala.tools.nsc.Main %*
cd %_SCALA_FILE_PATH%
"%_JAVACMD%" %_JAVA_OPTS% %_PROPS% -cp "%_TOOL_CLASSPATH%" scala.tools.nsc.MainGenericRunner %_SCALA_FILE%
if %ERRORLEVEL%==0 goto end
"%_JAVACMD%" %_JAVA_OPTS% %_PROPS% -cp "%_TOOL_CLASSPATH%" org.scalatest.run %~n1
goto end
설명-_-하자면... .scala 파일을 단순히 실행하는 게 아니라, .class 파일로 컴파일한 다음에 실행한다. 실행 결과 오류가 나지 않았다면 종료하고, 오류가 났다면 해당 클래스를 스칼라테스트로 다시 실행한다.
findstr /c:"import org.scalatest." "%1" > nul
if %ERRORLEVEL% == 0 goto RUN_TEST
"%_JAVACMD%" %_JAVA_OPTS% %_PROPS% -cp "%_TOOL_CLASSPATH%" scala.tools.nsc.MainGenericRunner %*
goto end
:RUN_TEST
"%_JAVACMD%" %_JAVA_OPTS% %_PROPS% -cp "%_TOOL_CLASSPATH%" org.scalatest.run %~n1
goto end
테스트가 들어 있는 파일도 그냥 오류가 나지 않을 수 있어, 그냥 대상 파일 안에 org.scalatest를 임포트하는 텍스트가 있으면 테스트로, 아니면 그냥 실행하도록 바꿨다.
스칼라테스트(scalatest ... .jar) 파일은 스칼라의 라이브러리 폴더에 이미 있다고 가정하고 따로 클래스패스를 지정하지는 않았다.
그냥 무식한 방법. 컴파일 시 생성된 .class 파일은 지우지 않고 뒀다. 클로저와는 달리, 여러 파일 실행 시 클래스 파일이 있어야 한다.
물론 스칼라 IDE에서 스칼라테스트 플러그인을 받아서 함께 사용하는 게 더 깔끔하다. 근데 그러려면 프로젝트를 만들고 어쩌고 해야 하니까 그게 귀찮을 뿐.
'프로그래밍' 카테고리의 다른 글
윈도우에서 텐서플로 설정하기(도커 이용) (0) | 2016.07.06 |
---|---|
Atom에서 Groovy 파일 테스트하기(JUnit) (0) | 2016.04.08 |
함수형 반응형 프로그래밍(FRP)이란? (0) | 2015.04.08 |