2014-12-02 3 views
2

Моего Makefile:Execute сделать предварительное условие каждый раз

.PHONY: test-unit test-functional mocha 

test: test-unit test-functional 

test-unit: SUITE = "unit" 
test-unit: mocha 
    @echo "unit" 

test-functional: SUITE = "functional" 
test-functional: mocha 
    @echo "functional" 

mocha: 
    @echo ===== RUNNING TESTS: $(SUITE) ===== 

Я хотел бы использовать эту Makefile, чтобы запустить оба моих тестовые наборы без дублирования кода, для чего требуется, чтобы запустить набор (абстрагируется в mocha задача). Однако Make делает умным и понимает, что mocha уже запущен, когда дело доходит до test-functional и не запускает его снова.

make test:

===== RUNNING TESTS: unit ===== 
unit 
functional 

Есть ли лучший способ приблизиться к этому, возможно, добиться подобного абстракции, или, возможно, флаг mocha в необходимости запускать каждый раз?

ответ

2

Используйте Canned Recipe для тела задачи mocha и вставьте его в оба тестовых задания.

Вместо

mocha: 
    @echo ===== RUNNING TESTS: $(SUITE) ===== 

test: mocha 

использования

define mocha 
@echo ===== RUNNING TESTS: $(SUITE) ===== 
endef 

test: 
    $(mocha) 
    .... 

define mocha = (или := и т.д.) для макияжа 4.0+ я считаю.

+0

Perfect. Благодаря! –

Смежные вопросы