def init_files(self, vs_project, cmake_lists): """ Initialize opening of CMakeLists.txt and VS Project files :param vs_project: Visual Studio project file path :type vs_project: str :param cmake_lists: CMakeLists.txt file path :type cmake_lists: str """ # VS Project (.vcxproj) if vs_project: temp_path = os.path.splitext(vs_project) if temp_path[1] == '.vcxproj': send('Project to convert = ' + vs_project, '') self.data['vcxproj'] = get_vcxproj_data(vs_project) else: # pragma: no cover send('This file is not a ".vcxproj". Be sure you give the right file', 'error') exit(1) # Cmake Porject (CMakeLists.txt) if cmake_lists: if os.path.exists(cmake_lists): self.data['cmake'] = get_cmake_lists(cmake_lists) if not self.data['cmake']: send( 'CMakeLists.txt path is not set. ' 'He will be generated in current directory.', 'warn' ) self.data['cmake'] = get_cmake_lists()
def init_files(self, vs_project, cmake_lists): """ Initialize opening of CMake and VS Project files :param vs_project: Visual Studio project file path :type vs_project: str :param cmake_lists: CMakeLists.txt file path :type cmake_lists: str """ # VS Project (.vcxproj) if vs_project: temp_path = os.path.splitext(vs_project) if temp_path[1] == '.vcxproj': send('Project to convert = ' + vs_project, '') self.data['vcxproj'] = get_vcxproj_data(vs_project) else: # pragma: no cover send( 'This file is not a ".vcxproj". Be sure you give the right file', 'error') exit(1) # CMakeLists if cmake_lists: if os.path.exists(cmake_lists): self.data['cmake'] = get_cmake_lists(cmake_lists) if not self.data['cmake']: send( 'CMakeLists.txt path is not set. ' 'He will be generated in current directory.', 'warn') self.data['cmake'] = get_cmake_lists()
def init_files(self, vs_project, cmake_lists): """ Initialize opening of CMakeLists.txt and VS Project files :param vs_project: Visual Studio project file path :type vs_project: str :param cmake_lists: CMakeLists.txt file path :type cmake_lists: str """ # VS Project (.vcxproj) temp_path = os.path.splitext(vs_project) if temp_path[1] == '.vcxproj': message('Path to project = %s' % vs_project, '') self.data['vcxproj'] = get_vcxproj_data(vs_project) else: # pragma: no cover message( 'This file is not a ".vcxproj". Be sure you give the right file', 'error') exit(1) # CMake Project (CMakeLists.txt) if os.path.exists(cmake_lists): self.data['cmake'] = get_cmake_lists(cmake_lists) else: message( 'The path given for the CMakeLists does not exist ! ' 'He will be generated in current directory.', 'error') self.data['cmake'] = get_cmake_lists() self.write_cmake_headers(vs_project)
class TestFlags(unittest2.TestCase): """ This file test methods of Flags class. """ cur_dir = os.path.dirname(os.path.realpath(__file__)) vs_project = get_vcxproj_data('%s/datatest/foo.vcxproj' % cur_dir) cmake_lists_test = get_cmake_lists('./') data_test = { 'cmake': cmake_lists_test, 'cmake_output': None, 'vcxproj': vs_project, 'dependencies': None, 'includes': None, 'additional_code': None, 'std': None, } def test_define_linux_flags_with_std(self): """Define Linux Flags""" self.data_test['cmake'] = get_cmake_lists('./') self.data_test['std'] = 'c++17' under_test = Flags(self.data_test) under_test.define_linux_flags() self.data_test['cmake'].close() cmakelists_test = open('%s/CMakeLists.txt' % self.cur_dir, 'r') content_test = cmakelists_test.read() self.assertTrue('-std=c++17' in content_test) cmakelists_test.close() self.data_test['cmake'] = get_cmake_lists('./') self.data_test['std'] = 'c++19' under_test = Flags(self.data_test) under_test.define_linux_flags() self.data_test['cmake'].close() cmakelists_test = open('%s/CMakeLists.txt' % self.cur_dir, 'r') content_test = cmakelists_test.read() self.assertTrue('-std=c++11' in content_test) cmakelists_test.close() def test_define_group_properties(self): """Define XML Groups Properties""" under_test = Flags(self.data_test) self.assertFalse(under_test.propertygroup) self.assertFalse(under_test.definitiongroups) under_test.define_settings() under_test.define_group_properties() self.assertTrue(under_test.propertygroup) self.assertTrue(under_test.definitiongroups)
def test_get_vcxproj_data(self): """Get VS Project Data""" under_test = get_vcxproj_data(self.vs_project) self.assertTrue('ns' in under_test) self.assertEqual( {'ns': 'http://schemas.microsoft.com/developer/msbuild/2003'}, under_test['ns']) self.assertTrue('tree' in under_test) self.assertIsInstance(under_test['tree'], lxml.etree._ElementTree)
def test_get_vcxproj_data(self): """Get VS Project Data""" under_test = get_vcxproj_data(self.vs_project) self.assertTrue('ns' in under_test) self.assertEqual( {'ns': 'http://schemas.microsoft.com/developer/msbuild/2003'}, under_test['ns'] ) self.assertTrue('tree' in under_test) self.assertIsInstance(under_test['tree'], lxml.etree._ElementTree)
def parse(self, context): context.xml_data = get_vcxproj_data(context, context.vcxproj_path) filters_file = get_actual_filename(context, context.vcxproj_path + '.filters') if filters_file is not None: self.filters = get_xml_data(context, filters_file) tree = context.xml_data['tree'] root = tree.getroot() context.current_node = root self._parse_nodes(context, root) context.current_node = None context.flags.apply_flags_to_context(context) context.files.apply_files_to_context(context) context.dependencies.apply_target_dependency_packages(context) if context.sources: context.flags.define_pch_cpp_file(context)
def get_dependency_target_name(context, vs_project): """ Return dependency target name :param context: the context of converter :type context: Context :param vs_project: path to ".vcxproj" file :type vs_project: str :return: target name :rtype: str """ vcxproj = get_vcxproj_data(context, vs_project) project_name = get_global_project_name_from_vcxproj_file(vcxproj) if project_name: return project_name return os.path.splitext(ntpath.basename(vs_project))[0]
def get_dependency_target_name(self, vs_project): """ Return dependency target name of VS Project :param vs_project: the .vcxproj file :type vs_project: str :return: project name or empty string :rtype: str """ if vs_project: vcxproj_xml = get_vcxproj_data( os.path.join(os.path.dirname(self.origin_project), vs_project)) root_projectname = vcxproj_xml['tree'].xpath('//ns:RootNamespace', namespaces=self.ns) if root_projectname: projectname = root_projectname[0] if projectname.text: return projectname.text return ''
class TestDependencies(unittest2.TestCase): """ This file test methods of Dependencies class. """ cur_dir = os.path.dirname(os.path.realpath(__file__)) vs_project = get_vcxproj_data('%s/datatest/foo.vcxproj' % cur_dir) cmake_lists_test = get_cmake_lists('./') data_test = { 'cmake': cmake_lists_test, 'cmake_output': None, 'vcxproj': vs_project, 'project': '%s/datatest/foo.vcxproj' % cur_dir, 'dependencies': [], 'includes': None, 'additional_code': None, 'std': None, } def test_init_dependencies(self): """Initialize Dependencies""" under_test = Dependencies(self.data_test) self.assertTrue(under_test.cmake) self.assertTrue(under_test.tree) self.assertTrue(under_test.ns) self.assertFalse(under_test.custom_dependencies) def test_write_include_dir(self): """Write Include Dirs""" self.data_test['cmake'] = get_cmake_lists('./') under_test = Dependencies(self.data_test) under_test.write_include_dir() self.data_test['cmake'].close() cmakelists_test = open('CMakeLists.txt') self.assertTrue( 'include_directories(../../../external/g3log/latest/src)' in cmakelists_test.read()) cmakelists_test.close() def test_write_dependencies(self): """Write Dependencies""" self.data_test['cmake'] = get_cmake_lists('./') under_test = Dependencies(self.data_test) # Add dependencies from ".vcxproj" under_test.write_dependencies() self.data_test['cmake'].close() cmakelists_test = open('CMakeLists.txt') content_test = cmakelists_test.read() print(content_test) self.assertTrue('add_subdirectory("${G3LOGGER_DIR}"' in content_test) self.assertTrue( 'link_directories(${DEPENDENCIES_DIR}/g3log)' in content_test) cmakelists_test.close() # Add dependencies from "parameters" dependencies = ['external/zlib/cmake/', '../../external/g3log/cmake/'] self.data_test['dependencies'] = dependencies self.data_test['cmake'] = get_cmake_lists('./') under_test = Dependencies(self.data_test) under_test.write_dependencies() self.data_test['cmake'].close() cmakelists_test = open('CMakeLists.txt') content_test = cmakelists_test.read() self.assertTrue( 'add_subdirectory(external/zlib/cmake/ ${CMAKE_BINARY_DIR}/lib1)' in content_test) self.assertTrue( 'add_subdirectory(../../external/g3log/cmake/ ${CMAKE_BINARY_DIR}/lib2)' in content_test) self.assertTrue( 'link_directories(${DEPENDENCIES_DIR}/g3log)' in content_test) cmakelists_test.close() def test_link_dependencies(self): """Link Dependencies""" self.data_test['cmake'] = get_cmake_lists('./') under_test = Dependencies(self.data_test) under_test.link_dependencies() self.data_test['cmake'].close() cmakelists_test = open('CMakeLists.txt') self.assertTrue( 'target_link_libraries(${PROJECT_NAME}' in cmakelists_test.read()) cmakelists_test.close()
class TestProjectVariables(unittest2.TestCase): """ This file test methods of ProjectVariables class. """ cur_dir = os.path.dirname(os.path.realpath(__file__)) vcxproj_data_test = get_vcxproj_data('%s/test_files/project_test.vcxproj' % cur_dir) cmake_lists_test = get_cmake_lists(cur_dir) data_test = { 'cmake': cmake_lists_test, 'cmake_output': None, 'vcxproj': vcxproj_data_test, 'dependencies': None, 'includes': None, 'additional_code': None, 'std': None, } def test_init_project_variables(self): """Initialize Project Variables""" under_test = ProjectVariables(self.data_test) self.assertTrue(under_test.tree) self.assertTrue(under_test.ns) self.assertTrue(under_test.cmake) self.assertFalse(under_test.output) self.assertIsNotNone(under_test.vs_outputs) # Class var are not None due to other tests self.assertIsNotNone(under_test.out_deb) self.assertIsNotNone(under_test.out_rel) def test_add_project_variables(self): """Add Project Variables""" self.data_test['cmake'] = get_cmake_lists(self.cur_dir) under_test = ProjectVariables(self.data_test) under_test.add_project_variables() self.data_test['cmake'].close() cmakelists_test = open('%s/CMakeLists.txt' % self.cur_dir, 'r') content_test = cmakelists_test.read() self.assertTrue('cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR)' in content_test) self.assertTrue('set(PROJECT_NAME core)' in content_test) cmakelists_test.close() def test_add_outputs_variables(self): """Add Outputs Variables""" # If NO output is given self.data_test['cmake'] = get_cmake_lists(self.cur_dir) under_test = ProjectVariables(self.data_test) under_test.add_project_variables() under_test.add_outputs_variables() self.data_test['cmake'].close() cmakelists_test = open('%s/CMakeLists.txt' % self.cur_dir, 'r') content_test = cmakelists_test.read() self.assertTrue('OUTPUT_DEBUG ../../../build/vc2017_x64d/bin/', content_test) self.assertTrue( 'OUTPUT_REL ../../../build/vc2017_x64/bin/' in content_test) cmakelists_test.close() # If output is given under_test.output = '../output_binaries' under_test.cmake = get_cmake_lists(self.cur_dir) under_test.add_outputs_variables() under_test.cmake.close() cmakelists_test = open('%s/CMakeLists.txt' % self.cur_dir, 'r') content_test = cmakelists_test.read() self.assertTrue('OUTPUT_DEBUG ../output_binaries/${CMAKE_BUILD_TYPE}', content_test) self.assertTrue('OUTPUT_REL ../output_binaries/${CMAKE_BUILD_TYPE}' in content_test) cmakelists_test.close() def test_add_cmake_project(self): """Add CMake Project""" self.data_test['cmake'] = get_cmake_lists(self.cur_dir) under_test = ProjectVariables(self.data_test) # Case CXX language under_test.add_cmake_project(['cpp']) self.data_test['cmake'].close() cmakelists_test = open('%s/CMakeLists.txt' % self.cur_dir, 'r') content_test = cmakelists_test.read() self.assertTrue('project(${PROJECT_NAME} CXX)' in content_test) cmakelists_test.close() # Case C language under_test.cmake = get_cmake_lists(self.cur_dir) under_test.add_cmake_project(['c']) under_test.cmake.close() cmakelists_test = open('%s/CMakeLists.txt' % self.cur_dir, 'r') content_test = cmakelists_test.read() self.assertTrue('project(${PROJECT_NAME} C)' in content_test) cmakelists_test.close() def test_add_default_target(self): """Add Release as Default Target""" self.data_test['cmake'] = get_cmake_lists(self.cur_dir) under_test = ProjectVariables(self.data_test) under_test.add_default_target() self.data_test['cmake'].close() cmakelists_test = open('%s/CMakeLists.txt' % self.cur_dir, 'r') content_test = cmakelists_test.read() self.assertTrue('set(CMAKE_BUILD_TYPE "Release")' in content_test) cmakelists_test.close() def test_add_artefact_target_outputs(self): """Add Artefact Target Outputs""" self.data_test['cmake'] = get_cmake_lists(self.cur_dir) under_test = ProjectVariables(self.data_test) under_test.add_artefact_target_outputs() self.data_test['cmake'].close() cmakelists_test = open('%s/CMakeLists.txt' % self.cur_dir, 'r') content_test = cmakelists_test.read() self.assertTrue( 'set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}")' in content_test) self.assertTrue( 'set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}")' in content_test) self.assertTrue( 'set(CMAKE_EXECUTABLE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}' in content_test) self.assertTrue( 'set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_REL}")' in content_test) self.assertTrue( 'set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_REL}")' in content_test) self.assertTrue( 'set(CMAKE_EXECUTABLE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_REL}' in content_test) cmakelists_test.close()
class TestFlags(unittest2.TestCase): """ This file test methods of Flags class. """ vcxproj_data_test = get_vcxproj_data('test/project_test.vcxproj') cmake_lists_test = get_cmake_lists('./') data_test = { 'cmake': cmake_lists_test, 'cmake_output': None, 'vcxproj': vcxproj_data_test, 'dependencies': None, 'includes': None, 'additional_code': None, } def test_init_dependencies(self): """Initialize Flags""" under_test = Flags(self.data_test) self.assertIsNotNone(under_test.tree) self.assertIsNotNone(under_test.ns) self.assertIsNotNone(under_test.propertygroup) self.assertTrue('debug' in under_test.propertygroup) self.assertTrue('release' in under_test.propertygroup) self.assertIsNotNone(under_test.definitiongroups) self.assertTrue('debug' in under_test.definitiongroups) self.assertTrue('release' in under_test.definitiongroups) self.assertFalse(under_test.win_deb_flags) self.assertFalse(under_test.win_rel_flags) def test_write_flags(self): """Write Flags""" self.data_test['cmake'] = get_cmake_lists('./') under_test = Flags(self.data_test) self.assertFalse(under_test.win_deb_flags) self.assertFalse(under_test.win_rel_flags) under_test.write_flags() self.assertTrue(under_test.win_deb_flags) self.assertEqual(' /W4 /MD /Od /Zi /EHsc', under_test.win_deb_flags) self.assertTrue(under_test.win_rel_flags) self.assertEqual(' /W4 /GL /Od /Oi /Gy /Zi /EHsc', under_test.win_rel_flags) self.data_test['cmake'].close() cmakelists_test = open('CMakeLists.txt', 'r') content_test = cmakelists_test.read() self.assertTrue(' /W4 /MD /Od /Zi /EHsc' in content_test) self.assertTrue(' /W4 /GL /Od /Oi /Gy /Zi /EHsc' in content_test) cmakelists_test.close() def test_define_linux_flags(self): """Define Linux Flags""" self.data_test['cmake'] = get_cmake_lists('./') under_test = Flags(self.data_test) under_test.define_linux_flags() self.data_test['cmake'].close() self.assertFalse(under_test.win_deb_flags) self.assertFalse(under_test.win_rel_flags) cmakelists_test = open('CMakeLists.txt', 'r') content_test = cmakelists_test.read() self.assertTrue('-std=c++11 -fPIC' in content_test) cmakelists_test.close() def test_define_windows_flags(self): """Define Windows Flags""" self.data_test['cmake'] = get_cmake_lists('./') under_test = Flags(self.data_test) under_test.define_group_properties() under_test.define_windows_flags() self.data_test['cmake'].close() self.assertTrue(under_test.win_deb_flags) self.assertTrue(under_test.win_rel_flags) cmakelists_test = open('CMakeLists.txt', 'r') content_test = cmakelists_test.read() self.assertFalse('-std=c++11 -fPIC' in content_test) self.assertTrue(' /W4 /MD /Od /Zi /EHsc' in content_test) self.assertTrue(' /W4 /GL /Od /Oi /Gy /Zi /EHsc' in content_test) cmakelists_test.close() def test_define_group_properties(self): """Define XML Groups Properties""" under_test = Flags(self.data_test) self.assertIsNone(under_test.propertygroup['debug']['x86']) self.assertIsNone(under_test.propertygroup['debug']['x64']) self.assertIsNone(under_test.propertygroup['release']['x86']) self.assertIsNone(under_test.propertygroup['release']['x64']) self.assertIsNone(under_test.definitiongroups['debug']['x86']) self.assertIsNone(under_test.definitiongroups['debug']['x64']) self.assertIsNone(under_test.definitiongroups['release']['x86']) self.assertIsNone(under_test.definitiongroups['release']['x64']) under_test.define_group_properties() self.assertIsNotNone(under_test.propertygroup['debug']['x86']) self.assertIsNotNone(under_test.propertygroup['debug']['x64']) self.assertIsNotNone(under_test.propertygroup['release']['x86']) self.assertIsNotNone(under_test.propertygroup['release']['x64']) self.assertIsNotNone(under_test.definitiongroups['debug']['x86']) self.assertIsNotNone(under_test.definitiongroups['debug']['x64']) self.assertIsNotNone(under_test.definitiongroups['release']['x86']) self.assertIsNotNone(under_test.definitiongroups['release']['x64']) property_test = '//ns:PropertyGroup[@Condition="\'$(Configuration)|$(Platform)\'==\'Debug|Win32\'" and @Label="Configuration"]' self.assertEqual(property_test, under_test.propertygroup['debug']['x86']) definition_test = '//ns:ItemDefinitionGroup[@Condition="\'$(Configuration)|$(Platform)\'==\'Debug|Win32\'"]' self.assertEqual(definition_test, under_test.definitiongroups['debug']['x86']) def test_set_warning_level(self): """Set Warning Level Flag""" under_test = Flags(self.data_test) under_test.set_warning_level() self.assertTrue('/W4' in under_test.win_deb_flags) self.assertTrue('/W4' in under_test.win_rel_flags) def test_set_whole_program_optimization(self): """Set Whole Program Optimization Flag""" under_test = Flags(self.data_test) under_test.define_group_properties() under_test.set_whole_program_optimization() self.assertFalse('/GL' in under_test.win_deb_flags) self.assertTrue('/GL' in under_test.win_rel_flags) def test_set_use_debug_libraries(self): """Set Use Debug Libraries Flag""" under_test = Flags(self.data_test) under_test.define_group_properties() under_test.set_use_debug_libraries() self.assertTrue('/MD' in under_test.win_deb_flags) self.assertFalse('/MD' in under_test.win_rel_flags) def test_set_runtime_library(self): """Set Runtime Library Flag""" under_test = Flags(self.data_test) under_test.define_group_properties() under_test.set_runtime_library() self.assertFalse('/MDd' in under_test.win_deb_flags) self.assertFalse('/MDd' in under_test.win_rel_flags) def test_set_optimization(self): """Set Optimization Flag""" under_test = Flags(self.data_test) under_test.define_group_properties() under_test.set_optimization() self.assertTrue('/Od' in under_test.win_deb_flags) self.assertTrue('/Od' in under_test.win_rel_flags) def test_set_intrinsic_functions(self): """Set Intrinsic Functions Flag""" under_test = Flags(self.data_test) under_test.define_group_properties() under_test.set_intrinsic_functions() self.assertFalse('/Oi' in under_test.win_deb_flags) self.assertTrue('/Oi' in under_test.win_rel_flags) def test_set_runtime_type_info(self): """Set runtime Type Info Flag""" under_test = Flags(self.data_test) under_test.define_group_properties() under_test.set_runtime_type_info() self.assertFalse('/GR' in under_test.win_deb_flags) self.assertFalse('/GR' in under_test.win_rel_flags) def test_set_function_level_linking(self): """Set Function Level Linking""" under_test = Flags(self.data_test) under_test.define_group_properties() under_test.set_function_level_linking() self.assertTrue('/Gy' in under_test.win_rel_flags) def test_set_generate_debug_information(self): """Set Generate Debug Information""" under_test = Flags(self.data_test) under_test.define_group_properties() under_test.set_generate_debug_information() self.assertTrue('/Zi' in under_test.win_deb_flags) self.assertTrue('/Zi' in under_test.win_rel_flags) def test_set_exception_handling(self): """Set Exception Handling""" under_test = Flags(self.data_test) under_test.define_group_properties() under_test.set_exception_handling() self.assertTrue('/EHsc' in under_test.win_deb_flags) self.assertTrue('/EHsc' in under_test.win_rel_flags) def test_define_and_write_macro(self): """Define and Write Macros""" self.data_test['cmake'] = get_cmake_lists('./') define_and_write_macro(self.data_test) self.data_test['cmake'].close() cmakelists_test = open('CMakeLists.txt', 'r') under_test = cmakelists_test.read() macros_test = [ '-D_CRT_NONSTDC_NO_DEPRECATE', '-D_DEBUG', '-D_WINDOWS', '-D_USRDLL', '-DCORE_EXPORTS', '-DUNICODE', '-D_UNICODE' ] for macro in macros_test: self.assertTrue(macro in under_test) cmakelists_test.close()
class TestProjectFiles(unittest2.TestCase): """ This file test methods of ProjectFiles class. """ vcxproj_data_test = get_vcxproj_data('test/project_test.vcxproj') cmake_lists_test = get_cmake_lists('./') data_test = { 'cmake': cmake_lists_test, 'cmake_output': None, 'vcxproj': vcxproj_data_test, 'dependencies': None, 'includes': None, 'additional_code': None, } def test_init_project_files(self): """Initialize Project Files""" under_test = ProjectFiles(self.data_test) self.assertTrue(under_test.c_folder_nb) self.assertTrue(under_test.h_folder_nb) self.assertTrue(under_test.tree) self.assertTrue(under_test.ns) self.assertTrue(under_test.cmake) self.assertTrue(under_test.cppfiles) self.assertTrue(under_test.headerfiles) def test_write_variables(self): """Write Files Variables""" self.data_test['cmake'] = get_cmake_lists('./') under_test = ProjectFiles(self.data_test) under_test.write_files_variables() self.data_test['cmake'].close() cmakelists_test = open('CMakeLists.txt', 'r') content_test = cmakelists_test.read() self.assertTrue('CPP_DIR_1' in content_test) self.assertTrue('HEADER_DIR_1' in content_test) cmakelists_test.close() def test_write_source_files(self): """Write Source Files""" self.data_test['cmake'] = get_cmake_lists('./') under_test = ProjectFiles(self.data_test) under_test.write_source_files() self.data_test['cmake'].close() cmakelists_test = open('CMakeLists.txt', 'r') content_test = cmakelists_test.read() self.assertTrue('GLOB SRC_FILES' in content_test) self.assertTrue('CPP_DIR_1' in content_test) self.assertTrue('HEADER_DIR_1' in content_test) def test_add_additional_code(self): """Add Additional CMake Code""" # When file is empty, nothing is added self.data_test['cmake'] = get_cmake_lists('./') under_test = ProjectFiles(self.data_test) under_test.add_additional_code('') self.data_test['cmake'].close() cmakelists_test = open('CMakeLists.txt', 'r') content_test = cmakelists_test.read() self.assertEqual('', content_test) cmakelists_test.close() # When file exist, code is added under_test.cmake = get_cmake_lists('./') under_test.add_additional_code('test/additional_code_test.cmake') under_test.cmake.close() cmakelists_test = open('CMakeLists.txt', 'r') content_test = cmakelists_test.read() self.assertTrue('set(ADD_CODE code)' in content_test) cmakelists_test.close() # When file does not exist, nothing is added under_test.cmake = get_cmake_lists('./') under_test.add_additional_code('nofile/additional_code_test.cmake') under_test.cmake.close() cmakelists_add_test = open('CMakeLists.txt', 'r') content_add_test = cmakelists_add_test.read() self.assertEqual('', content_add_test) cmakelists_test.close() def test_add_artefacts(self): """Add Artefact Target""" self.data_test['cmake'] = get_cmake_lists('./') under_test = ProjectFiles(self.data_test) under_test.add_target_artefact() self.data_test['cmake'].close() cmakelists_test = open('CMakeLists.txt', 'r') content_test = cmakelists_test.read() self.assertTrue('add_library(${PROJECT_NAME} SHARED' in content_test) self.assertTrue('${SRC_FILES}' in content_test) cmakelists_test.close()
class TestProjectVariables(unittest.TestCase): """ This file test methods of ProjectVariables class. """ cur_dir = os.path.dirname(os.path.realpath(__file__)) context = Context() vcxproj_data_test = get_vcxproj_data(context, '%s/datatest/foo.vcxproj' % cur_dir) cmake_lists_test = get_cmake_lists(context, cur_dir) data_test = { 'cmake': cmake_lists_test, 'cmakeoutput': None, 'vcxproj': vcxproj_data_test, 'include': None, 'additional': None, } def test_init_project_variables(self): """Initialize Project Variables""" under_test = VCXProjectVariables(self.data_test) self.assertTrue(under_test.tree) self.assertTrue(under_test.ns) self.assertTrue(under_test.cmake) self.assertFalse(under_test.output) self.assertIsNotNone(under_test.cmake_outputs) def test_add_project_variables(self): """Add Project Variables""" self.data_test['cmake'] = get_cmake_lists(context, self.cur_dir) under_test = VCXProjectVariables(self.data_test) under_test.add_project_variables() self.data_test['cmake'].close() cmakelists_test = open('%s/CMakeLists.txt' % self.cur_dir) content_test = cmakelists_test.read() self.assertTrue('set(PROJECT_NAME core)' in content_test) cmakelists_test.close() def test_add_outputs_variables(self): """Add Outputs Variables""" # TODO If NO output is given # self.data_test['cmake'] = get_cmake_lists(context, self.cur_dir) under_test = VCXProjectVariables(self.data_test) # # under_test.add_project_variables() # under_test.add_outputs_variables() # # self.data_test['cmake'].close() # # cmakelists_test = open('%s/CMakeLists.txt' % self.cur_dir) # content_test = cmakelists_test.read() # # self.assertTrue('OUTPUT_DEBUG ../../../build/vc2017_x64d/bin/', content_test) # self.assertTrue('OUTPUT_REL ../../../build/vc2017_x64/bin/' in content_test) # # cmakelists_test.close() # If output is given under_test.output = '../output_binaries' under_test.cmake = get_cmake_lists(context, self.cur_dir) under_test.add_outputs_variables() under_test.cmake.close() cmakelists_test = open('%s/CMakeLists.txt' % self.cur_dir) content_test = cmakelists_test.read() self.assertTrue('OUTPUT_DEBUG ../output_binaries/${CMAKE_BUILD_TYPE}', content_test) self.assertTrue('OUTPUT_REL ../output_binaries/${CMAKE_BUILD_TYPE}' in content_test) cmakelists_test.close() def test_add_cmake_project(self): """Add CMake Project""" self.data_test['cmake'] = get_cmake_lists(context, self.cur_dir) under_test = VCXProjectVariables(self.data_test) # Case CXX languages under_test.add_cmake_project(['cpp']) self.data_test['cmake'].close() cmakelists_test = open('%s/CMakeLists.txt' % self.cur_dir, 'r') content_test = cmakelists_test.read() self.assertTrue('project(${PROJECT_NAME} CXX)' in content_test) cmakelists_test.close() # Case C languages under_test.cmake = get_cmake_lists(context, self.cur_dir) under_test.add_cmake_project(['c']) under_test.cmake.close() cmakelists_test = open('%s/CMakeLists.txt' % self.cur_dir, 'r') content_test = cmakelists_test.read() self.assertTrue('project(${PROJECT_NAME} C)' in content_test) cmakelists_test.close() def test_add_artefact_target_outputs(self): """Add Artefact Target Outputs""" self.data_test['cmake'] = get_cmake_lists(context, self.cur_dir) under_test = VCXProjectVariables(self.data_test) under_test.add_cmake_output_directories() self.data_test['cmake'].close() cmakelists_test = open('%s/CMakeLists.txt' % self.cur_dir, 'r') content_test = cmakelists_test.read() self.assertTrue( 'set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_DIR}/${OUTPUT_DEBUG}")' in content_test) self.assertTrue( 'set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_DIR}/${OUTPUT_DEBUG}")' in content_test) self.assertTrue( 'set(CMAKE_EXECUTABLE_OUTPUT_DIRECTORY "${PROJECT_DIR}/${OUTPUT_DEBUG}' in content_test) self.assertTrue( 'set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_DIR}/${OUTPUT_RELEASE}")' in content_test) self.assertTrue( 'set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_DIR}/${OUTPUT_RELEASE}")' in content_test) self.assertTrue( 'set(CMAKE_EXECUTABLE_OUTPUT_DIRECTORY "${PROJECT_DIR}/${OUTPUT_RELEASE}' in content_test) cmakelists_test.close()
class TestDependencies(unittest2.TestCase): """ This file test methods of Dependencies class. """ vcxproj_data_test = get_vcxproj_data('test/project_test.vcxproj') cmake_lists_test = get_cmake_lists('./') data_test = { 'cmake': cmake_lists_test, 'cmake_output': None, 'vcxproj': vcxproj_data_test, 'dependencies': None, 'includes': None, 'additional_code': None, } def test_init_dependencies(self): """Initialize Dependencies""" under_test = Dependencies(self.data_test) self.assertTrue(under_test.cmake) self.assertTrue(under_test.tree) self.assertTrue(under_test.ns) self.assertFalse(under_test.dependencies) def test_write_include_dir(self): """Write Include Dirs""" self.data_test['cmake'] = get_cmake_lists('./') under_test = Dependencies(self.data_test) under_test.write_include_dir() self.data_test['cmake'].close() cmakelists_test = open('CMakeLists.txt', 'r') self.assertTrue( 'include_directories(../../../external/g3log/latest/src)' in cmakelists_test.read()) cmakelists_test.close() def test_write_dependencies(self): """Write Dependencies""" self.data_test['cmake'] = get_cmake_lists('./') under_test = Dependencies(self.data_test) under_test.write_dependencies() self.data_test['cmake'].close() cmakelists_test = open('CMakeLists.txt', 'r') content_test = cmakelists_test.read() self.assertTrue( 'add_subdirectory(platform/cmake/g3log ${CMAKE_BINARY_DIR}/g3log' in content_test) self.assertTrue( 'add_subdirectory(platform/cmake/zlib ${CMAKE_BINARY_DIR}/zlib' in content_test) cmakelists_test.close() dependencies = ['external/zlib/cmake/', '../../external/g3log/cmake/'] self.data_test['dependencies'] = dependencies self.data_test['cmake'] = get_cmake_lists('./') under_test = Dependencies(self.data_test) under_test.write_dependencies() self.data_test['cmake'].close() cmakelists_test = open('CMakeLists.txt', 'r') content_test = cmakelists_test.read() self.assertTrue( 'add_subdirectory(external/zlib/cmake/ ${CMAKE_BINARY_DIR}/lib1)' in content_test) self.assertTrue( 'add_subdirectory(../../external/g3log/cmake/ ${CMAKE_BINARY_DIR}/lib2)' in content_test) cmakelists_test.close() def test_link_dependencies(self): """Link Dependencies""" self.data_test['cmake'] = get_cmake_lists('./') under_test = Dependencies(self.data_test) under_test.link_dependencies() self.data_test['cmake'].close() cmakelists_test = open('CMakeLists.txt', 'r') self.assertTrue( 'target_link_libraries(${PROJECT_NAME}' in cmakelists_test.read()) cmakelists_test.close()
class TestProjectFiles(unittest2.TestCase): """ This file test methods of ProjectFiles class. """ cur_dir = os.path.dirname(os.path.realpath(__file__)) vcxproj_data_test = get_vcxproj_data('%s/datatest/foo.vcxproj' % cur_dir) cmake_lists_test = get_cmake_lists(cur_dir) data_test = { 'cmake': cmake_lists_test, 'cmake_output': None, 'vcxproj': vcxproj_data_test, 'dependencies': None, 'includes': None, 'additional_code': None, 'std': None, } def test_init_project_files(self): """Initialize Project Files""" under_test = ProjectFiles(self.data_test) self.assertTrue(under_test.tree) self.assertTrue(under_test.ns) self.assertTrue(under_test.cmake) self.assertTrue(under_test.cppfiles) self.assertTrue(under_test.headerfiles) self.assertFalse(under_test.language) self.assertFalse(under_test.sources) self.assertFalse(under_test.headers) def test_collects_source_files(self): """Collects Source Files""" self.data_test['cmake'] = get_cmake_lists(self.cur_dir) under_test = ProjectFiles(self.data_test) self.assertFalse(under_test.sources) self.assertFalse(under_test.headers) under_test.collects_source_files() self.data_test['cmake'].close() self.assertTrue(under_test.sources) self.assertTrue(under_test.headers) def test_write_source_files(self): """Write Source Files""" self.data_test['cmake'] = get_cmake_lists(self.cur_dir) under_test = ProjectFiles(self.data_test) under_test.collects_source_files() under_test.write_source_files() self.data_test['cmake'].close() cmakelists_test = open('%s/CMakeLists.txt' % self.cur_dir) content_test = cmakelists_test.read() self.assertTrue( 'source_group("Sources" FILES ${SRC_FILES})' in content_test) self.assertTrue( 'source_group("Headers" FILES ${HEADERS_FILES})' in content_test) def test_add_additional_code(self): """Add Additional CMake Code""" # When file is empty, nothing is added self.data_test['cmake'] = get_cmake_lists(self.cur_dir) under_test = ProjectFiles(self.data_test) under_test.add_additional_code('') under_test.cmake.close() cmakelists_test = open('%s/CMakeLists.txt' % self.cur_dir) content_test = cmakelists_test.read() self.assertEqual('', content_test) cmakelists_test.close() # When file exist, code is added under_test.cmake = get_cmake_lists(self.cur_dir) under_test.add_additional_code( '%s/datatest/additional_code_test.cmake' % self.cur_dir) under_test.cmake.close() cmakelists_test = open('%s/CMakeLists.txt' % self.cur_dir) content_test = cmakelists_test.read() self.assertTrue('set(ADD_CODE code)' in content_test) cmakelists_test.close() # When file does not exist, nothing is added under_test.cmake = get_cmake_lists(self.cur_dir) under_test.add_additional_code('nofile/additional_code_test.cmake') under_test.cmake.close() cmakelists_add_test = open('%s/CMakeLists.txt' % self.cur_dir) content_add_test = cmakelists_add_test.read() self.assertEqual('', content_add_test) cmakelists_test.close() def test_add_artefacts(self): """Add Artefact Target""" self.data_test['cmake'] = get_cmake_lists(self.cur_dir) under_test = ProjectFiles(self.data_test) under_test.collects_source_files() under_test.add_target_artefact() self.data_test['cmake'].close() cmakelists_test = open('%s/CMakeLists.txt' % self.cur_dir) content_test = cmakelists_test.read() self.assertTrue('add_library(${PROJECT_NAME} SHARED' in content_test) self.assertTrue('${SRC_FILES}' in content_test) cmakelists_test.close() def test_add_include_cmake(self): """Add Include CMake File""" self.data_test['cmake'] = get_cmake_lists(self.cur_dir) under_test = ProjectFiles(self.data_test) under_test.add_include_cmake('path/to/file.cmake') self.data_test['cmake'].close() cmakelists_test = open('%s/CMakeLists.txt' % self.cur_dir) content_test = cmakelists_test.read() self.assertTrue('include("path/to/file.cmake")' in content_test)