123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- # -*- coding: utf-8 -*-
- '''
- Test wrapper for running all KitchenSalt tests
- All directories in 'tests/kitchen/' will be treated as a separate test under
- the KitchenTestCase.
- '''
- from __future__ import absolute_import
- import os
- from tests.support.unit import TestCase, skipIf
- import setup
- import salt.utils.path
- from salt.modules import cmdmod as cmd
- CURRENT_DIR = os.path.dirname(os.path.realpath(__file__))
- @skipIf(not salt.utils.path.which('bundle'), 'Bundler is not installed')
- class KitchenTestCase(TestCase):
- '''
- Test kitchen environments
- '''
- @classmethod
- def setUpClass(cls):
- '''
- setup kitchen tests
- '''
- cls.topdir = '/' + os.path.join(*CURRENT_DIR.split('/')[:-2])
- cls.use_vt = int(os.environ.get('TESTS_LOG_LEVEL')) >= 5
- cmd.run('python setup.py sdist', cwd=cls.topdir)
- cmd.run('bundle install', cwd=CURRENT_DIR)
- cls.env = {
- 'KITCHEN_YAML': os.path.join(CURRENT_DIR, '.kitchen.yml'),
- 'SALT_SDIST_PATH': os.path.join(cls.topdir, 'dist', 'salt-{0}.tar.gz'.format(setup.__version__)),
- }
- @classmethod
- def tearDownClass(cls):
- del cls.topdir
- del cls.env
- def tearDown(self):
- cmd.run(
- 'bundle exec kitchen destroy all',
- cwd=os.path.join(CURRENT_DIR, 'tests', self.testdir),
- env=self.env,
- use_vt=self.use_vt,
- )
- del self.testdir
- def func_builder(testdir):
- def func(self):
- self.testdir = testdir
- if 'TESTS_XML_OUTPUT_DIR' in os.environ:
- self.env['TESTS_JUNIT_XML_PATH'] = '{0}/kitchen.tests.{1}.$KITCHEN_SUITE.$KITCHEN_PLATFORM.xml'.format(
- os.environ.get('TESTS_XML_OUTPUT_DIR'),
- self.testdir,
- )
- self.assertEqual(
- cmd.retcode(
- 'bundle exec kitchen converge -c 999 all',
- cwd=os.path.join(CURRENT_DIR, 'tests', self.testdir),
- env=self.env,
- use_vt=self.use_vt,
- ),
- 0
- )
- self.assertEqual(
- cmd.retcode(
- 'bundle exec kitchen verify all',
- cwd=os.path.join(CURRENT_DIR, 'tests', self.testdir),
- env=self.env,
- use_vt=self.use_vt,
- ),
- 0
- )
- return func
- for testdir in os.listdir(os.path.join(CURRENT_DIR, 'tests')):
- setattr(KitchenTestCase, 'test_kitchen_{0}'.format(testdir), func_builder(testdir))
|