1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- # -*- 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
- import salt.utils.path
- import setup
- from salt.modules import cmdmod as cmd
- from tests.support.unit import TestCase, skipIf
- 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))
|