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()
Exemple #2
0
    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)
Exemple #4
0
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]
Exemple #9
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()
Exemple #12
0
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()
Exemple #14
0
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()
Exemple #15
0
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)