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 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 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)
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())
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))
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)
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)
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)
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'])
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_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_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_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_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)
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)
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))
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_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'])
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))
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))