# This works on debian...
-PYTHON_EXE=python3
-VIRTUALENV=${PYTHON_EXE} -m venv
+PYTHON_EXE := python3
+VIRTUALENV := $(PYTHON_EXE) -m venv
# (Optional) where pyenv is installed (git clone somepath)
# For running tox against multiple python versions
PYENV_INSTALLATION := $(HOME)/.pyenv
PYENV_BIN := $(PYENV_INSTALLATION)/bin
TARGETS =
-EXTRA_TARGETS = README.html
-SETUPTOOLS_STUFF = build dist src/${PGWUI_COMPONENT}.egg-info
-PYTEST_STUFF = .cache \
+EXTRA_TARGETS := README.html
+SETUPTOOLS_STUFF := build dist src/${PGWUI_COMPONENT}.egg-info
+PYTEST_STUFF := .cache \
src/${PGWUI_COMPONENT}/__pycache__ \
src/${PGWUI_COMPONENT}/views/__pycache__ \
tests/__pycache__ tests/views/__pycache__
-COVERAGE_STUFF = .coverage
-TOX_STUFF = .tox
+COVERAGE_STUFF := .coverage
+TOX_STUFF := .tox
include help.mk
## run_tests Run regression tests
.PHONY: run_tests
-run_tests: devel/testenv
+run_tests: devel/testenv dist
if [ -x $(PYENV_BIN)/pyenv ] ; then \
(set -e ; \
export PYENV_ROOT=$(PYENV_INSTALLATION) ; \
## check Quick run of all regression tests,
## only with the default python
.PHONY: check
-check: devel/pytest
- devel/pytest/bin/flake8 .
+check: devel/pytest run-linters
devel/pytest/bin/py.test --cov=${PGWUI_COMPONENT} tests
## check-unit Quick run of unit regression tests,
## only with the default python
.PHONY: check-unit
-check-unit: devel/pytest
- devel/pytest/bin/flake8 .
+check-unit: devel/pytest run-linters
devel/pytest/bin/py.test -m unittest --cov=${PGWUI_COMPONENT} tests
## check-integration Quick run of integration regression tests,
## only with the default python
.PHONY: check-integration
-check-integration: devel/pytest
- devel/pytest/bin/flake8 .
+check-integration: devel/pytest run-linters
devel/pytest/bin/py.test -m integrationtest \
--cov=${PGWUI_COMPONENT} tests
## FILE=test_mymodule.py TEST=test_somefunction \
## make check-debug
.PHONY: check-debug
-check-debug: devel/pytest
- devel/pytest/bin/flake8 .
+check-debug: devel/pytest run-linters
devel/pytest/bin/py.test --trace tests/${FILE}::${TEST}
## pudb Run the python pudb debugger
# Development related targets
+DEVEL_DEPS := setup.py pyproject.toml MANIFEST.in
+
+# Run linters
+.PHONY: run-linters
+run-linters: devel/pytest
+ devel/pytest/bin/flake8 .
+ if [ -e .yamllint.yaml ] ; then \
+ devel/pytest/bin/yamllint --strict . ; \
+ fi
# Re-create development environment when build environment changes
-devel: setup.py pyproject.toml MANIFEST.in
+devel: $(DEVEL_DEPS)
rm -rf devel ${TOX_STUFF}
- mkdir devel
+ mkdir -p devel
# virtualenv for package building
-devel/buildenv: devel
+devel/buildenv: $(DEVEL_DEPS)
+ mkdir -p devel
[ -d devel/buildenv ] \
|| ( ${VIRTUALENV} devel/buildenv ; \
devel/buildenv/bin/pip install --upgrade pip ; \
)
# virtualenv for development
-devel/testenv: devel
+devel/testenv: $(DEVEL_DEPS)
+ mkdir -p devel
[ -d devel/testenv ] \
|| ( ${VIRTUALENV} devel/testenv ; \
devel/testenv/bin/pip install --upgrade pip ; \
devel/testenv/bin/pip install -e '.[test]' ; \
)
-# virtualenv for pytest
-devel/pytest: devel dist
+# virtualenv for pytest and other code tests
+devel/pytest: $(DEVEL_DEPS)
+ mkdir -p devel
if [ ! -d devel/pytest ] ; then \
( ${VIRTUALENV} devel/pytest ; \
devel/pytest/bin/pip install --upgrade pip ; \
devel/pytest/bin/pip install --upgrade wheel ; \
devel/pytest/bin/pip install dist/${PGWUI_COMPONENT}-*.tar.gz ; \
devel/pytest/bin/pip install flake8 ; \
+ if [ -e .yamllint.yaml ] ; then \
+ devel/pytest/bin/pip install yamllint ; \
+ fi ; \
devel/pytest/bin/pip install pytest-cov ; \
devel/pytest/bin/pip install -e '.[test]' ; \
) \
fi
# virtualenv for pudb
-devel/pudb: devel dist
+devel/pudb: $(DEVEL_DEPS)
+ mkdir -p devel
if [ ! -d devel/pudb ] ; then \
( ${VIRTUALENV} devel/pudb ; \
devel/pudb/bin/pip install --upgrade pip ; \