Пример #1
0
    def _make(self, name, block='_all'):
        """
        An internal method used by :`~rules.RuleCloth.fetch()` to process
        content from :attr:`~rules.RuleCloth.rules` and return
        :meth:`~cloth.BuildCloth.get_block()` in Makefile format.
        """
        rule = self.rules[name]

        m = MakefileCloth()

        for cmd in rule['command']:
            m.job(cmd, block=block)

        m.msg(rule['description'], block=block)

        if 'depfile' in rule:
            m.raw(['include ' + rule['depfile']], block=block)

        return m.get_block(block)
Пример #2
0
class TestMakefileBuilderJobMethod(TestCase):
    @classmethod
    def setUp(self):
        self.m = MakefileCloth()
        self.job = 'git update-index --assume-unchanged'
        self.job_make = '\t' + self.job
        self.job_quiet = '\t@' + self.job
        self.job_ignore = '\t-' + self.job
        self.job_quiet_ignore = '\t@-' + self.job

    def test_job_default(self):
        self.m.job(self.job, block='test')
        self.assertEqual(self.m.get_block('test')[0], self.job_quiet)

    def test_job_ignored_named(self):
        self.m.job(self.job, ignore=True, block='test')
        self.assertEqual(self.m.get_block('test')[0], self.job_quiet_ignore)

    def test_job_ignored_positional(self):
        self.m.job(self.job, False, True, block='test')
        self.assertEqual(self.m.get_block('test')[0], self.job_quiet_ignore)

    def test_job_unquiet_named(self):
        self.m.job(self.job, display=True, block='test')
        self.assertEqual(self.m.get_block('test')[0], self.job_make)

    def test_job_unquiet_positional(self):
        self.m.job(self.job, True, block='test')
        self.assertEqual(self.m.get_block('test')[0], self.job_make)

    def test_job_unquiet_ignored_positional(self):
        self.m.job(self.job, True, True, block='test')
        self.assertEqual(self.m.get_block('test')[0], self.job_ignore)

    def test_job_unquiet_ignored_named(self):
        self.m.job(self.job, display=True, ignore=True, block='test')
        self.assertEqual(self.m.get_block('test')[0], self.job_ignore)

    def test_job_invalid_dict_job(self):
        with self.assertRaises(MalformedContent):
            self.m.job({'a': 'string'}, block='test')

    def test_job_invalid_num(self):
        with self.assertRaises(MalformedContent):
            self.m.job(1, block='test')

    def test_job_invalid_nested_list(self):
        with self.assertRaises(MalformedContent):
            self.m.job([ 'a', [ 'a', '1'] ], block='test')

    def test_job_list(self):
        jobs = ['a', 'b']
        builder = ['\t@a', '\t@b']

        self.m.job(jobs, block='job-list')
        self.assertEqual(self.m.get_block('job-list'), builder)
Пример #3
0
class TestMakefileBuilderJobMethod(TestCase):
    @classmethod
    def setUp(self):
        self.m = MakefileCloth()
        self.job = 'git update-index --assume-unchanged'
        self.job_make = '\t' + self.job
        self.job_quiet = '\t@' + self.job
        self.job_ignore = '\t-' + self.job
        self.job_quiet_ignore = '\t@-' + self.job

    def test_job_default(self):
        self.m.job(self.job, block='test')
        self.assertEqual(self.m.get_block('test')[0], self.job_quiet)

    def test_job_ignored_named(self):
        self.m.job(self.job, ignore=True, block='test')
        self.assertEqual(self.m.get_block('test')[0], self.job_quiet_ignore)

    def test_job_ignored_positional(self):
        self.m.job(self.job, False, True, block='test')
        self.assertEqual(self.m.get_block('test')[0], self.job_quiet_ignore)

    def test_job_unquiet_named(self):
        self.m.job(self.job, display=True, block='test')
        self.assertEqual(self.m.get_block('test')[0], self.job_make)

    def test_job_unquiet_positional(self):
        self.m.job(self.job, True, block='test')
        self.assertEqual(self.m.get_block('test')[0], self.job_make)

    def test_job_unquiet_ignored_positional(self):
        self.m.job(self.job, True, True, block='test')
        self.assertEqual(self.m.get_block('test')[0], self.job_ignore)

    def test_job_unquiet_ignored_named(self):
        self.m.job(self.job, display=True, ignore=True, block='test')
        self.assertEqual(self.m.get_block('test')[0], self.job_ignore)

    def test_job_invalid_dict_job(self):
        with self.assertRaises(MalformedContent):
            self.m.job({'a': 'string'}, block='test')

    def test_job_invalid_num(self):
        with self.assertRaises(MalformedContent):
            self.m.job(1, block='test')

    def test_job_invalid_nested_list(self):
        with self.assertRaises(MalformedContent):
            self.m.job(['a', ['a', '1']], block='test')

    def test_job_list(self):
        jobs = ['a', 'b']
        builder = ['\t@a', '\t@b']

        self.m.job(jobs, block='job-list')
        self.assertEqual(self.m.get_block('job-list'), builder)