Module: check_mk
Branch: master
Commit: 6977ead4ffcebaddf9a9d202f76538a5ab155cc3
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=6977ead4ffceba…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Thu Mar 29 10:06:49 2018 +0200
Improved pipenv integration
* The virtual environments are now stored in .venv in the project
directory.
* The test-* targets in tests/Makefile now have a make dependency
to the .venv directory
* The test-* targets now automatically enable the virtual environment
context in case it is not already active
* The .venv directory will automatically be created in case it is
missing and automatically be updated in case Pipfile or Pipfile.lock
change.
Change-Id: Ifdac444d3fc50dbabc39d71a9ec587b9447a559a
---
.envrc | 9 ++++++++-
.gitignore | 1 +
Makefile | 11 +++++------
Pipfile.lock | 60 ++++++++++++++++++++++++++++++++++------------------------
tests/Makefile | 22 ++++++++++++++-------
5 files changed, 64 insertions(+), 39 deletions(-)
diff --git a/.envrc b/.envrc
index 347fd97..4030cf6 100644
--- a/.envrc
+++ b/.envrc
@@ -1,2 +1,9 @@
# Check_MK config for direnv (Environment switcher for the shell)
-source $(pipenv --venv)/bin/activate
+export PIPENV_VENV_IN_PROJECT=true
+
+VENV_DIR=$(pipenv --venv)
+if [ -n "$VENV_DIR" ]; then
+ source $VENV_DIR/bin/activate
+else
+ echo "Execute \"make setup\" to create the virtual environment"
+fi
diff --git a/.gitignore b/.gitignore
index 9214b4e..cff1690 100644
--- a/.gitignore
+++ b/.gitignore
@@ -45,3 +45,4 @@ stamp-h1
tags
tests/web/data/*
.idea/
+.venv
diff --git a/Makefile b/Makefile
index 36d9547..ec40ba4 100644
--- a/Makefile
+++ b/Makefile
@@ -414,17 +414,12 @@ setup:
python-pip \
chrpath \
enchant
- $(MAKE) setup-virtualenv
+ sudo pip install pipenv
$(MAKE) -C omd setup
ifeq ($(ENTERPRISE),yes)
$(MAKE) -C enterprise/locale setup
endif
-setup-virtualenv:
- sudo pip install pipenv
- pipenv install --dev
- direnv allow
-
linesofcode:
@wc -l $$(find -type f -name "*.py" -o -name "*.js" -o -name
"*.cc" -o -name "*.h" -o -name "*.css" | grep -v
openhardwaremonitor | grep -v jquery | grep -v livestatus/src ) | sort -n
@@ -539,6 +534,10 @@ ifeq ($(ENTERPRISE),yes)
$(MAKE) -C enterprise/core/src documentation
endif
+.venv: Pipfile Pipfile.lock
+ source .envrc ; pipenv install --dev
+ direnv allow
+
# This dummy rule is called from subdirectories whenever one of the
# top-level Makefile's dependencies must be updated. It does not
# need to depend on %MAKEFILE% because GNU make will always make sure
diff --git a/Pipfile.lock b/Pipfile.lock
index 88b7da8..610624e 100644
--- a/Pipfile.lock
+++ b/Pipfile.lock
@@ -1,7 +1,7 @@
{
"_meta": {
"hash": {
- "sha256":
"ff770046312e2fc4f477d59f7c5c73e38e23ce5c491f76b25ecee85e5aab0dc9"
+ "sha256":
"f14253af35778fb415b16fc06b99cc42ec00644b16d0cb877bfe8770f0d8abd3"
},
"pipfile-spec": 6,
"requires": {
@@ -106,26 +106,27 @@
},
"cryptography": {
"hashes": [
-
"sha256:0f61273eccc681dc5a77dcd517cc2cb74078d1b00adb2b273d0a010153ae43c7",
-
"sha256:27dd18e180608c512433c843ad2d62396399608a0f3603c4d805500caeeec3d6",
-
"sha256:2893ee1d67dace6178732c9ea8c176fedf5b6a6463f72f1378b779cdba8a0ea5",
-
"sha256:2c5265c622e02af289bdc5e96c0a572bffa2fc2ac3f86fac3bace632ab25888c",
-
"sha256:34a433c3783946106236c25a89e0c271a3bb1a8e8cd8f12782e8bf8bec4e351e",
-
"sha256:39532ae44154ce88eec25d2a361e9c285b2477e0a4b4fc61fb9d4bcb3804dec6",
-
"sha256:469a72fda257b2179bb43e431b822d8087da53b40e68813bcfa54a16c3ebcdfe",
-
"sha256:54029ce210d3013dccced6478f4dfb25e7a409e13086f714be9c14489c64e2c7",
-
"sha256:54776f1e2ffd957571b79738fb41d8df69a93edb6d148ca149494d73975e8cab",
-
"sha256:84642ad31dccf9969b2613fa532ff5e871e9ee592ab0244dc9f6724e56591b8b",
-
"sha256:8ce363eed7ccc70f53be6ea4200aa20bbff99c8cbfce21a904f98e76c2bf5887",
-
"sha256:95b7822c8bf203bafb95527eaf8995d9dd4eef1b6899631f9293aa6926dab1d9",
-
"sha256:9f2d66952fc55f13f9c62ea6ae6ff88c2f9c2c21533065e1f7bddf0cf33c4cb9",
-
"sha256:c27ed8b01d5feeff8479384ed782bad1e5071563f47194703f0dc20c1b558503",
-
"sha256:cf1069fda0c8e1d2bbef2cf0de0be797860c8a34d1df3a24f1180045fc06974f",
-
"sha256:dddad9d322a3f0867009ff9f25477b8f7c0bdbedf143704b384c9472f11cb2d3",
-
"sha256:e42b290eb7804d82c6d614b55e3b726dee464099a0e6240175f8d7b682b9295d"
+
"sha256:3f3b65d5a16e6b52fba63dc860b62ca9832f51f1a2ae5083c78b6840275f12dd",
+
"sha256:551a3abfe0c8c6833df4192a63371aa2ff43afd8f570ed345d31f251d78e7e04",
+
"sha256:5cb990056b7cadcca26813311187ad751ea644712022a3976443691168781b6f",
+
"sha256:60bda7f12ecb828358be53095fc9c6edda7de8f1ef571f96c00b2363643fa3cd",
+
"sha256:6fef51ec447fe9f8351894024e94736862900d3a9aa2961528e602eb65c92bdb",
+
"sha256:77d0ad229d47a6e0272d00f6bf8ac06ce14715a9fd02c9a97f5a2869aab3ccb2",
+
"sha256:808fe471b1a6b777f026f7dc7bd9a4959da4bfab64972f2bbe91e22527c1c037",
+
"sha256:9b62fb4d18529c84b961efd9187fecbb48e89aa1a0f9f4161c61b7fc42a101bd",
+
"sha256:9e5bed45ec6b4f828866ac6a6bedf08388ffcfa68abe9e94b34bb40977aba531",
+
"sha256:9fc295bf69130a342e7a19a39d7bbeb15c0bcaabc7382ec33ef3b2b7d18d2f63",
+
"sha256:abd070b5849ed64e6d349199bef955ee0ad99aefbad792f0c587f8effa681a5e",
+
"sha256:ba6a774749b6e510cffc2fb98535f717e0e5fd91c7c99a61d223293df79ab351",
+
"sha256:c332118647f084c983c6a3e1dba0f3bcb051f69d12baccac68db8d62d177eb8a",
+
"sha256:d6f46e862ee36df81e6342c2177ba84e70f722d9dc9c6c394f9f1f434c4a5563",
+
"sha256:db6013746f73bf8edd9c3d1d3f94db635b9422f503db3fc5ef105233d4c011ab",
+
"sha256:f57008eaff597c69cf692c3518f6d4800f0309253bb138b526a37fe9ef0c7471",
+
"sha256:f6c821ac253c19f2ad4c8691633ae1d1a17f120d5b01ea1d256d7b602bc59887"
],
"index": "pypi",
- "version": "==2.2.1"
+ "markers": "python_version != '3.3'",
+ "version": "==2.2.2"
},
"dicttoxml": {
"hashes": [
@@ -232,6 +233,14 @@
"index": "pypi",
"version": "==2.3.0"
},
+ "pbr": {
+ "hashes": [
+
"sha256:8b9a7c3704657cb0831b3ded0a6b61377947c8235b76649bb7de4bfe2e6cfa56",
+
"sha256:cf66675e22ae91a4f20e4b8354f117d3e3d1de651513051d109cc39645fb3672"
+ ],
+ "index": "pypi",
+ "version": "==4.0.0"
+ },
"pillow": {
"hashes": [
"sha256:0013f590a8f260df60bcfd65db19d18efc04e7f046c3c82a40e2e2b3292a937c",
@@ -539,11 +548,11 @@
},
"python-dateutil": {
"hashes": [
-
"sha256:14eb44faa298942c6385636bfd76bd5c21361632cf8ebc9c20d63fd00f6a069f",
-
"sha256:6c0e72580272b561d8594362ab0e6b5b2191c703982150fc06ed45f7fae725be"
+
"sha256:3220490fb9741e2342e1cf29a503394fdac874bc39568288717ee67047ff29df",
+
"sha256:9d8074be4c993fbe4947878ce593052f71dac82932a677d49194d8ce9778002e"
],
"index": "pypi",
- "version": "==2.7.1"
+ "version": "==2.7.2"
},
"python-ldap": {
"hashes": [
@@ -907,10 +916,11 @@
},
"pbr": {
"hashes": [
-
"sha256:05f61c71aaefc02d8e37c0a3eeb9815ff526ea28b3b76324769e6158d7f95be1",
-
"sha256:60c25b7dfd054ef9bb0ae327af949dd4676aa09ac3a9471cdc871d8a9213f9ac"
+
"sha256:8b9a7c3704657cb0831b3ded0a6b61377947c8235b76649bb7de4bfe2e6cfa56",
+
"sha256:cf66675e22ae91a4f20e4b8354f117d3e3d1de651513051d109cc39645fb3672"
],
- "version": "==3.1.1"
+ "index": "pypi",
+ "version": "==4.0.0"
},
"pluggy": {
"hashes": [
diff --git a/tests/Makefile b/tests/Makefile
index 0f8ab66..ceff31e 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -1,5 +1,5 @@
SHELL=/bin/bash -e
-PYTEST=py.test -s -vv
+PYTEST=source $$(pipenv --venv)/bin/activate ; py.test -s -vv
.PHONY: help test-pylint test-integration test-gui-crawl \
test-bandit test-shellcheck setup format test-mypy \
@@ -14,27 +14,35 @@ help:
@echo "test-bandit - Run bandit (security) tests"
@echo "test-shellcheck - Run shellcheck tests"
-test-unit:
+# This target needs to be phony so it is run every time because only the other
+# makefile can determine that there's nothing to be done.
+# TODO: Move everything to top level makefile?
+.PHONY: ../.venv
+
+../.venv:
+ $(MAKE) -C .. .venv
+
+test-unit: ../.venv
$(PYTEST) -T unit
-test-integration:
+test-integration: ../.venv
$(PYTEST) -T integration
-test-gui-crawl:
+test-gui-crawl: ../.venv
$(PYTEST) -T gui_crawl
-test-pylint:
+test-pylint: ../.venv
$(PYTEST) -T pylint
-test-packageing:
+test-packaging: ../.venv
$(PYTEST) -T packaging
-test-bandit:
+test-bandit: ../.venv
# Currently only care about high severity reported issues. Once this is reached,
# go and enable the medium/low checks.
CMK_DIR="$(realpath ..)" ; \