From 0b2168037ad1ef8f9f7067ea30644e90bf446985 Mon Sep 17 00:00:00 2001 From: James Page Date: Tue, 3 Nov 2015 11:58:54 +0000 Subject: [PATCH] Add tox support --- .bzrignore | 6 +++--- .testr.conf | 8 ++++++++ requirements.txt | 11 +++++++++++ test-requirements.txt | 8 ++++++++ tox.ini | 29 +++++++++++++++++++++++++++++ unit_tests/test_hooks.py | 30 +++++++++++++++--------------- 6 files changed, 74 insertions(+), 18 deletions(-) create mode 100644 .testr.conf create mode 100644 requirements.txt create mode 100644 test-requirements.txt create mode 100644 tox.ini diff --git a/.bzrignore b/.bzrignore index e06c3a88..9ad1b67f 100644 --- a/.bzrignore +++ b/.bzrignore @@ -1,5 +1,5 @@ -.project -.pydevproject bin -.coveragerc .coverage +.testrepository +.tox +tags diff --git a/.testr.conf b/.testr.conf new file mode 100644 index 00000000..801646bb --- /dev/null +++ b/.testr.conf @@ -0,0 +1,8 @@ +[DEFAULT] +test_command=OS_STDOUT_CAPTURE=${OS_STDOUT_CAPTURE:-1} \ + OS_STDERR_CAPTURE=${OS_STDERR_CAPTURE:-1} \ + OS_TEST_TIMEOUT=${OS_TEST_TIMEOUT:-60} \ + ${PYTHON:-python} -m subunit.run discover -t ./ ./unit_tests $LISTOPT $IDOPTION + +test_id_option=--load-list $IDFILE +test_list_option=--list diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 00000000..426002dc --- /dev/null +++ b/requirements.txt @@ -0,0 +1,11 @@ +# The order of packages is significant, because pip processes them in the order +# of appearance. Changing the order has an impact on the overall integration +# process, which may cause wedges in the gate later. +PyYAML>=3.1.0 +simplejson>=2.2.0 +netifaces>=0.10.4 +netaddr>=0.7.12,!=0.7.16 +Jinja2>=2.6 # BSD License (3 clause) +six>=1.9.0 +dnspython>=1.12.0 +psutil>=1.1.1,<2.0.0 diff --git a/test-requirements.txt b/test-requirements.txt new file mode 100644 index 00000000..3af44d73 --- /dev/null +++ b/test-requirements.txt @@ -0,0 +1,8 @@ +# The order of packages is significant, because pip processes them in the order +# of appearance. Changing the order has an impact on the overall integration +# process, which may cause wedges in the gate later. +coverage>=3.6 +mock>=1.2 +flake8>=2.2.4,<=2.4.1 +os-testr>=0.4.1 +charm-tools diff --git a/tox.ini b/tox.ini new file mode 100644 index 00000000..4e328e48 --- /dev/null +++ b/tox.ini @@ -0,0 +1,29 @@ +[tox] +envlist = lint,py27 +skipsdist = True + +[testenv] +setenv = VIRTUAL_ENV={envdir} + PYTHONHASHSEED=0 +install_command = + pip install --allow-unverified python-apt {opts} {packages} +commands = ostestr {posargs} + +[testenv:py27] +basepython = python2.7 +deps = -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt + +[testenv:lint] +basepython = python2.7 +deps = -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt +commands = flake8 {posargs} hooks unit_tests tests + charm proof + +[testenv:venv] +commands = {posargs} + +[flake8] +ignore = E402,E226 +exclude = hooks/charmhelpers diff --git a/unit_tests/test_hooks.py b/unit_tests/test_hooks.py index ec9279d7..9b17cd10 100644 --- a/unit_tests/test_hooks.py +++ b/unit_tests/test_hooks.py @@ -85,7 +85,7 @@ class CephRadosGWTests(CharmTestCase): self.test_config.set('use-ceph-optimised-packages', '') ceph_hooks.install_packages() self.add_source.assert_called_with('distro', 'secretkey') - self.apt_update.assert_called() + self.assertTrue(self.apt_update.called) self.apt_install.assert_called_with(['libapache2-mod-fastcgi', 'apache2'], fatal=True) @@ -95,8 +95,8 @@ class CephRadosGWTests(CharmTestCase): _install_packages = self.patch('install_ceph_optimised_packages') ceph_hooks.install_packages() self.add_source.assert_called_with('distro', 'secretkey') - self.apt_update.assert_called() - _install_packages.assert_called() + self.assertTrue(self.apt_update.called) + self.assertTrue(_install_packages.called) self.apt_install.assert_called_with(['libapache2-mod-fastcgi', 'apache2'], fatal=True) @@ -106,8 +106,8 @@ class CephRadosGWTests(CharmTestCase): _install_packages = self.patch('install_ceph_optimised_packages') ceph_hooks.install_packages() self.add_source.assert_called_with('distro', 'secretkey') - self.apt_update.assert_called() - _install_packages.assert_called() + self.assertTrue(self.apt_update.called) + self.assertFalse(_install_packages.called) self.apt_install.assert_called_with(['radosgw', 'ntp', 'haproxy'], fatal=True) @@ -117,8 +117,8 @@ class CephRadosGWTests(CharmTestCase): def test_install(self): _install_packages = self.patch('install_packages') ceph_hooks.install() - self.execd_preinstall.assert_called() - _install_packages.assert_called() + self.assertTrue(self.execd_preinstall.called) + self.assertTrue(_install_packages.called) self.enable_pocket.assert_called_with('multiverse') self.os.makedirs.called_with('/var/lib/ceph/nss') @@ -175,20 +175,20 @@ class CephRadosGWTests(CharmTestCase): _apache_modules = self.patch('apache_modules') _apache_reload = self.patch('apache_reload') ceph_hooks.config_changed() - _install_packages.assert_called() + self.assertTrue(_install_packages.called) self.CONFIGS.write_all.assert_called_with() - _emit_apacheconf.assert_called() - _install_www_scripts.assert_called() - _apache_sites.assert_called() - _apache_modules.assert_called() - _apache_reload.assert_called() + self.assertTrue(_emit_apacheconf.called) + self.assertTrue(_install_www_scripts.called) + self.assertTrue(_apache_sites.called) + self.assertTrue(_apache_modules.called) + self.assertTrue(_apache_reload.called) def test_mon_relation(self): _ceph = self.patch('ceph') _restart = self.patch('restart') self.relation_get.return_value = 'seckey' ceph_hooks.mon_relation() - _restart.assert_called() + self.assertTrue(_restart.called) _ceph.import_radosgw_key.assert_called_with('seckey') self.CONFIGS.write_all.assert_called_with() @@ -275,7 +275,7 @@ class CephRadosGWTests(CharmTestCase): _restart = self.patch('restart') ceph_hooks.identity_changed() self.CONFIGS.write_all.assert_called_with() - _restart.assert_called() + self.assertTrue(_restart.called) @patch('charmhelpers.contrib.openstack.ip.is_clustered') @patch('charmhelpers.contrib.openstack.ip.unit_get')