Add tox.ini for using tox for testing
Refactor parts of the makefile and testing to support the currently standard tox command to test various environments. This also moves most of the zookeeper setup and teardown logic out of the makefile and into a specific script file that just does this setup/teardown.
This commit is contained in:
30
.travis.yml
30
.travis.yml
@@ -6,35 +6,35 @@ matrix:
|
||||
- python: "2.7"
|
||||
include:
|
||||
- python: "2.6"
|
||||
env: GEVENT_VERSION=0.13.8 ZOOKEEPER_VERSION=3.3.6
|
||||
env: GEVENT_VERSION=0.13.8 ZOOKEEPER_VERSION=3.3.6 TOX_VENV=py26
|
||||
- python: "2.6"
|
||||
env: GEVENT_VERSION=0.13.8 ZOOKEEPER_VERSION=3.4.6
|
||||
env: GEVENT_VERSION=0.13.8 ZOOKEEPER_VERSION=3.4.6 TOX_VENV=py26
|
||||
- python: "2.6"
|
||||
env: GEVENT_VERSION=1.0.1 ZOOKEEPER_VERSION=3.3.6
|
||||
env: GEVENT_VERSION=1.0.1 ZOOKEEPER_VERSION=3.3.6 TOX_VENV=py26
|
||||
- python: "2.6"
|
||||
env: GEVENT_VERSION=1.0.1 ZOOKEEPER_VERSION=3.4.6
|
||||
env: GEVENT_VERSION=1.0.1 ZOOKEEPER_VERSION=3.4.6 TOX_VENV=py26
|
||||
- python: "2.7"
|
||||
env: GEVENT_VERSION=0.13.8 ZOOKEEPER_VERSION=3.3.6
|
||||
env: GEVENT_VERSION=0.13.8 ZOOKEEPER_VERSION=3.3.6 TOX_VENV=py27
|
||||
- python: "2.7"
|
||||
env: GEVENT_VERSION=0.13.8 ZOOKEEPER_VERSION=3.4.6
|
||||
env: GEVENT_VERSION=0.13.8 ZOOKEEPER_VERSION=3.4.6 TOX_VENV=py27
|
||||
- python: "2.7"
|
||||
env: GEVENT_VERSION=1.0.1 ZOOKEEPER_VERSION=3.3.6
|
||||
env: GEVENT_VERSION=1.0.1 ZOOKEEPER_VERSION=3.3.6 TOX_VENV=py27
|
||||
- python: "2.7"
|
||||
env: GEVENT_VERSION=1.0.1 ZOOKEEPER_VERSION=3.4.6
|
||||
env: GEVENT_VERSION=1.0.1 ZOOKEEPER_VERSION=3.4.6 TOX_VENV=py27
|
||||
- python: "2.7"
|
||||
env: GEVENT_VERSION=1.0.1 ZOOKEEPER_VERSION=3.5.0-alpha
|
||||
env: GEVENT_VERSION=1.0.1 ZOOKEEPER_VERSION=3.5.0-alpha TOX_VENV=py27
|
||||
- python: "3.3"
|
||||
env: ZOOKEEPER_VERSION=3.3.6
|
||||
env: ZOOKEEPER_VERSION=3.3.6 TOX_VENV=py33
|
||||
- python: "3.3"
|
||||
env: ZOOKEEPER_VERSION=3.4.6
|
||||
env: ZOOKEEPER_VERSION=3.4.6 TOX_VENV=py33
|
||||
- python: "3.4"
|
||||
env: ZOOKEEPER_VERSION=3.3.6
|
||||
env: ZOOKEEPER_VERSION=3.3.6 TOX_VENV=py34
|
||||
- python: "3.4"
|
||||
env: ZOOKEEPER_VERSION=3.4.6
|
||||
env: ZOOKEEPER_VERSION=3.4.6 TOX_VENV=py34
|
||||
- python: "pypy"
|
||||
env: ZOOKEEPER_VERSION=3.3.6
|
||||
env: ZOOKEEPER_VERSION=3.3.6 TOX_VENV=pypy
|
||||
- python: "pypy"
|
||||
env: ZOOKEEPER_VERSION=3.4.6
|
||||
env: ZOOKEEPER_VERSION=3.4.6 TOX_VENV=pypy
|
||||
|
||||
notifications:
|
||||
email: false
|
||||
|
37
Makefile
37
Makefile
@@ -1,11 +1,10 @@
|
||||
HERE = $(shell pwd)
|
||||
BIN = $(HERE)/bin
|
||||
PYTHON = $(BIN)/python
|
||||
|
||||
PIP_DOWNLOAD_CACHE ?= $(HERE)/.pip_cache
|
||||
INSTALL = $(BIN)/pip install
|
||||
INSTALL += --download-cache $(PIP_DOWNLOAD_CACHE)
|
||||
|
||||
TOX_VENV ?= py27
|
||||
BUILD_DIRS = bin build include lib lib64 man share
|
||||
|
||||
GEVENT_VERSION ?= 1.0.1
|
||||
@@ -14,19 +13,15 @@ PYPY = $(shell $(PYTHON_EXE) -c "import sys; print(getattr(sys, 'pypy_version_in
|
||||
TRAVIS ?= false
|
||||
TRAVIS_PYTHON_VERSION ?= $(shell $(PYTHON_EXE) -c "import sys; print('.'.join([str(s) for s in sys.version_info][:2]))")
|
||||
|
||||
ZOOKEEPER = $(BIN)/zookeeper
|
||||
ZOOKEEPER_VERSION ?= 3.4.6
|
||||
ZOOKEEPER_PATH ?= $(ZOOKEEPER)
|
||||
|
||||
GEVENT_SUPPORTED = yes
|
||||
GREENLET_SUPPORTED = yes
|
||||
ifeq ($(findstring 3.,$(TRAVIS_PYTHON_VERSION)), 3.)
|
||||
GEVENT_SUPPORTED = no
|
||||
GREENLET_SUPPORTED = no
|
||||
endif
|
||||
ifeq ($(PYPY),yes)
|
||||
GEVENT_SUPPORTED = no
|
||||
GREENLET_SUPPORTED = no
|
||||
endif
|
||||
|
||||
.PHONY: all build clean test zookeeper clean-zookeeper
|
||||
.PHONY: all build clean test
|
||||
|
||||
all: build
|
||||
|
||||
@@ -34,7 +29,8 @@ $(PYTHON):
|
||||
python sw/virtualenv.py .
|
||||
|
||||
build: $(PYTHON)
|
||||
ifeq ($(GEVENT_SUPPORTED),yes)
|
||||
ifeq ($(GREENLET_SUPPORTED),yes)
|
||||
$(INSTALL) -U -r requirements_eventlet.txt
|
||||
$(INSTALL) -U -r requirements_gevent.txt
|
||||
$(INSTALL) -f https://github.com/surfly/gevent/releases gevent==$(GEVENT_VERSION)
|
||||
endif
|
||||
@@ -48,24 +44,9 @@ endif
|
||||
clean:
|
||||
rm -rf $(BUILD_DIRS)
|
||||
|
||||
test:
|
||||
ZOOKEEPER_PATH=$(ZOOKEEPER_PATH) NOSE_LOGFORMAT='%(thread)d:%(filename)s: %(levelname)s: %(message)s' \
|
||||
$(BIN)/nosetests -d -v --with-coverage kazoo.tests
|
||||
test: $(PYTHON)
|
||||
tox -e$(TOX_VENV)
|
||||
|
||||
html:
|
||||
cd docs && \
|
||||
make html
|
||||
|
||||
$(ZOOKEEPER):
|
||||
@echo "Installing Zookeeper"
|
||||
mkdir -p $(BIN)
|
||||
cd $(BIN) && \
|
||||
curl -C - http://apache.osuosl.org/zookeeper/zookeeper-$(ZOOKEEPER_VERSION)/zookeeper-$(ZOOKEEPER_VERSION).tar.gz | tar -zx
|
||||
mv $(BIN)/zookeeper-$(ZOOKEEPER_VERSION) $(ZOOKEEPER_PATH)
|
||||
chmod a+x $(ZOOKEEPER_PATH)/bin/zkServer.sh
|
||||
@echo "Finished installing Zookeeper"
|
||||
|
||||
zookeeper: $(ZOOKEEPER)
|
||||
|
||||
clean-zookeeper:
|
||||
rm -rf zookeeper $(ZOOKEEPER_PATH)
|
||||
|
@@ -1,3 +1,4 @@
|
||||
coverage==3.7.1
|
||||
mock==1.0.1
|
||||
nose==1.3.3
|
||||
flake8==2.3.0
|
||||
|
74
setup-zookeeper-env.sh
Executable file
74
setup-zookeeper-env.sh
Executable file
@@ -0,0 +1,74 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -x -e
|
||||
|
||||
HERE=`pwd`
|
||||
ZOO_TMP_DIR=$(mktemp -d /tmp/ZOO-TMP-XXXXX)
|
||||
mkdir -p $ZOO_TMP_DIR/bin
|
||||
mkdir -p $ZOO_TMP_DIR/log
|
||||
|
||||
ZOOKEEPER_STARTED=0
|
||||
ZOOKEEPER_VERSION=${ZOOKEEPER_VERSION:-3.4.6}
|
||||
ZOO_BASE_DIR="$PWD/bin/"
|
||||
ZOOKEEPER_PATH="$ZOO_BASE_DIR/zookeeper-$ZOOKEEPER_VERSION"
|
||||
|
||||
|
||||
function download_zookeeper(){
|
||||
mkdir -p $ZOO_BASE_DIR
|
||||
cd $ZOO_BASE_DIR && \
|
||||
curl -C - http://apache.osuosl.org/zookeeper/zookeeper-$ZOOKEEPER_VERSION/zookeeper-$ZOOKEEPER_VERSION.tar.gz | tar -zx
|
||||
chmod a+x $ZOOKEEPER_PATH/bin/zkServer.sh
|
||||
}
|
||||
|
||||
|
||||
function stop_zookeeper_server(){
|
||||
$ZOO_TMP_DIR/bin/zkServer.sh stop
|
||||
}
|
||||
|
||||
|
||||
function clean_exit(){
|
||||
local error_code="$?"
|
||||
if [ $ZOOKEEPER_STARTED -eq 1 ]; then
|
||||
stop_zookeeper_server
|
||||
fi
|
||||
rm -rf ${ZOO_TMP_DIR}
|
||||
return $error_code
|
||||
}
|
||||
|
||||
|
||||
function start_zookeeper_server(){
|
||||
# Copy zookeeper scripts in temporary directory
|
||||
cp $ZOOKEEPER_PATH/bin/* $ZOO_TMP_DIR/bin
|
||||
|
||||
# Copy zookeeper conf and set dataDir variable to the zookeeper temporary
|
||||
# directory
|
||||
cp "$ZOOKEEPER_PATH/conf/zoo_sample.cfg" "$ZOO_TMP_DIR/zoo.cfg"
|
||||
|
||||
sed -i -r "s@(dataDir *= *).*@\1$ZOO_TMP_DIR@" $ZOO_TMP_DIR/zoo.cfg
|
||||
|
||||
# Replace some variables by the zookeeper temporary directory
|
||||
sed -i -r "s@(ZOOCFGDIR *= *).*@\1$ZOO_TMP_DIR@" $ZOO_TMP_DIR/bin/zkEnv.sh
|
||||
|
||||
sed -i -r "s@(ZOO_LOG_DIR *= *).*@\1$ZOO_TMP_DIR/log@" $ZOO_TMP_DIR/bin/zkEnv.sh
|
||||
|
||||
$ZOO_TMP_DIR/bin/zkServer.sh start
|
||||
}
|
||||
|
||||
|
||||
if [ ! -d "$ZOOKEEPER_PATH" ]; then
|
||||
download_zookeeper
|
||||
fi
|
||||
|
||||
trap "clean_exit" EXIT
|
||||
|
||||
start_zookeeper_server
|
||||
if [ $? -eq 0 ]; then
|
||||
ZOOKEEPER_STARTED=1
|
||||
fi
|
||||
|
||||
export ZOOKEEPER_PATH
|
||||
cd $HERE
|
||||
|
||||
# Yield execution to venv command
|
||||
$*
|
||||
|
1
setup.py
1
setup.py
@@ -20,6 +20,7 @@ tests_require = install_requires + [
|
||||
'coverage',
|
||||
'mock',
|
||||
'nose',
|
||||
'flake8',
|
||||
]
|
||||
|
||||
if not (PYTHON3 or PYPY):
|
||||
|
34
tox.ini
Normal file
34
tox.ini
Normal file
@@ -0,0 +1,34 @@
|
||||
[tox]
|
||||
minversion = 1.6
|
||||
skipsdist = True
|
||||
envlist = pep8,
|
||||
py26,
|
||||
py27,
|
||||
py33,
|
||||
py34,
|
||||
pypy
|
||||
|
||||
[testenv:pep8]
|
||||
commands = flake8 {posargs}
|
||||
|
||||
[testenv]
|
||||
usedevelop = True
|
||||
install_command = pip install {opts} {packages}
|
||||
setenv = VIRTUAL_ENV={envdir}
|
||||
deps = -r{toxinidir}/requirements.txt
|
||||
-r{toxinidir}/requirements_sphinx.txt
|
||||
commands = {toxinidir}/setup-zookeeper-env.sh nosetests {posargs} -d -v --with-coverage kazoo.tests
|
||||
|
||||
[testenv:py27]
|
||||
deps = {[testenv]deps}
|
||||
-r{toxinidir}/requirements_gevent.txt
|
||||
-r{toxinidir}/requirements_eventlet.txt
|
||||
|
||||
[testenv:py26]
|
||||
deps = {[testenv]deps}
|
||||
-r{toxinidir}/requirements_gevent.txt
|
||||
-r{toxinidir}/requirements_eventlet.txt
|
||||
|
||||
[flake8]
|
||||
builtins = _
|
||||
exclude = .venv,.tox,dist,doc,*egg,.git,build,tools
|
Reference in New Issue
Block a user