示例#1
0
    def test_duplicated_n_level(self):
        brls = {
            'gtest1': 'dummy/block/a1/b/c/gtest/gtest.h',
            'getest2': 'dummy/block/a2/gtest/gtest.h',
            'getest-all1': 'dummy/block/a1/gtest-all.cc',
            'getest-all2': 'dummy/block/a3/gtest-all.cc',
            'getest-all3': 'dummy/block/a1/b2/gtest-all.cc',
        }
        cells = {x: SimpleCell(x) for x in brls.values()}
        cells_names = [x.name.cell_name for x in cells.itervalues()]
        block_holder = self._cells_setup('dummy/block', cells_names, CPP)

        getest_all1 = block_holder['a1/gtest-all.cc'].cell
        getest_all1.dependencies.unresolved = {
            CPPDeclaration('b/c/gtest/gtest.h')
        }
        getest_all2 = block_holder['a3/gtest-all.cc'].cell
        getest_all2.dependencies.unresolved = {CPPDeclaration('gtest.h')}
        getest_all3 = block_holder['a1/b2/gtest-all.cc'].cell
        getest_all3.dependencies.unresolved = {
            CPPDeclaration('../b/c/gtest/gtest.h')
        }
        process_holder(block_holder, DependenciesProcessor())
        # Checks
        self.assertEquals(0, len(getest_all1.dependencies.unresolved))
        self.assertEquals(1, len(getest_all2.dependencies.unresolved))
        self.assertEquals(0, len(getest_all3.dependencies.unresolved))
示例#2
0
    def test_similar_includes(self):
        brls = {'smpso_cpp': 'dummy/jmetal/algorithms/smpso/smpso.cpp',
                'smpso_h': 'dummy/jmetal/algorithms/smpso/smpso.h',
                'pso_settings_cpp': 'dummy/jmetal/settings/pso_settings.cpp',
                'pso_settings_h': 'dummy/jmetal/settings/pso_settings.h',
                'pso_cpp': 'dummy/jmetal/algorithms/pso/pso.cpp',
                'pso_h': 'dummy/jmetal/algorithms/pso/pso.h',
                'pso_main': 'dummy/jmetal/main/pso_main.cpp',
                }
        cells = {x: SimpleCell(x) for x in brls.values()}
        cells_names = [x.name.cell_name for x in cells.itervalues()]
        block_holder = self._cells_setup('dummy/jmetal', cells_names, CPP)

        smpso_cpp = block_holder['algorithms/smpso/smpso.cpp'].cell
        pso_cpp = block_holder['algorithms/pso/pso.cpp'].cell
        pso_settings_h = block_holder['settings/pso_settings.h'].cell
        pso_main = block_holder['main/pso_main.cpp'].cell

        smpso_cpp.dependencies.unresolved = {CPPDeclaration('smpso.h')}
        pso_cpp.dependencies.unresolved = {CPPDeclaration('pso.h')}
        pso_settings_h.dependencies.unresolved = {CPPDeclaration('../algorithms/pso/pso.h')}
        pso_main.dependencies.unresolved = {CPPDeclaration('../algorithms/pso/pso.h')}

        process_holder(block_holder, DependenciesProcessor())
        # Checks
        self.assertEquals(set(), pso_cpp.dependencies.unresolved)
        self.assertEquals(set(), smpso_cpp.dependencies.unresolved)
        self.assertEquals(set(), pso_settings_h.dependencies.unresolved)
        self.assertEquals(set(), pso_main.dependencies.unresolved)
示例#3
0
 def test_config_file_with_main(self):
     main_conf = 'r1.h'
     self.prepare_context(main_conf)
     process_holder(self.block_holder, self.processor)
     # Checks
     self.assertTrue(self.res['user/block/r1.h'].cell.hasMain)
     self.assertFalse(self.res['user/block/r2.cpp'].cell.hasMain)
示例#4
0
    def test_similar_includes(self):
        brls = {
            'smpso_cpp': 'dummy/jmetal/algorithms/smpso/smpso.cpp',
            'smpso_h': 'dummy/jmetal/algorithms/smpso/smpso.h',
            'pso_settings_cpp': 'dummy/jmetal/settings/pso_settings.cpp',
            'pso_settings_h': 'dummy/jmetal/settings/pso_settings.h',
            'pso_cpp': 'dummy/jmetal/algorithms/pso/pso.cpp',
            'pso_h': 'dummy/jmetal/algorithms/pso/pso.h',
            'pso_main': 'dummy/jmetal/main/pso_main.cpp',
        }
        cells = {x: SimpleCell(x) for x in brls.values()}
        cells_names = [x.name.cell_name for x in cells.itervalues()]
        block_holder = self._cells_setup('dummy/jmetal', cells_names, CPP)

        smpso_cpp = block_holder['algorithms/smpso/smpso.cpp'].cell
        pso_cpp = block_holder['algorithms/pso/pso.cpp'].cell
        pso_settings_h = block_holder['settings/pso_settings.h'].cell
        pso_main = block_holder['main/pso_main.cpp'].cell

        smpso_cpp.dependencies.unresolved = {CPPDeclaration('smpso.h')}
        pso_cpp.dependencies.unresolved = {CPPDeclaration('pso.h')}
        pso_settings_h.dependencies.unresolved = {
            CPPDeclaration('../algorithms/pso/pso.h')
        }
        pso_main.dependencies.unresolved = {
            CPPDeclaration('../algorithms/pso/pso.h')
        }

        process_holder(block_holder, DependenciesProcessor())
        # Checks
        self.assertEquals(set(), pso_cpp.dependencies.unresolved)
        self.assertEquals(set(), smpso_cpp.dependencies.unresolved)
        self.assertEquals(set(), pso_settings_h.dependencies.unresolved)
        self.assertEquals(set(), pso_main.dependencies.unresolved)
    def simple_dependencies_node_test(self):
        block_holder = self._cells_setup('dummy/geom',
                                   ['spherefun.js', 'sphere.js', 'main.js', 'other.js'],
                                   JS)
        # Parse processor setup

        block_holder['main.js'].cell.dependencies.unresolved = {NodeDeclaration('http.js'),
                                                           NodeDeclaration('./sphere.js'),
                                                           NodeDeclaration('other.js')}
        block_holder['sphere.js'].cell.dependencies.unresolved = {NodeDeclaration('http.js'),
                                                             NodeDeclaration('url.js'),
                                                             NodeDeclaration('./spherefun.js')}
        process_holder(block_holder, DependenciesProcessor())

        # Checks
        mainR = block_holder['main.js'].cell
        self.assertEqual(mainR.dependencies.explicit, {'dummy/geom/sphere.js'})
        self.assertEqual(mainR.dependencies.system, {'http.js'})
        self.assertEqual(mainR.dependencies.resolved,
                         {NodeDeclaration('http.js'), NodeDeclaration('./sphere.js')})
        self.assertEqual(mainR.dependencies.unresolved, {NodeDeclaration('other.js')})

        sphereR = block_holder['sphere.js'].cell
        self.assertEqual(sphereR.dependencies.explicit, {'dummy/geom/spherefun.js'})
        self.assertEqual(sphereR.dependencies.system, {'http.js', 'url.js'})
        self.assertEqual(sphereR.dependencies.resolved, {NodeDeclaration('http.js'),
                                                         NodeDeclaration('url.js'),
                                                         NodeDeclaration('./spherefun.js')})
        self.assertEqual(sphereR.dependencies.unresolved, set())
示例#6
0
    def test_delete_main(self):
        r1 = SimpleCell('user/block/r1.h', CPP)
        r2 = SimpleCell('user/block/r2.cpp', CPP)
        r3 = SimpleCell('user/block/r3.cpp', CPP)
        r4 = SimpleCell('user/block/' + BIICODE_FILE)

        res = {
            r1.name: Resource(r1, Content(None, Blob(''))),
            r2.name: Resource(r2, Content(None, Blob(''))),
            r3.name: Resource(r3, Content(None,
                                          Blob('int main(char* argv){}'))),
            r4.name: Resource(r4, Content(None, Blob('[mains]\n !r3.cpp')))
        }

        block_holder = BlockHolder(BlockName('user/block'), res)

        process_holder(block_holder, ParseProcessor())
        self.assertTrue(res['user/block/r3.cpp'].cell.hasMain)

        changes, _ = process_holder(block_holder, MainConfigProcessor())
        # Checks
        self.assertFalse(res['user/block/r1.h'].cell.hasMain)
        self.assertFalse(res['user/block/r2.cpp'].cell.hasMain)
        self.assertFalse(res['user/block/r3.cpp'].cell.hasMain)
        self.assertEqual(0, len(changes.upserted))
示例#7
0
    def test_include_partial(self):
        brls = {
            'main': 'dummy/block/main.cpp',
            'astar': 'dummy/block/algorithms/astar.h',
            'solver_h': 'dummy/block/solver/solver.h',
            'solver_cpp': 'dummy/block/solver/solver.cpp'
        }
        cells = {x: SimpleCell(x) for x in brls.values()}
        cells_names = [x.name.cell_name for x in cells.itervalues()]
        block_holder = self._cells_setup('dummy/block', cells_names, CPP)

        main = block_holder['main.cpp'].cell
        main.dependencies.unresolved = {CPPDeclaration('solver/solver.h')}
        solver_h = block_holder['solver/solver.h'].cell
        solver_h.dependencies.unresolved = {
            CPPDeclaration('../algorithms/astar.h')
        }
        solver_cpp = block_holder['solver/solver.cpp'].cell
        solver_cpp.dependencies.unresolved = {CPPDeclaration('solver.h')}

        process_holder(block_holder, DependenciesProcessor())
        # Checks
        self.assertEquals(set(), cells[brls['main']].dependencies.unresolved)
        self.assertEquals(set(),
                          cells[brls['solver_h']].dependencies.unresolved)
        self.assertEquals(set(),
                          cells[brls['solver_cpp']].dependencies.unresolved)
 def test_process_config_file_with_partial_wildcard(self):
     my_conf = '''*1.h + r2.cpp r3.cpp'''
     block_holder = self._prepare_context(my_conf)
     process_holder(block_holder, self.processor)
     r1 = block_holder[self.r1.cell_name].cell
     content = block_holder[self.r1.cell_name].content
     self.assertTrue(content.meta_updated)
     self.assertFalse(content.blob_updated)
     self.assertEqual({self.r2, self.r3}, r1.dependencies.implicit)
示例#9
0
 def test_process_config_file_with_partial_wildcard(self):
     my_conf = '''*1.h + r2.cpp r3.cpp'''
     block_holder = self._prepare_context(my_conf)
     process_holder(block_holder, self.processor)
     r1 = block_holder[self.r1.cell_name].cell
     content = block_holder[self.r1.cell_name].content
     self.assertTrue(content.meta_updated)
     self.assertFalse(content.blob_updated)
     self.assertEqual({self.r2, self.r3}, r1.dependencies.implicit)
示例#10
0
    def test_mains_with_filter(self):
        r1 = SimpleCell('user/block/r1.h', CPP)
        r2 = SimpleCell('user/block/r2.cpp', CPP)
        r3 = SimpleCell('user/block/no_mains/r3.cpp', CPP)
        r4 = SimpleCell('user/block/no_mains/r4.cpp', CPP)
        r5 = SimpleCell('user/block/' + BIICODE_FILE)
        r6 = SimpleCell('user/block/new_mains/r6.cpp', CPP)
        r7 = SimpleCell('user/block/new_mains/r7.cpp', CPP)
        r8 = SimpleCell('user/block/exe_file1.hh', CPP)
        r9 = SimpleCell('user/block/exe_file2.hh', CPP)

        res = {
            r1.name:
            Resource(r1, Content(None, Blob(''))),
            r2.name:
            Resource(r2, Content(None, Blob(''))),
            r3.name:
            Resource(r3, Content(None, Blob('int main(char* argv){}'))),
            r4.name:
            Resource(r4, Content(None, Blob('int main(char* argv){}'))),
            r5.name:
            Resource(
                r5,
                Content(None,
                        Blob('[mains]\n!no_mains/*\nnew_mains/*\n*.hh'))),
            r6.name:
            Resource(r6, Content(None, Blob(''))),
            r7.name:
            Resource(r7, Content(None, Blob(''))),
            r8.name:
            Resource(r8, Content(None, Blob(''))),
            r9.name:
            Resource(r9, Content(None, Blob('')))
        }

        block_holder = BlockHolder(BlockName('user/block'), res)

        process_holder(block_holder, ParseProcessor())
        self.assertTrue(res['user/block/no_mains/r3.cpp'].cell.hasMain)
        self.assertTrue(res['user/block/no_mains/r4.cpp'].cell.hasMain)
        self.assertFalse(res['user/block/new_mains/r6.cpp'].cell.hasMain)
        self.assertFalse(res['user/block/new_mains/r7.cpp'].cell.hasMain)
        self.assertFalse(res['user/block/exe_file1.hh'].cell.hasMain)
        self.assertFalse(res['user/block/exe_file2.hh'].cell.hasMain)

        process_holder(block_holder, MainConfigProcessor())

        # Checks
        self.assertFalse(res['user/block/r1.h'].cell.hasMain)
        self.assertFalse(res['user/block/r2.cpp'].cell.hasMain)
        self.assertFalse(res['user/block/no_mains/r3.cpp'].cell.hasMain)
        self.assertFalse(res['user/block/no_mains/r4.cpp'].cell.hasMain)
        self.assertTrue(res['user/block/new_mains/r6.cpp'].cell.hasMain)
        self.assertTrue(res['user/block/new_mains/r7.cpp'].cell.hasMain)
        self.assertTrue(res['user/block/exe_file1.hh'].cell.hasMain)
        self.assertTrue(res['user/block/exe_file2.hh'].cell.hasMain)
    def test_old_format_add_explicit(self):
        my_conf = '+r1.h r2.cpp'
        block_holder = self._prepare_context(my_conf)
        process_holder(block_holder, self.processor)

        content = block_holder[self.r1.cell_name].content
        self.assertTrue(content.meta_updated)
        self.assertFalse(content.blob_updated)
        r1 = block_holder[self.r1.cell_name].cell
        self.assertEqual({self.r2}, r1.dependencies.implicit)
        self.assertEqual(set(), r1.dependencies.exclude_from_build)
示例#12
0
    def test_old_format_add_explicit(self):
        my_conf = '+r1.h r2.cpp'
        block_holder = self._prepare_context(my_conf)
        process_holder(block_holder, self.processor)

        content = block_holder[self.r1.cell_name].content
        self.assertTrue(content.meta_updated)
        self.assertFalse(content.blob_updated)
        r1 = block_holder[self.r1.cell_name].cell
        self.assertEqual({self.r2}, r1.dependencies.implicit)
        self.assertEqual(set(), r1.dependencies.exclude_from_build)
示例#13
0
    def test_basic_assign(self, ):
        my_conf = 'r1.h = r2.cpp'
        block_holder = self._prepare_context(my_conf)
        block_holder[self.r1.cell_name].cell.dependencies.implicit.add(self.r3)
        process_holder(block_holder, self.processor)

        content = block_holder[self.r1.cell_name].content
        self.assertTrue(content.meta_updated)
        self.assertFalse(content.blob_updated)
        r1 = block_holder[self.r1.cell_name].cell
        self.assertEqual({self.r2}, r1.dependencies.implicit)
        self.assertEqual(set(), r1.dependencies.exclude_from_build)
    def test_basic_assign(self,):
        my_conf = 'r1.h = r2.cpp'
        block_holder = self._prepare_context(my_conf)
        block_holder[self.r1.cell_name].cell.dependencies.implicit.add(self.r3)
        process_holder(block_holder, self.processor)

        content = block_holder[self.r1.cell_name].content
        self.assertTrue(content.meta_updated)
        self.assertFalse(content.blob_updated)
        r1 = block_holder[self.r1.cell_name].cell
        self.assertEqual({self.r2}, r1.dependencies.implicit)
        self.assertEqual(set(), r1.dependencies.exclude_from_build)
示例#15
0
    def not_delete_dependant_test(self):
        """ A resolved dependency in the same block must NOT be removed if that exist """
        sphereh = 'dummy/geom/sphere.h'
        block_holder = self._cells_setup('dummy/geom', ['main.cpp', 'sphere.h'], CPP)

        main_cell = block_holder['main.cpp'].cell
        main_cell.dependencies.explicit = {BlockCellName(sphereh)}
        main_cell.dependencies.system = {SystemCellName('iostream')}
        main_cell.dependencies.resolved = {CPPDeclaration('sphere.h'), CPPDeclaration('iostream')}
        process_holder(block_holder, DependenciesProcessor())
        # Checks
        self.check_dependency_set(main_cell.dependencies, resolved=['sphere.h', 'iostream'],
                                   explicit=[sphereh], system=['iostream'])
示例#16
0
    def virtual_dependencies_test(self):
        sphereh = 'dummy/geom/sphere.h'
        sphereh_test = 'dummy/geom/test/sphere.h'
        sphereh_dev = 'dummy/geom/develop/sphere.h'

        block_holder = self._cells_setup(
            'dummy/geom',
            ['main.cpp', 'test/sphere.h', 'main2.cpp', 'develop/sphere.h'],
            CPP)
        block_holder._resources['sphere.h'] = Resource(VirtualCell(sphereh),
                                                       None)
        block_holder['test/sphere.h'].cell.container = BlockCellName(sphereh)
        block_holder['develop/sphere.h'].cell.container = BlockCellName(
            sphereh)
        block_holder['main.cpp'].cell.dependencies.unresolved = {
            CPPDeclaration(sphereh_test)
        }
        block_holder['main2.cpp'].cell.dependencies.unresolved = {
            CPPDeclaration(sphereh_dev)
        }
        _, outputstream = process_holder(block_holder, DependenciesProcessor())
        warn = 'Block dummy/geom has absolute paths, like: #include "dummy/geom/develop/sphere.h"'
        self.assertIn(warn, str(outputstream))

        # Checks
        main_cell = block_holder['main.cpp'].cell
        self.check_dependency_set(main_cell.dependencies,
                                  resolved=[sphereh_test],
                                  explicit=[sphereh])
        main_cell = block_holder['main2.cpp'].cell
        self.check_dependency_set(main_cell.dependencies,
                                  resolved=[sphereh_dev],
                                  explicit=[sphereh])
    def simple_dependencies_cpp_test(self):
        block_holder = self._cells_setup(
            'dummy/geom', ['sphere.h', 'sphere.cpp', 'main.cpp'], CPP)
        # Parse processor setup

        block_holder['main.cpp'].cell.dependencies.unresolved = {
            CPPDeclaration('iostream'),
            CPPDeclaration('sphere.h')
        }
        block_holder['sphere.cpp'].cell.dependencies.unresolved = {
            CPPDeclaration('math.h'),
            CPPDeclaration('iostream'),
            CPPDeclaration('sphere.h')
        }
        changes, _ = process_holder(block_holder, DependenciesProcessor())
        # Checks
        self.assert_bii_equal(changes, ProcessorChanges())
        mainR = block_holder['main.cpp'].cell
        self.check_dependency_set(mainR.dependencies,
                                  resolved=['sphere.h', 'iostream'],
                                  explicit=['dummy/geom/sphere.h'],
                                  system=['iostream'])

        sphereR = block_holder['sphere.cpp'].cell
        self.check_dependency_set(sphereR.dependencies,
                                  resolved=['sphere.h', 'iostream', 'math.h'],
                                  explicit=['dummy/geom/sphere.h'],
                                  system=['iostream', 'math.h'])
 def test_process_config_file_with_partial_wildcard(self):
     my_conf = '''*1.h + r2.cpp r3.cpp'''
     block_holder = self._prepare_context(my_conf)
     changes, _ = process_holder(block_holder, self.processor)
     self.assertEqual(0, len(changes.upserted))
     r1 = block_holder[self.r1.cell_name].cell
     self.assertEqual({self.r2, self.r3}, r1.dependencies.implicit)
 def test_process_config_file_with_partial_wildcard(self):
     my_conf = '''*1.h + r2.cpp r3.cpp'''
     block_holder = self._prepare_context(my_conf)
     changes, _ = process_holder(block_holder, self.processor)
     self.assertEqual(0, len(changes.upserted))
     r1 = block_holder[self.r1.cell_name].cell
     self.assertEqual({self.r2, self.r3}, r1.dependencies.implicit)
 def test_process_config_file_with_other_block_dep(self):
     my_conf = '''r1.h + r23.cpp'''
     block_holder = self._prepare_context(my_conf)
     changes, biiout = process_holder(block_holder, self.processor)
     self.assertIn('There are no files matching pattern r23.cpp', str(biiout))
     self.assertEqual(0, len(changes.upserted))
     r1 = block_holder[self.r1.cell_name].cell
     self.assertEqual(set(), r1.dependencies.implicit)
 def test_process_config_file_with_partial_wildcard_and_cell_patterns(self):
     my_conf = '''*1.h + *.cpp r23.cpp'''
     block_holder = self._prepare_context(my_conf)
     changes, biiout = process_holder(block_holder, self.processor)
     self.assertIn('There are no files matching pattern r23.cpp', str(biiout))
     self.assertEqual(0, len(changes.upserted))
     r1 = block_holder[self.r1.cell_name].cell
     self.assertEqual({self.r2, self.r3}, r1.dependencies.implicit)
示例#22
0
 def test_config_unknown_file_main(self):
     main_conf = r'''r90.h'''
     self.prepare_context(main_conf)
     response = process_holder(self.block_holder, self.processor)
     # Checks
     self.assertIn("user/block mains: there aren't any matches with r90.h filter",
                   str(response))
     self.assertFalse(self.res['user/block/r1.h'].cell.hasMain)
     self.assertFalse(self.res['user/block/r2.cpp'].cell.hasMain)
    def test_old_format_add_explicit(self):
        my_conf = '+r1.h r2.cpp'
        block_holder = self._prepare_context(my_conf)
        changes, _ = process_holder(block_holder, self.processor)

        self.assertEqual(0, len(changes.upserted))
        r1 = block_holder[self.r1.cell_name].cell
        self.assertEqual({self.r2}, r1.dependencies.implicit)
        self.assertEqual(set(), r1.dependencies.exclude_from_build)
 def test_process_config_file_with_other_block_dep(self):
     my_conf = '''r1.h + r23.cpp'''
     block_holder = self._prepare_context(my_conf)
     changes, biiout = process_holder(block_holder, self.processor)
     self.assertIn('There are no files matching pattern r23.cpp',
                   str(biiout))
     self.assertEqual(0, len(changes.upserted))
     r1 = block_holder[self.r1.cell_name].cell
     self.assertEqual(set(), r1.dependencies.implicit)
 def test_process_config_file_with_partial_wildcard_and_cell_patterns(self):
     my_conf = '''*1.h + *.cpp r23.cpp'''
     block_holder = self._prepare_context(my_conf)
     changes, biiout = process_holder(block_holder, self.processor)
     self.assertIn('There are no files matching pattern r23.cpp',
                   str(biiout))
     self.assertEqual(0, len(changes.upserted))
     r1 = block_holder[self.r1.cell_name].cell
     self.assertEqual({self.r2, self.r3}, r1.dependencies.implicit)
    def test_old_format_add_explicit(self):
        my_conf = '+r1.h r2.cpp'
        block_holder = self._prepare_context(my_conf)
        changes, _ = process_holder(block_holder, self.processor)

        self.assertEqual(0, len(changes.upserted))
        r1 = block_holder[self.r1.cell_name].cell
        self.assertEqual({self.r2}, r1.dependencies.implicit)
        self.assertEqual(set(), r1.dependencies.exclude_from_build)
    def test_basic_assign(self, ):
        my_conf = 'r1.h = r2.cpp'
        block_holder = self._prepare_context(my_conf)
        block_holder[self.r1.cell_name].cell.dependencies.implicit.add(self.r3)
        changes, _ = process_holder(block_holder, self.processor)

        self.assertEqual(0, len(changes.upserted))
        r1 = block_holder[self.r1.cell_name].cell
        self.assertEqual({self.r2}, r1.dependencies.implicit)
        self.assertEqual(set(), r1.dependencies.exclude_from_build)
示例#28
0
    def test_mains_with_filter(self):
        r1 = SimpleCell('user/block/r1.h', CPP)
        r2 = SimpleCell('user/block/r2.cpp', CPP)
        r3 = SimpleCell('user/block/no_mains/r3.cpp', CPP)
        r4 = SimpleCell('user/block/no_mains/r4.cpp', CPP)
        r5 = SimpleCell('user/block/' + BIICODE_FILE)
        r6 = SimpleCell('user/block/new_mains/r6.cpp', CPP)
        r7 = SimpleCell('user/block/new_mains/r7.cpp', CPP)
        r8 = SimpleCell('user/block/exe_file1.hh', CPP)
        r9 = SimpleCell('user/block/exe_file2.hh', CPP)

        res = {r1.name: Resource(r1, Content(None, Blob(''))),
               r2.name: Resource(r2, Content(None, Blob(''))),
               r3.name: Resource(r3, Content(None, Blob('int main(char* argv){}'))),
               r4.name: Resource(r4, Content(None, Blob('int main(char* argv){}'))),
               r5.name: Resource(r5, Content(None, Blob('[mains]\n!no_mains/*\nnew_mains/*\n*.hh'))),
               r6.name: Resource(r6, Content(None, Blob(''))),
               r7.name: Resource(r7, Content(None, Blob(''))),
               r8.name: Resource(r8, Content(None, Blob(''))),
               r9.name: Resource(r9, Content(None, Blob('')))
               }

        block_holder = BlockHolder(BlockName('user/block'), res)

        process_holder(block_holder, ParseProcessor())
        self.assertTrue(res['user/block/no_mains/r3.cpp'].cell.hasMain)
        self.assertTrue(res['user/block/no_mains/r4.cpp'].cell.hasMain)
        self.assertFalse(res['user/block/new_mains/r6.cpp'].cell.hasMain)
        self.assertFalse(res['user/block/new_mains/r7.cpp'].cell.hasMain)
        self.assertFalse(res['user/block/exe_file1.hh'].cell.hasMain)
        self.assertFalse(res['user/block/exe_file2.hh'].cell.hasMain)

        process_holder(block_holder, MainConfigProcessor())

        # Checks
        self.assertFalse(res['user/block/r1.h'].cell.hasMain)
        self.assertFalse(res['user/block/r2.cpp'].cell.hasMain)
        self.assertFalse(res['user/block/no_mains/r3.cpp'].cell.hasMain)
        self.assertFalse(res['user/block/no_mains/r4.cpp'].cell.hasMain)
        self.assertTrue(res['user/block/new_mains/r6.cpp'].cell.hasMain)
        self.assertTrue(res['user/block/new_mains/r7.cpp'].cell.hasMain)
        self.assertTrue(res['user/block/exe_file1.hh'].cell.hasMain)
        self.assertTrue(res['user/block/exe_file2.hh'].cell.hasMain)
 def test_process_config_file_with_partial_wildcard_and_cell_patterns(self):
     my_conf = '''*1.h + *.cpp r23.cpp'''
     block_holder = self._prepare_context(my_conf)
     biiout = process_holder(block_holder, self.processor)
     self.assertIn('There are no files matching pattern r23.cpp', str(biiout))
     r1 = block_holder[self.r1.cell_name].cell
     content = block_holder[self.r1.cell_name].content
     self.assertTrue(content.meta_updated)
     self.assertFalse(content.blob_updated)
     self.assertEqual({self.r2, self.r3}, r1.dependencies.implicit)
    def test_basic_assign(self,):
        my_conf = 'r1.h = r2.cpp'
        block_holder = self._prepare_context(my_conf)
        block_holder[self.r1.cell_name].cell.dependencies.implicit.add(self.r3)
        changes, _ = process_holder(block_holder, self.processor)

        self.assertEqual(0, len(changes.upserted))
        r1 = block_holder[self.r1.cell_name].cell
        self.assertEqual({self.r2}, r1.dependencies.implicit)
        self.assertEqual(set(), r1.dependencies.exclude_from_build)
 def test_process_config_file_with_other_block_dep(self):
     my_conf = '''r1.h + r23.cpp'''
     block_holder = self._prepare_context(my_conf)
     biiout = process_holder(block_holder, self.processor)
     self.assertIn('There are no files matching pattern r23.cpp', str(biiout))
     content = block_holder[self.r1.cell_name].content
     self.assertTrue(content.meta_updated)
     self.assertFalse(content.blob_updated)
     r1 = block_holder[self.r1.cell_name].cell
     self.assertEqual(set(), r1.dependencies.implicit)
示例#32
0
 def test_process_config_file_with_partial_wildcard_and_cell_patterns(self):
     my_conf = '''*1.h + *.cpp r23.cpp'''
     block_holder = self._prepare_context(my_conf)
     biiout = process_holder(block_holder, self.processor)
     self.assertIn('There are no files matching pattern r23.cpp',
                   str(biiout))
     r1 = block_holder[self.r1.cell_name].cell
     content = block_holder[self.r1.cell_name].content
     self.assertTrue(content.meta_updated)
     self.assertFalse(content.blob_updated)
     self.assertEqual({self.r2, self.r3}, r1.dependencies.implicit)
示例#33
0
 def test_process_config_file_with_other_block_dep(self):
     my_conf = '''r1.h + r23.cpp'''
     block_holder = self._prepare_context(my_conf)
     biiout = process_holder(block_holder, self.processor)
     self.assertIn('There are no files matching pattern r23.cpp',
                   str(biiout))
     content = block_holder[self.r1.cell_name].content
     self.assertTrue(content.meta_updated)
     self.assertFalse(content.blob_updated)
     r1 = block_holder[self.r1.cell_name].cell
     self.assertEqual(set(), r1.dependencies.implicit)
    def test_delete_main(self):
        r1 = SimpleCell('user/block/r1.h', CPP)
        r2 = SimpleCell('user/block/r2.cpp', CPP)
        r3 = SimpleCell('user/block/r3.cpp', CPP)
        r4 = SimpleCell('user/block/' + BIICODE_FILE)

        res = {r1.name: Resource(r1, Content(None, Blob(''))),
               r2.name: Resource(r2, Content(None, Blob(''))),
               r3.name: Resource(r3, Content(None, Blob('int main(char* argv){}'))),
               r4.name: Resource(r4, Content(None, Blob('[mains]\n !r3.cpp')))}

        block_holder = BlockHolder(BlockName('user/block'), res)

        process_holder(block_holder, ParseProcessor())
        self.assertTrue(res['user/block/r3.cpp'].cell.hasMain)

        process_holder(block_holder, MainConfigProcessor())
        # Checks
        self.assertFalse(res['user/block/r1.h'].cell.hasMain)
        self.assertFalse(res['user/block/r2.cpp'].cell.hasMain)
        self.assertFalse(res['user/block/r3.cpp'].cell.hasMain)
示例#35
0
    def test_duplicated_first_level(self):
        brls = {'gtest1': 'dummy/block/include/gtest/gtest.h',
                'getest2': 'dummy/block/fused-src/gtest/gtest.h',
                'getest-all1': 'dummy/block/fused-src/gtest/gtest-all.cc',
                'getest-all2': 'dummy/block/src/gtest-all.cc',
                'sample': 'dummy/block/samples/sample_unittest.cc'
                }
        cells = {x: SimpleCell(x) for x in brls.values()}
        cells_names = [x.name.cell_name for x in cells.itervalues()]
        block_holder = self._cells_setup('dummy/block', cells_names, CPP)

        getest_all1 = block_holder['fused-src/gtest/gtest-all.cc'].cell
        getest_all1.dependencies.unresolved = {CPPDeclaration('gtest.h')}
        getest_all2 = block_holder['src/gtest-all.cc'].cell
        getest_all2.dependencies.unresolved = {CPPDeclaration('gtest.h')}
        sample = block_holder['samples/sample_unittest.cc'].cell
        sample.dependencies.unresolved = {CPPDeclaration('gtest.h')}
        process_holder(block_holder, DependenciesProcessor())
        # Checks
        self.assertEquals(0, len(getest_all1.dependencies.unresolved))
        self.assertEquals(1, len(getest_all2.dependencies.unresolved))
        self.assertEquals(1, len(sample.dependencies.unresolved))
示例#36
0
    def test_duplicated_first_level(self):
        brls = {'gtest1': 'dummy/block/include/gtest/gtest.h',
                'getest2': 'dummy/block/fused-src/gtest/gtest.h',
                'getest-all1': 'dummy/block/fused-src/gtest/gtest-all.cc',
                'getest-all2': 'dummy/block/src/gtest-all.cc',
                'sample': 'dummy/block/samples/sample_unittest.cc'
                }
        cells = {x: SimpleCell(x) for x in brls.values()}
        cells_names = [x.name.cell_name for x in cells.itervalues()]
        block_holder = self._cells_setup('dummy/block', cells_names, CPP)

        getest_all1 = block_holder['fused-src/gtest/gtest-all.cc'].cell
        getest_all1.dependencies.unresolved = {CPPDeclaration('gtest.h')}
        getest_all2 = block_holder['src/gtest-all.cc'].cell
        getest_all2.dependencies.unresolved = {CPPDeclaration('gtest.h')}
        sample = block_holder['samples/sample_unittest.cc'].cell
        sample.dependencies.unresolved = {CPPDeclaration('gtest.h')}
        process_holder(block_holder, DependenciesProcessor())
        # Checks
        self.assertEquals(0, len(getest_all1.dependencies.unresolved))
        self.assertEquals(1, len(getest_all2.dependencies.unresolved))
        self.assertEquals(1, len(sample.dependencies.unresolved))
示例#37
0
    def test_include_partial(self):
        brls = {'main': 'dummy/block/main.cpp',
                'astar': 'dummy/block/algorithms/astar.h',
                'solver_h': 'dummy/block/solver/solver.h',
                'solver_cpp': 'dummy/block/solver/solver.cpp'
                }
        cells = {x: SimpleCell(x) for x in brls.values()}
        cells_names = [x.name.cell_name for x in cells.itervalues()]
        block_holder = self._cells_setup('dummy/block', cells_names, CPP)

        main = block_holder['main.cpp'].cell
        main.dependencies.unresolved = {CPPDeclaration('solver/solver.h')}
        solver_h = block_holder['solver/solver.h'].cell
        solver_h.dependencies.unresolved = {CPPDeclaration('../algorithms/astar.h')}
        solver_cpp = block_holder['solver/solver.cpp'].cell
        solver_cpp.dependencies.unresolved = {CPPDeclaration('solver.h')}

        process_holder(block_holder, DependenciesProcessor())
        # Checks
        self.assertEquals(set(), cells[brls['main']].dependencies.unresolved)
        self.assertEquals(set(), cells[brls['solver_h']].dependencies.unresolved)
        self.assertEquals(set(), cells[brls['solver_cpp']].dependencies.unresolved)
示例#38
0
    def test_duplicated_n_level(self):
        brls = {'gtest1': 'dummy/block/a1/b/c/gtest/gtest.h',
                'getest2': 'dummy/block/a2/gtest/gtest.h',
                'getest-all1': 'dummy/block/a1/gtest-all.cc',
                'getest-all2': 'dummy/block/a3/gtest-all.cc',
                'getest-all3': 'dummy/block/a1/b2/gtest-all.cc',
                }
        cells = {x: SimpleCell(x) for x in brls.values()}
        cells_names = [x.name.cell_name for x in cells.itervalues()]
        block_holder = self._cells_setup('dummy/block', cells_names, CPP)

        getest_all1 = block_holder['a1/gtest-all.cc'].cell
        getest_all1.dependencies.unresolved = {CPPDeclaration('b/c/gtest/gtest.h')}
        getest_all2 = block_holder['a3/gtest-all.cc'].cell
        getest_all2.dependencies.unresolved = {CPPDeclaration('gtest.h')}
        getest_all3 = block_holder['a1/b2/gtest-all.cc'].cell
        getest_all3.dependencies.unresolved = {CPPDeclaration('../b/c/gtest/gtest.h')}
        process_holder(block_holder, DependenciesProcessor())
        # Checks
        self.assertEquals(0, len(getest_all1.dependencies.unresolved))
        self.assertEquals(1, len(getest_all2.dependencies.unresolved))
        self.assertEquals(0, len(getest_all3.dependencies.unresolved))
    def simple_dependencies_cpp_test(self):
        block_holder = self._cells_setup('dummy/geom', ['sphere.h', 'sphere.cpp', 'main.cpp'], CPP)
        # Parse processor setup

        block_holder['main.cpp'].cell.dependencies.unresolved = {CPPDeclaration('iostream'),
                                                           CPPDeclaration('sphere.h')}
        block_holder['sphere.cpp'].cell.dependencies.unresolved = {CPPDeclaration('math.h'),
                                                                CPPDeclaration('iostream'),
                                                                CPPDeclaration('sphere.h')}
        process_holder(block_holder, DependenciesProcessor())
        # Checks
        mainR = block_holder['main.cpp'].cell
        self.check_dependency_set(mainR.dependencies,
                                   resolved=['sphere.h', 'iostream'],
                                   explicit=['dummy/geom/sphere.h'],
                                   system=['iostream'])

        sphereR = block_holder['sphere.cpp'].cell
        self.check_dependency_set(sphereR.dependencies,
                                   resolved=['sphere.h', 'iostream', 'math.h'],
                                   explicit=['dummy/geom/sphere.h'],
                                   system=['iostream', 'math.h'])
示例#40
0
    def virtual_dependencies_test(self):
        sphereh = 'dummy/geom/sphere.h'
        sphereh_test = 'dummy/geom/test/sphere.h'
        sphereh_dev = 'dummy/geom/develop/sphere.h'

        block_holder = self._cells_setup('dummy/geom', ['main.cpp', 'test/sphere.h', 'main2.cpp',
                                                   'develop/sphere.h'], CPP)
        block_holder._resources['sphere.h'] = Resource(VirtualCell(sphereh), None)
        block_holder['test/sphere.h'].cell.container = BlockCellName(sphereh)
        block_holder['develop/sphere.h'].cell.container = BlockCellName(sphereh)
        block_holder['main.cpp'].cell.dependencies.unresolved = {CPPDeclaration(sphereh_test)}
        block_holder['main2.cpp'].cell.dependencies.unresolved = {CPPDeclaration(sphereh_dev)}
        _, outputstream = process_holder(block_holder, DependenciesProcessor())
        warn = 'Block dummy/geom has absolute paths, like: #include "dummy/geom/develop/sphere.h"'
        self.assertIn(warn, str(outputstream))

        # Checks
        main_cell = block_holder['main.cpp'].cell
        self.check_dependency_set(main_cell.dependencies, resolved=[sphereh_test],
                                   explicit=[sphereh])
        main_cell = block_holder['main2.cpp'].cell
        self.check_dependency_set(main_cell.dependencies, resolved=[sphereh_dev],
                                   explicit=[sphereh])
 def test_empty_process_config_file(self):
     my_conf = ''
     block_holder = self._prepare_context(my_conf)
     changes, _ = process_holder(block_holder, self.processor)
     self.assertEqual(0, len(changes.upserted))
示例#42
0
 def test_process_config_file_with_unknown_target(self):
     my_conf = '''r8.h + r2.cpp r3.cpp'''
     block_holder = self._prepare_context(my_conf)
     biiout = process_holder(block_holder, self.processor)
     self.assertIn('There are no files matching pattern r8.h', str(biiout))
 def test_empty_process_config_file(self):
     my_conf = ''
     block_holder = self._prepare_context(my_conf)
     changes, _ = process_holder(block_holder, self.processor)
     self.assertEqual(0, len(changes.upserted))
 def test_process_config_file_with_unknown_target(self):
     my_conf = '''r8.h + r2.cpp r3.cpp'''
     block_holder = self._prepare_context(my_conf)
     biiout = process_holder(block_holder, self.processor)
     self.assertIn('There are no files matching pattern r8.h', str(biiout))