Merge pull request #180 from moreati/procedure-033-03
Switch to using unit2 test runner
This commit is contained in:
commit
772e229b7d
|
@ -1,7 +1,14 @@
|
||||||
|
.coverage
|
||||||
|
.tox
|
||||||
.venv
|
.venv
|
||||||
**/.DS_Store
|
**/.DS_Store
|
||||||
|
*.pyc
|
||||||
|
*.pyd
|
||||||
|
*.pyo
|
||||||
MANIFEST
|
MANIFEST
|
||||||
build/
|
build/
|
||||||
dist/
|
dist/
|
||||||
docs/_build
|
docs/_build
|
||||||
|
htmlcov/
|
||||||
*.egg-info
|
*.egg-info
|
||||||
|
__pycache__/
|
||||||
|
|
|
@ -4,6 +4,7 @@ notifications:
|
||||||
email: false
|
email: false
|
||||||
|
|
||||||
language: python
|
language: python
|
||||||
|
cache: pip
|
||||||
|
|
||||||
python:
|
python:
|
||||||
- "2.7"
|
- "2.7"
|
||||||
|
@ -12,7 +13,7 @@ install:
|
||||||
- pip install -r dev_requirements.txt
|
- pip install -r dev_requirements.txt
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- MITOGEN_LOG_LEVEL=debug PYTHONPATH=. ${TRAVIS_BUILD_DIR}/test.sh
|
- MITOGEN_LOG_LEVEL=debug PYTHONPATH=. ${TRAVIS_BUILD_DIR}/test
|
||||||
|
|
||||||
services:
|
services:
|
||||||
- docker
|
- docker
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
-r docs/docs-requirements.txt
|
-r docs/docs-requirements.txt
|
||||||
ansible==2.3.1.0
|
ansible==2.3.1.0
|
||||||
|
coverage==4.5.1
|
||||||
Django==1.6.11; python_version < '2.7'
|
Django==1.6.11; python_version < '2.7'
|
||||||
Django==1.11.5; python_version >= '2.7' # for module_finder_test
|
Django==1.11.5; python_version >= '2.7' # for module_finder_test
|
||||||
https://github.com/docker/docker-py/archive/1.10.6.tar.gz; python_version < '2.7'
|
https://github.com/docker/docker-py/archive/1.10.6.tar.gz; python_version < '2.7'
|
||||||
|
@ -9,6 +10,7 @@ pytest-catchlog==1.2.2
|
||||||
pytest==3.1.2
|
pytest==3.1.2
|
||||||
PyYAML==3.11; python_version < '2.7'
|
PyYAML==3.11; python_version < '2.7'
|
||||||
PyYAML==3.12; python_version >= '2.7'
|
PyYAML==3.12; python_version >= '2.7'
|
||||||
|
timeoutcontext==1.2.0
|
||||||
unittest2==1.1.0
|
unittest2==1.1.0
|
||||||
# Fix InsecurePlatformWarning while creating py26 tox environment
|
# Fix InsecurePlatformWarning while creating py26 tox environment
|
||||||
# https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
|
# https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
|
||||||
|
|
|
@ -1,3 +1,10 @@
|
||||||
|
[coverage:run]
|
||||||
|
branch = true
|
||||||
|
source =
|
||||||
|
mitogen
|
||||||
|
omit =
|
||||||
|
mitogen/compat/*
|
||||||
|
|
||||||
[flake8]
|
[flake8]
|
||||||
ignore = E402,E128,W503
|
ignore = E402,E128,W503
|
||||||
exclude = mitogen/compat
|
exclude = mitogen/compat
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
#/bin/sh
|
||||||
|
set -o errexit
|
||||||
|
set -o nounset
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
UNIT2="$(which unit2)"
|
||||||
|
|
||||||
|
coverage erase
|
||||||
|
coverage run "${UNIT2}" discover \
|
||||||
|
--start-directory "tests" \
|
||||||
|
--pattern '*_test.py' \
|
||||||
|
"$@"
|
||||||
|
coverage html
|
||||||
|
echo coverage report is at "file://$(pwd)/htmlcov/index.html"
|
63
test.sh
63
test.sh
|
@ -1,63 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
timeout()
|
|
||||||
{
|
|
||||||
python -c '
|
|
||||||
import subprocess
|
|
||||||
import sys
|
|
||||||
import time
|
|
||||||
|
|
||||||
deadline = time.time() + float(sys.argv[1])
|
|
||||||
proc = subprocess.Popen(sys.argv[2:])
|
|
||||||
while time.time() < deadline and proc.poll() is None:
|
|
||||||
time.sleep(1.0)
|
|
||||||
|
|
||||||
if proc.poll() is not None:
|
|
||||||
sys.exit(proc.returncode)
|
|
||||||
proc.terminate()
|
|
||||||
print
|
|
||||||
print >> sys.stderr, "Timeout! Command was:", sys.argv[2:]
|
|
||||||
print
|
|
||||||
sys.exit(1)
|
|
||||||
' "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
trap 'sigint' INT
|
|
||||||
sigint()
|
|
||||||
{
|
|
||||||
echo "SIGINT received, stopping.."
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
run_test()
|
|
||||||
{
|
|
||||||
echo "Running $1.."
|
|
||||||
timeout 10 python $1 || fail=$?
|
|
||||||
}
|
|
||||||
|
|
||||||
run_test tests/ansible_helpers_test.py
|
|
||||||
run_test tests/call_error_test.py
|
|
||||||
run_test tests/call_function_test.py
|
|
||||||
run_test tests/channel_test.py
|
|
||||||
run_test tests/fakessh_test.py
|
|
||||||
run_test tests/first_stage_test.py
|
|
||||||
run_test tests/fork_test.py
|
|
||||||
run_test tests/id_allocation_test.py
|
|
||||||
run_test tests/importer_test.py
|
|
||||||
run_test tests/latch_test.py
|
|
||||||
run_test tests/local_test.py
|
|
||||||
run_test tests/master_test.py
|
|
||||||
run_test tests/module_finder_test.py
|
|
||||||
run_test tests/nested_test.py
|
|
||||||
run_test tests/parent_test.py
|
|
||||||
run_test tests/receiver_test.py
|
|
||||||
run_test tests/responder_test.py
|
|
||||||
run_test tests/router_test.py
|
|
||||||
run_test tests/select_test.py
|
|
||||||
run_test tests/ssh_test.py
|
|
||||||
run_test tests/utils_test.py
|
|
||||||
|
|
||||||
if [ "$fail" ]; then
|
|
||||||
echo "AT LEAST ONE TEST FAILED" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
|
@ -27,4 +27,4 @@ and run the tests there.
|
||||||
1. Build the virtual environment ``virtualenv ../venv``
|
1. Build the virtual environment ``virtualenv ../venv``
|
||||||
1. Enable the virtual environment we just built ``source ../venv/bin/activate``
|
1. Enable the virtual environment we just built ``source ../venv/bin/activate``
|
||||||
1. Install Mitogen in pip editable mode ``pip install -e .``
|
1. Install Mitogen in pip editable mode ``pip install -e .``
|
||||||
1. Run ``test.sh``
|
1. Run ``test``
|
||||||
|
|
|
@ -64,7 +64,10 @@ class CallFunctionTest(testlib.RouterMixin, testlib.TestCase):
|
||||||
def test_bad_return_value(self):
|
def test_bad_return_value(self):
|
||||||
exc = self.assertRaises(mitogen.core.StreamError,
|
exc = self.assertRaises(mitogen.core.StreamError,
|
||||||
lambda: self.local.call(func_with_bad_return_value))
|
lambda: self.local.call(func_with_bad_return_value))
|
||||||
self.assertEquals(exc[0], "cannot unpickle '__main__'/'CrazyType'")
|
self.assertEquals(
|
||||||
|
exc[0],
|
||||||
|
"cannot unpickle '%s'/'CrazyType'" % (__name__,),
|
||||||
|
)
|
||||||
|
|
||||||
def test_returns_dead(self):
|
def test_returns_dead(self):
|
||||||
self.assertEqual(mitogen.core._DEAD, self.local.call(func_returns_dead))
|
self.assertEqual(mitogen.core._DEAD, self.local.call(func_returns_dead))
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
|
import timeoutcontext
|
||||||
import unittest2
|
import unittest2
|
||||||
|
|
||||||
import mitogen.fakessh
|
import mitogen.fakessh
|
||||||
|
@ -10,6 +11,7 @@ import testlib
|
||||||
|
|
||||||
|
|
||||||
class RsyncTest(testlib.DockerMixin, unittest2.TestCase):
|
class RsyncTest(testlib.DockerMixin, unittest2.TestCase):
|
||||||
|
@timeoutcontext.timeout(5)
|
||||||
def test_rsync_from_master(self):
|
def test_rsync_from_master(self):
|
||||||
context = self.docker_ssh_any()
|
context = self.docker_ssh_any()
|
||||||
|
|
||||||
|
@ -25,6 +27,7 @@ class RsyncTest(testlib.DockerMixin, unittest2.TestCase):
|
||||||
self.assertTrue(context.call(os.path.exists, '/tmp/data'))
|
self.assertTrue(context.call(os.path.exists, '/tmp/data'))
|
||||||
self.assertTrue(context.call(os.path.exists, '/tmp/data/simple_pkg/a.py'))
|
self.assertTrue(context.call(os.path.exists, '/tmp/data/simple_pkg/a.py'))
|
||||||
|
|
||||||
|
@timeoutcontext.timeout(5)
|
||||||
def test_rsync_between_direct_children(self):
|
def test_rsync_between_direct_children(self):
|
||||||
# master -> SSH -> has-sudo-pubkey -> rsync(.ssh) -> master ->
|
# master -> SSH -> has-sudo-pubkey -> rsync(.ssh) -> master ->
|
||||||
# has-sudo -> rsync
|
# has-sudo -> rsync
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import inspect
|
||||||
|
|
||||||
import unittest2
|
import unittest2
|
||||||
|
|
||||||
|
@ -9,8 +10,10 @@ class ScanCodeImportsTest(unittest2.TestCase):
|
||||||
func = staticmethod(mitogen.master.scan_code_imports)
|
func = staticmethod(mitogen.master.scan_code_imports)
|
||||||
|
|
||||||
def test_simple(self):
|
def test_simple(self):
|
||||||
co = compile(open(__file__).read(), __file__, 'exec')
|
source_path = inspect.getsourcefile(ScanCodeImportsTest)
|
||||||
|
co = compile(open(source_path).read(), source_path, 'exec')
|
||||||
self.assertEquals(list(self.func(co)), [
|
self.assertEquals(list(self.func(co)), [
|
||||||
|
(-1, 'inspect', ()),
|
||||||
(-1, 'unittest2', ()),
|
(-1, 'unittest2', ()),
|
||||||
(-1, 'testlib', ()),
|
(-1, 'testlib', ()),
|
||||||
(-1, 'mitogen.master', ()),
|
(-1, 'mitogen.master', ()),
|
||||||
|
|
Loading…
Reference in New Issue