diff --git a/gear/tests/__init__.py b/gear/tests/__init__.py new file mode 100644 index 0000000..a6543f0 --- /dev/null +++ b/gear/tests/__init__.py @@ -0,0 +1,51 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright (c) 2013 Hewlett-Packard Development Company, L.P. +# +# 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 testresources +import testtools + +TRUE_VALUES = ('true', '1', 'yes') + + +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 TRUE_VALUES: + stdout = self.useFixture(fixtures.StringStream('stdout')).stream + self.useFixture(fixtures.MonkeyPatch('sys.stdout', stdout)) + if os.environ.get('OS_STDERR_CAPTURE') in TRUE_VALUES: + stderr = self.useFixture(fixtures.StringStream('stderr')).stream + self.useFixture(fixtures.MonkeyPatch('sys.stderr', stderr)) + + self.useFixture(fixtures.FakeLogger()) + self.useFixture(fixtures.NestedTempfile()) diff --git a/gear/tests/test_gear.py b/gear/tests/test_gear.py new file mode 100644 index 0000000..e28d35f --- /dev/null +++ b/gear/tests/test_gear.py @@ -0,0 +1,46 @@ +# Copyright (c) 2013 Hewlett-Packard Development Company, L.P. +# +# 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. + +import testscenarios +import testtools +from testtools import content +from testtools import matchers + +import gear +from gear import tests + + +class ConnectionTestCase(tests.BaseTestCase): + + scenarios = [ + ('both_string', + dict(host="hostname", port='80')), + ('string_int', + dict(host="hostname", port=80)), + ('none_string', + dict(host=None, port="80")), + ] + + def setUp(self): + super(ConnectionTestCase, self).setUp() + self.conn = gear.Connection(self.host, self.port) + + def test_params(self): + self.assertTrue(repr(self.conn).endswith( + 'host: %s port: %s>' % (self.host, self.port))) + + +def load_tests(loader, in_tests, pattern): + return testscenarios.load_tests_apply_scenarios(loader, in_tests, pattern) diff --git a/test-requirements.txt b/test-requirements.txt index 6efd99e..1b82ab0 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -5,5 +5,6 @@ flake8 python-subunit sphinx>=1.1.2 testrepository>=0.0.13 +testresources testscenarios testtools>=0.9.27