Пример #1
0
 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
Пример #2
0
 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
Пример #3
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)
Пример #4
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)
Пример #5
0
 def setUp(self):
     self.m = MakefileCloth()
     self.content = 'the md5 is ab98a7b91094a4ebd9fc0e1a93e985d6'
     self.output = ['\t@echo ' + self.content ]
Пример #6
0
class TestMakefileBuilderMessageMethods(TestCase):
    @classmethod
    def setUp(self):
        self.m = MakefileCloth()
        self.content = 'the md5 is ab98a7b91094a4ebd9fc0e1a93e985d6'
        self.output = ['\t@echo ' + self.content ]

    def test_msg_meth(self):
        b = 'msg1'
        self.m.msg(self.content, block=b)

        self.assertEqual(self.output, self.m.get_block(b))

    def test_message_meth(self):
        b = 'message1'
        self.m.message(self.content, block=b)

        self.assertEqual(self.output, self.m.get_block(b))

    def test_message_interface(self):
        self.m.message(self.content, block='message1')
        self.m.msg(self.content, block='msg1')

        self.assertIsNot(self.m.get_block('message1'), self.m.get_block('msg1'))
        self.assertEqual(self.m.get_block('message1'), self.m.get_block('msg1'))
        self.assertEqual(self.m.get_block('msg1') + self.m.get_block('message1'), self.m.builder['_all'])
Пример #7
0
 def setUp(self):
     self.m = MakefileCloth()
     self.variable = 'var'
     self.value0 = '$(makepathvar)/build/$(branch)/'
     self.value1 = '$(makepathvar)/archive/$(branch)/'
     self.value2 = 'bin lib opt srv local usr src'
Пример #8
0
 def setUp(self):
     self.m = MakefileCloth()
     self.block = 'test-block'
Пример #9
0
 def setUp(self):
     self.m = MakefileCloth()
Пример #10
0
    def test_nested_list_arguments(self):
        argument = [1, ['foo'], 3]

        with self.assertRaises(BuildClothError):
            m = MakefileCloth(argument)
Пример #11
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)
Пример #12
0
 def setUp(self):
     self.m = MakefileCloth()
     self.content = 'the md5 is ab98a7b91094a4ebd9fc0e1a93e985d6'
     self.output = ['\t@echo ' + self.content]
Пример #13
0
class TestMakefileBuilderMessageMethods(TestCase):
    @classmethod
    def setUp(self):
        self.m = MakefileCloth()
        self.content = 'the md5 is ab98a7b91094a4ebd9fc0e1a93e985d6'
        self.output = ['\t@echo ' + self.content]

    def test_msg_meth(self):
        b = 'msg1'
        self.m.msg(self.content, block=b)

        self.assertEqual(self.output, self.m.get_block(b))

    def test_message_meth(self):
        b = 'message1'
        self.m.message(self.content, block=b)

        self.assertEqual(self.output, self.m.get_block(b))

    def test_message_interface(self):
        self.m.message(self.content, block='message1')
        self.m.msg(self.content, block='msg1')

        self.assertIsNot(self.m.get_block('message1'),
                         self.m.get_block('msg1'))
        self.assertEqual(self.m.get_block('message1'),
                         self.m.get_block('msg1'))
        self.assertEqual(
            self.m.get_block('msg1') + self.m.get_block('message1'),
            self.m.builder['_all'])
Пример #14
0
 def setUp(self):
     self.m = MakefileCloth()
     self.variable = 'var'
     self.value0 = '$(makepathvar)/build/$(branch)/'
     self.value1 = '$(makepathvar)/archive/$(branch)/'
     self.value2 = 'bin lib opt srv local usr src'
Пример #15
0
class TestMakefileClothVariableMethods(TestCase):
    @classmethod
    def setUp(self):
        self.m = MakefileCloth()
        self.variable = 'var'
        self.value0 = '$(makepathvar)/build/$(branch)/'
        self.value1 = '$(makepathvar)/archive/$(branch)/'
        self.value2 = 'bin lib opt srv local usr src'

    def test_append_var_meth1(self):
        b = 'append_var1'
        v = self.value1

        self.m.append_var(self.variable, v, block=b)
        self.assertEqual(self.m.get_block(b)[0], self.variable + ' += ' + v)

    def test_var_meth2(self):
        b = 'append_var2'
        v = self.value2

        self.m.append_var(self.variable, v, block=b)
        self.assertEqual(self.m.get_block(b)[0], self.variable + ' += ' + v)

    def test_var_meth3(self):
        b = 'append_var3'
        v = self.value2

        self.m.append_var(self.variable, v, block=b)
        self.assertEqual(self.m.get_block(b)[0], self.variable + ' += ' + v)

    def test_new_var_meth1(self):
        b = 'new_var1'
        v = self.value1

        self.m.new_var(self.variable, v, block=b)
        self.assertEqual(self.m.get_block(b)[0], self.variable + ' ?= ' + v)

    def test_new_var_meth2(self):
        b = 'new_var2'
        v = self.value2

        self.m.new_var(self.variable, v, block=b)
        self.assertEqual(self.m.get_block(b)[0], self.variable + ' ?= ' + v)

    def test_new_var_meth3(self):
        b = 'new_var3'
        v = self.value2

        self.m.new_var(self.variable, v, block=b)
        self.assertEqual(self.m.get_block(b)[0], self.variable + ' ?= ' + v)

    def test_simple_var_meth1(self):
        b = 'simple_var1'
        v = self.value1

        self.m.simple_var(self.variable, v, block=b)
        self.assertEqual(self.m.get_block(b)[0], self.variable + ' := ' + v)

    def test_simple_var_meth2(self):
        b = 'simple_var2'
        v = self.value2

        self.m.simple_var(self.variable, v, block=b)
        self.assertEqual(self.m.get_block(b)[0], self.variable + ' := ' + v)

    def test_simple_var_meth3(self):
        b = 'simple_var3'
        v = self.value2

        self.m.simple_var(self.variable, v, block=b)
        self.assertEqual(self.m.get_block(b)[0], self.variable + ' := ' + v)

    def test_include(self):
        i = 'makefile.inc'
        o = 'include makefile.inc'
        b = 'incb'

        self.m.include(i, block=b)

        self.assertEqual(self.m.get_block(b)[0], o)

    def test_include_list(self):
        i = ['makefile.inc0', 'makefile.inc1']
        o = ['include ' + inc for inc in i]
        b = 'incb'

        self.m.include(i, block=b)
        self.assertEqual(self.m.get_block(b), o)

    def test_include_list_ignore(self):
        i = ['makefile.inc0', 'makefile.inc1']
        o = ['-include ' + inc for inc in i]
        b = 'incb'

        self.m.include(i, ignore=True, block=b)
        self.assertEqual(self.m.get_block(b), o)

    def test_include_ignore(self):
        i = 'makefile.inc'
        o = '-include makefile.inc'
        b = 'incb'

        self.m.include(i, ignore=True, block=b)

        self.assertEqual(self.m.get_block(b)[0], o)
Пример #16
0
 def setUp(self):
     self.argument = [1, 2, 3]
     self.m = MakefileCloth(self.argument)
Пример #17
0
class TestTargetsAndDependencies(TestCase):
    @classmethod
    def setUp(self):
        self.m = MakefileCloth()
        self.block = 'test-block'

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

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

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

    def test_target_invalid_num_dep(self):
        with self.assertRaises(MalformedContent):
            self.m.target('a', 1, block='test')

    def test_target_single_no_dep(self):
        target = 'a'
        result = ['a:']

        self.m.target(target, block=self.block)
        self.assertEqual(self.m.get_block(self.block), result)

    def test_target_single_with_dep(self):
        target = 'a'
        dep = 'b'
        result = ['a:b']

        self.m.target(target, dep, block=self.block)
        self.assertEqual(self.m.get_block(self.block), result)

    def test_target_single_no_dep(self):
        target = 'a'
        result = ['a:']

        self.m.target(target, block=self.block)
        self.assertEqual(self.m.get_block(self.block), result)

    def test_target_single_with_dep(self):
        target = 'a'
        dep = 'b'
        result = ['a:b']

        self.m.target(target, dep, block=self.block)
        self.assertEqual(self.m.get_block(self.block), result)

    def test_target_multi_no_dep(self):
        target = ['a', 'b' ]
        result = ['a b:']

        self.m.target(target, block=self.block)
        self.assertEqual(self.m.get_block(self.block), result)

    def test_target_multi_with_dep(self):
        target = ['a', 'b' ]
        dep = 'c'
        result = ['a b:c']

        self.m.target(target, dep, block=self.block)
        self.assertEqual(self.m.get_block(self.block), result)

    def test_target_multi_with_multi_dep(self):
        target = ['a', 'b' ]
        dep = ['c', 'd' ]
        result = ['a b:c d']

        self.m.target(target, dep, block=self.block)
        self.assertEqual(self.m.get_block(self.block), result)

    def test_target_single_with_multi_dep(self):
        target = 'a'
        dep = ['b', 'c']
        result = ['a:b c']

        self.m.target(target, dep, block=self.block)
        self.assertEqual(self.m.get_block(self.block), result)
Пример #18
0
 def test_empty_object(self):
     m = MakefileCloth()
     self.assertEqual(m.makefile, [])
     self.assertEqual(m.builder['_all'], [])
Пример #19
0
 def setUp(self):
     self.m = MakefileCloth()
     self.block = 'test-block'
Пример #20
0
class TestMakefileClothVariableMethods(TestCase):
    @classmethod
    def setUp(self):
        self.m = MakefileCloth()
        self.variable = 'var'
        self.value0 = '$(makepathvar)/build/$(branch)/'
        self.value1 = '$(makepathvar)/archive/$(branch)/'
        self.value2 = 'bin lib opt srv local usr src'

    def test_append_var_meth1(self):
        b = 'append_var1'
        v = self.value1

        self.m.append_var(self.variable, v, block=b)
        self.assertEqual(self.m.get_block(b)[0], self.variable + ' += ' + v)

    def test_var_meth2(self):
        b = 'append_var2'
        v = self.value2

        self.m.append_var(self.variable, v, block=b)
        self.assertEqual(self.m.get_block(b)[0], self.variable + ' += ' + v)

    def test_var_meth3(self):
        b = 'append_var3'
        v = self.value2

        self.m.append_var(self.variable, v, block=b)
        self.assertEqual(self.m.get_block(b)[0], self.variable + ' += ' + v)

    def test_new_var_meth1(self):
        b = 'new_var1'
        v = self.value1

        self.m.new_var(self.variable, v, block=b)
        self.assertEqual(self.m.get_block(b)[0], self.variable + ' ?= ' + v)

    def test_new_var_meth2(self):
        b = 'new_var2'
        v = self.value2

        self.m.new_var(self.variable, v, block=b)
        self.assertEqual(self.m.get_block(b)[0], self.variable + ' ?= ' + v)

    def test_new_var_meth3(self):
        b = 'new_var3'
        v = self.value2

        self.m.new_var(self.variable, v, block=b)
        self.assertEqual(self.m.get_block(b)[0], self.variable + ' ?= ' + v)

    def test_simple_var_meth1(self):
        b = 'simple_var1'
        v = self.value1

        self.m.simple_var(self.variable, v, block=b)
        self.assertEqual(self.m.get_block(b)[0], self.variable + ' := ' + v)

    def test_simple_var_meth2(self):
        b = 'simple_var2'
        v = self.value2

        self.m.simple_var(self.variable, v, block=b)
        self.assertEqual(self.m.get_block(b)[0], self.variable + ' := ' + v)

    def test_simple_var_meth3(self):
        b = 'simple_var3'
        v = self.value2

        self.m.simple_var(self.variable, v, block=b)
        self.assertEqual(self.m.get_block(b)[0], self.variable + ' := ' + v)

    def test_include(self):
        i = 'makefile.inc'
        o = 'include makefile.inc'
        b = 'incb'

        self.m.include(i, block=b)

        self.assertEqual(self.m.get_block(b)[0], o)

    def test_include_list(self):
        i = ['makefile.inc0', 'makefile.inc1']
        o = [ 'include ' + inc for inc in i ]
        b = 'incb'

        self.m.include(i, block=b)
        self.assertEqual(self.m.get_block(b), o)

    def test_include_list_ignore(self):
        i = ['makefile.inc0', 'makefile.inc1']
        o = [ '-include ' + inc for inc in i ]
        b = 'incb'

        self.m.include(i, ignore=True, block=b)
        self.assertEqual(self.m.get_block(b), o)

    def test_include_ignore(self):
        i = 'makefile.inc'
        o = '-include makefile.inc'
        b = 'incb'

        self.m.include(i, ignore=True, block=b)

        self.assertEqual(self.m.get_block(b)[0], o)
Пример #21
0
class TestTargetsAndDependencies(TestCase):
    @classmethod
    def setUp(self):
        self.m = MakefileCloth()
        self.block = 'test-block'

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

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

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

    def test_target_invalid_num_dep(self):
        with self.assertRaises(MalformedContent):
            self.m.target('a', 1, block='test')

    def test_target_single_no_dep(self):
        target = 'a'
        result = ['a:']

        self.m.target(target, block=self.block)
        self.assertEqual(self.m.get_block(self.block), result)

    def test_target_single_with_dep(self):
        target = 'a'
        dep = 'b'
        result = ['a:b']

        self.m.target(target, dep, block=self.block)
        self.assertEqual(self.m.get_block(self.block), result)

    def test_target_single_no_dep(self):
        target = 'a'
        result = ['a:']

        self.m.target(target, block=self.block)
        self.assertEqual(self.m.get_block(self.block), result)

    def test_target_single_with_dep(self):
        target = 'a'
        dep = 'b'
        result = ['a:b']

        self.m.target(target, dep, block=self.block)
        self.assertEqual(self.m.get_block(self.block), result)

    def test_target_multi_no_dep(self):
        target = ['a', 'b']
        result = ['a b:']

        self.m.target(target, block=self.block)
        self.assertEqual(self.m.get_block(self.block), result)

    def test_target_multi_with_dep(self):
        target = ['a', 'b']
        dep = 'c'
        result = ['a b:c']

        self.m.target(target, dep, block=self.block)
        self.assertEqual(self.m.get_block(self.block), result)

    def test_target_multi_with_multi_dep(self):
        target = ['a', 'b']
        dep = ['c', 'd']
        result = ['a b:c d']

        self.m.target(target, dep, block=self.block)
        self.assertEqual(self.m.get_block(self.block), result)

    def test_target_single_with_multi_dep(self):
        target = 'a'
        dep = ['b', 'c']
        result = ['a:b c']

        self.m.target(target, dep, block=self.block)
        self.assertEqual(self.m.get_block(self.block), result)