summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMonty Taylor <mordred@inaugust.com>2013-04-01 12:39:19 -0400
committerJenkins <jenkins@review.openstack.org>2013-04-06 01:24:06 +0000
commit8dff555d197960cfae6627b3676bcd46eb7692a2 (patch)
tree506aa1a96ace2036235a554ff0cb9c75f3cf672d
parent5b8b7f1d8389223b83d01ba45b4c52a0d92bb15b (diff)
downloadpbr-8dff555d197960cfae6627b3676bcd46eb7692a2.tar.gz
Add more iterations to BuildDoc coverage.
Using testscenarios, construct more combinations of test options for the autodoc_index_module option. Change-Id: I96b2816be2c652478b37c03cb5755a83dfeb0894 Reviewed-on: https://review.openstack.org/25825 Reviewed-by: James E. Blair <corvus@inaugust.com> Reviewed-by: Clark Boylan <clark.boylan@gmail.com> Approved: Monty Taylor <mordred@inaugust.com> Tested-by: Jenkins
-rw-r--r--pbr/packaging.py3
-rw-r--r--pbr/tests/__init__.py61
-rw-r--r--pbr/tests/test_setup.py52
-rw-r--r--pbr/tests/test_version.py4
-rw-r--r--pbr/tests/utils.py45
-rw-r--r--test-requirements.txt2
6 files changed, 95 insertions, 72 deletions
diff --git a/pbr/packaging.py b/pbr/packaging.py
index 21364a1..c52a27d 100644
--- a/pbr/packaging.py
+++ b/pbr/packaging.py
@@ -31,6 +31,7 @@ from distutils import log
from setuptools.command import sdist
log.set_verbosity(log.INFO)
+TRUE_VALUES = ['true', '1', 'yes']
def _parse_mailmap(mailmap_info):
@@ -315,6 +316,8 @@ try:
def run(self):
option_dict = self.distribution.get_option_dict('pbr')
if ('autodoc_index_modules' in option_dict and
+ option_dict.get(
+ 'autodoc_index_modules').lower() in TRUE_VALUES and
not os.getenv('SPHINX_DEBUG')):
self.generate_autoindex()
diff --git a/pbr/tests/__init__.py b/pbr/tests/__init__.py
index f745a13..0dfd2e1 100644
--- a/pbr/tests/__init__.py
+++ b/pbr/tests/__init__.py
@@ -1,14 +1,55 @@
-# Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+# Copyright 2010-2011 OpenStack Foundation
#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
#
-# http://www.apache.org/licenses/LICENSE-2.0
+# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""Common utilities used in testing"""
+
+import os
+
+import fixtures
+import testresources
+import testtools
+
+from pbr import packaging
+from pbr.tests import moxstubout
+
+
+class BaseTestCase(testtools.TestCase, testresources.ResourcedTestCase):
+
+ def setUp(self):
+ super(BaseTestCase, self).setUp()
+ test_timeout = os.environ.get('OS_TEST_TIMEOUT', 30)
+ try:
+ test_timeout = int(test_timeout)
+ except ValueError:
+ # If timeout value is invalid, fail hard.
+ print("OS_TEST_TIMEOUT set to invalid value"
+ " defaulting to no timeout")
+ test_timeout = 0
+ if test_timeout > 0:
+ self.useFixture(fixtures.Timeout(test_timeout, gentle=True))
+
+ if os.environ.get('OS_STDOUT_CAPTURE') in packaging.TRUE_VALUES:
+ stdout = self.useFixture(fixtures.StringStream('stdout')).stream
+ self.useFixture(fixtures.MonkeyPatch('sys.stdout', stdout))
+ if os.environ.get('OS_STDERR_CAPTURE') in packaging.TRUE_VALUES:
+ stderr = self.useFixture(fixtures.StringStream('stderr')).stream
+ self.useFixture(fixtures.MonkeyPatch('sys.stderr', stderr))
+ self.log_fixture = self.useFixture(
+ fixtures.FakeLogger('pbr'))
+
+ self.useFixture(fixtures.NestedTempfile())
+ self.useFixture(fixtures.FakeLogger())
+ self.stubs = self.useFixture(moxstubout.MoxStubout()).stubs
diff --git a/pbr/tests/test_setup.py b/pbr/tests/test_setup.py
index 21515c3..f2778c7 100644
--- a/pbr/tests/test_setup.py
+++ b/pbr/tests/test_setup.py
@@ -22,9 +22,10 @@ import sys
import tempfile
import fixtures
+import testscenarios
from pbr import packaging
-from pbr.tests import utils
+from pbr import tests
class DiveDir(fixtures.Fixture):
@@ -43,7 +44,7 @@ class DiveDir(fixtures.Fixture):
self.addCleanup(os.chdir, self.old_path)
-class EmailTestCase(utils.BaseTestCase):
+class EmailTestCase(tests.BaseTestCase):
def test_str_dict_replace(self):
string = 'Johnnie T. Hozer'
@@ -52,7 +53,7 @@ class EmailTestCase(utils.BaseTestCase):
packaging.canonicalize_emails(string, mapping))
-class MailmapTestCase(utils.BaseTestCase):
+class MailmapTestCase(tests.BaseTestCase):
def setUp(self):
super(MailmapTestCase, self).setUp()
@@ -79,7 +80,7 @@ class MailmapTestCase(utils.BaseTestCase):
packaging.read_git_mailmap(self.git_dir))
-class GitLogsTest(utils.BaseTestCase):
+class GitLogsTest(tests.BaseTestCase):
def setUp(self):
super(GitLogsTest, self).setUp()
@@ -152,32 +153,49 @@ class GitLogsTest(utils.BaseTestCase):
self.assertTrue(co_author in authors)
-class BuildSphinxTest(utils.BaseTestCase):
+class BuildSphinxTest(tests.BaseTestCase):
- def test_build_sphinx(self):
+ scenarios = [
+ ('true_autodoc_caps',
+ dict(has_opt=True, autodoc='True', has_autodoc=True)),
+ ('true_autodoc_lower',
+ dict(has_opt=True, autodoc='true', has_autodoc=True)),
+ ('false_autodoc',
+ dict(has_opt=True, autodoc='False', has_autodoc=False)),
+ ('no_autodoc',
+ dict(has_opt=False, autodoc='False', has_autodoc=False)),
+ ]
+
+ def setUp(self):
+ super(BuildSphinxTest, self).setUp()
self.useFixture(fixtures.MonkeyPatch(
"sphinx.setup_command.BuildDoc.run", lambda self: None))
from distutils import dist
- distr = dist.Distribution()
- distr.packages = ("fake_package",)
- distr.command_options["build_sphinx"] = {"source_dir": ["a", "."]}
- distr.command_options["pbr"] = {"autodoc_index_modules": "True"}
+ self.distr = dist.Distribution()
+ self.distr.packages = ("fake_package",)
+ self.distr.command_options["build_sphinx"] = {
+ "source_dir": ["a", "."]}
pkg_fixture = fixtures.PythonPackage(
"fake_package", [("fake_module.py", "")])
self.useFixture(pkg_fixture)
self.useFixture(DiveDir(pkg_fixture.base))
- build_doc = packaging.LocalBuildDoc(distr)
+ def test_build_doc(self):
+ if self.has_opt:
+ self.distr.command_options["pbr"] = {
+ "autodoc_index_modules": self.autodoc}
+ build_doc = packaging.LocalBuildDoc(self.distr)
build_doc.run()
self.assertTrue(
- os.path.exists("api/autoindex.rst"))
+ os.path.exists("api/autoindex.rst") == self.has_autodoc)
self.assertTrue(
- os.path.exists("api/fake_package.fake_module.rst"))
+ os.path.exists(
+ "api/fake_package.fake_module.rst") == self.has_autodoc)
-class ParseRequirementsTest(utils.BaseTestCase):
+class ParseRequirementsTest(tests.BaseTestCase):
def setUp(self):
super(ParseRequirementsTest, self).setUp()
@@ -218,7 +236,7 @@ class ParseRequirementsTest(utils.BaseTestCase):
self.assertEqual([], actual)
-class ParseDependencyLinksTest(utils.BaseTestCase):
+class ParseDependencyLinksTest(tests.BaseTestCase):
def setUp(self):
super(ParseDependencyLinksTest, self).setUp()
@@ -238,3 +256,7 @@ class ParseDependencyLinksTest(utils.BaseTestCase):
self.assertEqual(
["git://foo.com/zipball#egg=bar"],
packaging.parse_dependency_links([self.tmp_file]))
+
+
+def load_tests(loader, in_tests, pattern):
+ return testscenarios.load_tests_apply_scenarios(loader, in_tests, pattern)
diff --git a/pbr/tests/test_version.py b/pbr/tests/test_version.py
index 4a66b6b..38dd396 100644
--- a/pbr/tests/test_version.py
+++ b/pbr/tests/test_version.py
@@ -20,11 +20,11 @@ import sys
from oslo.config import cfg
-from pbr.tests import utils
+from pbr import tests
from pbr import version
-class DeferredVersionTestCase(utils.BaseTestCase):
+class DeferredVersionTestCase(tests.BaseTestCase):
def setUp(self):
super(DeferredVersionTestCase, self).setUp()
diff --git a/pbr/tests/utils.py b/pbr/tests/utils.py
deleted file mode 100644
index 453d3ad..0000000
--- a/pbr/tests/utils.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-# Copyright 2010-2011 OpenStack Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-"""Common utilities used in testing"""
-
-import os
-
-import fixtures
-import testtools
-
-from pbr.tests import moxstubout
-
-_TRUE = ('True', '1')
-
-
-class BaseTestCase(testtools.TestCase):
-
- def setUp(self):
- super(BaseTestCase, self).setUp()
- if os.environ.get('OS_STDOUT_CAPTURE') in _TRUE:
- stdout = self.useFixture(fixtures.StringStream('stdout')).stream
- self.useFixture(fixtures.MonkeyPatch('sys.stdout', stdout))
- if os.environ.get('OS_STDERR_CAPTURE') in _TRUE:
- stderr = self.useFixture(fixtures.StringStream('stderr')).stream
- self.useFixture(fixtures.MonkeyPatch('sys.stderr', stderr))
- self.log_fixture = self.useFixture(
- fixtures.FakeLogger('pbr'))
-
- self.useFixture(fixtures.NestedTempfile())
- self.useFixture(fixtures.FakeLogger())
- self.useFixture(fixtures.Timeout(30, True))
- self.stubs = self.useFixture(moxstubout.MoxStubout()).stubs
diff --git a/test-requirements.txt b/test-requirements.txt
index d018d03..1bbf038 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -7,4 +7,6 @@ oslo.config
python-subunit
sphinx>=1.1.2
testrepository>=0.0.13
+testresources
+testscenarios
testtools>=0.9.27