diff --git a/test-requirements.txt b/test-requirements.txt index 269d9f5664..dc12a067b2 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -14,3 +14,4 @@ python-swiftclient>=2.2.0 testrepository>=0.0.18 testscenarios>=0.4 testtools>=0.9.36,!=1.2.0 +jinja2 diff --git a/tests/test_build.py b/tests/test_build.py new file mode 100644 index 0000000000..0bfaad2751 --- /dev/null +++ b/tests/test_build.py @@ -0,0 +1,59 @@ +# 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. + + +from mock import patch +from os import path +from oslo_log import fixture as log_fixture +from oslo_log import log as logging +from oslotest import base + +import sys +sys.path.append(path.abspath(path.join(path.dirname(__file__), '../tools'))) +from tools import build + +LOG = logging.getLogger(__name__) + + +class BuildTest(base.BaseTestCase): + + def setUp(self): + super(BuildTest, self).setUp() + self.useFixture(log_fixture.SetLogLevel([__name__], + logging.logging.INFO)) + + def test_build(self): + build_args = ["--debug"] + with patch.object(sys, 'argv', build_args): + bad_results, good_results = build.main() + + # these are images that are known to not build properly + excluded_images = ["barbican", + "gnocchi-api", + "gnocchi-statsd"] + + failures = 0 + for image, result in bad_results.iteritems(): + if image in excluded_images: + if result is 'error': + continue + failures = failures + 1 + LOG.warning(">>> Expected image '%s' to fail, please update" + " the excluded_images in source file above if the" + " image build has been fixed." % image) + else: + if result is not 'error': + continue + failures = failures + 1 + LOG.critical(">>> Expected image '%s' to succeed!" % image) + + self.assertEqual(failures, 0, "%d failure(s) occurred" % failures) diff --git a/tools/__init__.py b/tools/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tox.ini b/tox.ini index 8e4aa17a45..3bc7d3787a 100644 --- a/tox.ini +++ b/tox.ini @@ -42,6 +42,15 @@ commands = sudo -g docker testr run ^(test_images).* bash -c "if [ -f buildconf.bak ]; then mv buildconf.bak .buildconf; fi" +[testenv:images-centos-rdo] +whitelist_externals = find + bash + sudo +commands = + find . -type f -name "*.pyc" -delete + bash -c "if [ ! -d .testrepository ]; then testr init; fi" + sudo -g docker testr run ^(test_build).* + [testenv:images-centos-src] whitelist_externals = find bash