2014-08-27 2 views
4

Erlang 프로젝트에 lager를 설치하기로 결정했습니다. 나는 erlang.mk를 사용하고 있으므로 추가 한 파일은공용 테스트 테스트 실행 중 Lager 호출이 실패했습니다

ERLC_OPTS = +'{parse_transform, lager_transform}' 

입니다. make all을 실행하고 오류없이 모듈을 컴파일 할 수 있습니다. erl 콘솔을 시작하고 lager를 사용하여 모듈이 포함 된 응용 프로그램을 실행할 수도 있습니다. 콘솔 세션 중 오류가 발생하지 않고 라거가 메시지를 기록합니다. 모든 것이 괜찮은 것 같습니다 (이것은 라거를 사용한 첫 번째 것입니다). 나는 일반적인 테스트를 실행할 때, 라거 호출이 실패 :

10:11:17.174 [error] CRASH REPORT Process <0.238.0> with 2 neighbours exited with reason: call to undefined function lager:info("Params: ~p", [[]]) in gen_server:init_it/6 line 328

내가 테스트입니다 모듈이되었을 경우 제대로 컴파일로 표시하기 때문에, 내가이 맥주 모듈이 존재하지에 문제가 있다고 가정합니다. 그러나 다음을 추가하면 : lager에 대한 모듈 정보를 인쇄하고 성공한 첫 번째 lager 호출보다 위에있는 내용을

erlang:display(lager:module_info()), 

위로 가져옵니다. 필자는 로깅 호출이 작동하기 위해 일부 구문 분석 변환 마법을 활용하고 있다고 가정하고 이것이 내 공통 테스트 실행 중에는 존재하지 않는다고 가정합니다.

모든 의견을 매우 높이 평가합니다.

+0

를 해결! 이것은 내 Makefile (erlang.mk 아님)의 오류 때문이었습니다. 잠시 나마 대답을 추가 할 것입니다. – Stratus3D

답변

3

밝혀졌습니다. Makefile에 잘못 입력되었지만 그 과정에서 erlang.mk에 대해 많이 배웠습니다. erlang.mk는 다른 이름을 가진 변수를 찾고있었습니다.

나는 원래이 내 메이크 :

ERLC_OPTS = +'{parse_transform, lager_transform}' 

그러나 erlang.mk을 테스트하기 전에 모듈을 컴파일 ERLC_OPTS를 사용하지 않습니다. Common Test Suite보다 항상 재 컴파일됩니다. 이하기 위해 모듈이 컴파일 나는이 작업을 수행하는 데 필요한 테스트를 위해 변환 구문 분석 :이 응용 프로그램의 소스 코드를 테스트하는 동안 동일한 설정으로 컴파일되어 있는지 확인합니다

# Compile flags 
ERLC_COMPILE_OPTS= +'{parse_transform, lager_transform}' 

# Use the same settings for compiling releases as well as for testing 
ERLC_OPTS= $(ERLC_COMPILE_OPTS) 
TEST_ERLC_OPTS= $(ERLC_COMPILE_OPTS) 

.

+1

Makefile에서 'include erlang.mk'줄 앞에 ERLC_OPTS를 설정하면 erlang.mk 자체의 ERLC_OPTS 설정이 섀도우하게됩니다. ERLC_OPTS? = ... – postfuturist

3

이 ERLC_OPTS 및 TEST_ERLC_OPTS에 대한 erlang.mk의 값을 그림자하지 않습니다 Stratus3D 대답에 약간의 개혁 만이 그들에게 추가된다

# this must be first 
include erlang.mk 

# Compile flags 
ERLC_COMPILE_OPTS= +'{parse_transform, lager_transform}' 

# Append these settings 
ERLC_OPTS += $(ERLC_COMPILE_OPTS) 
TEST_ERLC_OPTS += $(ERLC_COMPILE_OPTS) 
관련 문제