import os import testtools from jenkins_jobs.cli import entry from tests.base import LoggingFixture from tests.base import mock class CmdTestsBase(LoggingFixture, testtools.TestCase): fixtures_path = os.path.join(os.path.dirname(__file__), 'fixtures') def setUp(self): super(CmdTestsBase, self).setUp() # Testing the cmd module can sometimes result in the CacheStorage class # attempting to create the cache directory multiple times as the tests # are run in parallel. Stub out the CacheStorage to ensure that each # test can safely create the cache directory without risk of # interference. cache_patch = mock.patch('jenkins_jobs.builder.CacheStorage', autospec=True) self.cache_mock = cache_patch.start() self.addCleanup(cache_patch.stop) self.default_config_file = os.path.join(self.fixtures_path, 'empty_builder.ini') def execute_jenkins_jobs_with_args(self, args): jenkins_jobs = entry.JenkinsJobs(args) jenkins_jobs.execute() class TestCmd(CmdTestsBase): def test_with_empty_args(self): """ User passes no args, should fail with SystemExit """ with mock.patch('sys.stderr'): self.assertRaises(SystemExit, entry.JenkinsJobs, [])