
TEST_TARGETS =
ITEST_TARGETS = -m integration
UTEST_TARGETS = -m "not(integration)"

DEBUG=

all: _tests

integration:
	$(eval TEST_TARGETS := $(ITEST_TARGETS))

unit:
	$(eval TEST_TARGETS := $(UTEST_TARGETS))

utests: test
utest: test
tests: test
test: unit _tests
itests: itest
itest: integration _tests

_tests: py_env
	bash -c 'source py_env/bin/activate && py.test tests $(TEST_TARGETS) $(DEBUG)'

ucoverage: unit coverage
icoverage: integration coverage

coverage: py_env
	bash -c 'source py_env/bin/activate && \
		coverage erase && \
		coverage run `which py.test` tests $(TEST_TARGETS) && \
		coverage report -m'

py_env: requirements.txt setup.py
	rm -rf py_env
	virtualenv py_env
	bash -c 'source py_env/bin/activate && pip install -r requirements.txt'

clean:
	rm -rf py_env
