summaryrefslogtreecommitdiffstats
path: root/tests/cmd/test_cmd.py
blob: 5ec1dd7a93658b4180a488c6a18418b4e7b30bc7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import os

from jenkins_jobs.cli import entry
from tests import base
from tests.base import mock


class CmdTestsBase(base.BaseTestCase):

    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 JobCache class
        # attempting to create the cache directory multiple times as the tests
        # are run in parallel.  Stub out the JobCache to ensure that each
        # test can safely create the cache directory without risk of
        # interference.
        cache_patch = mock.patch('jenkins_jobs.builder.JobCache',
                                 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, [])