def _GetProjectFileWriter(self, output_version): """Retrieves a Visual Studio project file writer. Args: output_version (str): output version of the Visual Studio solution. Returns: VSProjectFileWriter: Visual Studio project file writer or None if version is not supported. """ if output_version == '2008': return writers.VS2008ProjectFileWriter() if output_version == '2010': return writers.VS2010ProjectFileWriter() if output_version == '2012': return writers.VS2012ProjectFileWriter() if output_version == '2013': return writers.VS2013ProjectFileWriter() if output_version == '2015': return writers.VS2015ProjectFileWriter() if output_version == '2017': return writers.VS2017ProjectFileWriter() if output_version == '2019': return writers.VS2019ProjectFileWriter() return None
def testWriteItemDefinitionGroup(self): """Tests the _WriteItemDefinitionGroup function.""" project_configuration = resources.VSProjectConfiguration() file_writer = writers.VS2010ProjectFileWriter() file_writer._file = io.BytesIO() file_writer._WriteItemDefinitionGroup(project_configuration) file_writer._file.seek(0, os.SEEK_SET) output_data = file_writer._file.read() expected_output_data = ( b' <ItemDefinitionGroup' b' Condition="\'$(Configuration)|$(Platform)\'==\'|\'">\r\n' b' <ClCompile>\r\n' b' <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)' b'</AdditionalIncludeDirectories>\r\n' b' <PreprocessorDefinitions>%(PreprocessorDefinitions)' b'</PreprocessorDefinitions>\r\n' b' <RuntimeLibrary></RuntimeLibrary>\r\n' b' <WarningLevel></WarningLevel>\r\n' b' </ClCompile>\r\n' b' </ItemDefinitionGroup>\r\n') self.assertEqual(output_data, expected_output_data)
def testWriteFooter(self): """Tests the WriteFooter function.""" file_writer = writers.VS2010ProjectFileWriter() file_writer._file = io.BytesIO() file_writer.WriteFooter() file_writer._file.seek(0, os.SEEK_SET) output_data = file_writer._file.read() self.assertTrue(output_data.endswith(b'</Project>'))
def testWriteItemDefinitionGroupFooter(self): """Tests the _WriteItemDefinitionGroupFooter function.""" file_writer = writers.VS2010ProjectFileWriter() file_writer._file = io.BytesIO() file_writer._WriteItemDefinitionGroupFooter() file_writer._file.seek(0, os.SEEK_SET) output_data = file_writer._file.read() expected_output_data = b' </ItemDefinitionGroup>\r\n' self.assertEqual(output_data, expected_output_data)
def testWriteDependencies(self): """Tests the WriteDependencies function.""" dependencies = [] solution_projects_by_guid = {} file_writer = writers.VS2010ProjectFileWriter() file_writer._file = io.BytesIO() file_writer.WriteDependencies(dependencies, solution_projects_by_guid) file_writer._file.seek(0, os.SEEK_SET) output_data = file_writer._file.read() self.assertEqual(output_data, b'')
def testWriteHeader(self): """Tests the WriteHeader function.""" file_writer = writers.VS2010ProjectFileWriter() file_writer._file = io.BytesIO() file_writer.WriteHeader() file_writer._file.seek(0, os.SEEK_SET) output_data = file_writer._file.read() expected_output_data = ( b'\xef\xbb\xbf<?xml version="1.0" encoding="utf-8"?>\r\n' b'<Project DefaultTargets="Build" ToolsVersion="4.0" ' b'xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r\n') self.assertEqual(output_data, expected_output_data)
def testWriteOutIntDirConditions(self): """Tests the _WriteOutIntDirConditions function.""" configuration_name = 'Release' project_configurations = resources.VSConfigurations() file_writer = writers.VS2010ProjectFileWriter() file_writer._file = io.BytesIO() file_writer._WriteOutIntDirConditions( configuration_name, project_configurations) file_writer._file.seek(0, os.SEEK_SET) output_data = file_writer._file.read() self.assertEqual(output_data, b'')
def testWriteProjectConfigurations(self): """Tests the WriteProjectConfigurations function.""" project_configurations = resources.VSConfigurations() file_writer = writers.VS2010ProjectFileWriter() file_writer._file = io.BytesIO() file_writer.WriteProjectConfigurations(project_configurations) file_writer._file.seek(0, os.SEEK_SET) output_data = file_writer._file.read() expected_output_data = ( b' <ItemGroup Label="ProjectConfigurations">\r\n' b' </ItemGroup>\r\n') self.assertEqual(output_data, expected_output_data)
def testWriteFiles(self): """Tests the WriteFiles function.""" header_files = ['test.h'] resource_files = ['test.rc'] source_files = ['test.c'] file_writer = writers.VS2010ProjectFileWriter() file_writer._file = io.BytesIO() file_writer.WriteFiles(source_files, header_files, resource_files) file_writer._file.seek(0, os.SEEK_SET) output_data = file_writer._file.read() self.assertTrue(output_data.startswith(b' <ItemGroup>\r\n')) self.assertTrue(output_data.endswith(b' </ItemGroup>\r\n'))
def testWriteConfigurations(self): """Tests the WriteConfigurations function.""" project_configurations = resources.VSConfigurations() file_writer = writers.VS2010ProjectFileWriter() file_writer._file = io.BytesIO() file_writer.WriteConfigurations(project_configurations) file_writer._file.seek(0, os.SEEK_SET) output_data = file_writer._file.read() self.assertTrue(output_data.startswith( b' <Import Project="$(VCTargetsPath)\\' b'Microsoft.Cpp.Default.props" />\r\n')) self.assertTrue(output_data.endswith(b' </PropertyGroup>\r\n'))
def testWriteLinkerSection(self): """Tests the _WriteLinkerSection function.""" project_configuration = resources.VSProjectConfiguration() file_writer = writers.VS2010ProjectFileWriter() file_writer._file = io.BytesIO() file_writer._WriteLinkerSection(project_configuration) file_writer._file.seek(0, os.SEEK_SET) output_data = file_writer._file.read() expected_output_data = ( b' <Link>\r\n' b' </Link>\r\n') self.assertEqual(output_data, expected_output_data)
def testWriteItemDefinitionGroupHeader(self): """Tests the _WriteItemDefinitionGroupHeader function.""" project_configuration = resources.VSProjectConfiguration() file_writer = writers.VS2010ProjectFileWriter() file_writer._file = io.BytesIO() file_writer._WriteItemDefinitionGroupHeader(project_configuration) file_writer._file.seek(0, os.SEEK_SET) output_data = file_writer._file.read() expected_output_data = ( b' <ItemDefinitionGroup' b' Condition="\'$(Configuration)|$(Platform)\'==\'|\'">\r\n') self.assertEqual(output_data, expected_output_data)
def testWriteSourceFiles(self): """Tests the _WriteSourceFiles function.""" source_files = ['test.c'] file_writer = writers.VS2010ProjectFileWriter() file_writer._file = io.BytesIO() file_writer._WriteSourceFiles(source_files) file_writer._file.seek(0, os.SEEK_SET) output_data = file_writer._file.read() expected_output_data = ( b' <ItemGroup>\r\n' b' <ClCompile Include="test.c" />\r\n' b' </ItemGroup>\r\n') self.assertEqual(output_data, expected_output_data)
def testWriteOutIntDirPropertyGroups(self): """Tests the _WriteOutIntDirPropertyGroups function.""" project_configurations = resources.VSConfigurations() file_writer = writers.VS2010ProjectFileWriter() file_writer._file = io.BytesIO() file_writer._WriteOutIntDirPropertyGroups(project_configurations) file_writer._file.seek(0, os.SEEK_SET) output_data = file_writer._file.read() expected_output_data = ( b' <PropertyGroup>\r\n' b' <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>\r\n' b' </PropertyGroup>\r\n') self.assertEqual(output_data, expected_output_data)
def testWriteProjectInformation(self): """Tests the WriteProjectInformation function.""" project_information = resources.VSProjectInformation() file_writer = writers.VS2010ProjectFileWriter() file_writer._file = io.BytesIO() file_writer.WriteProjectInformation(project_information) file_writer._file.seek(0, os.SEEK_SET) output_data = file_writer._file.read() expected_output_data = ( b' <PropertyGroup Label="Globals">\r\n' b' <ProjectGuid>{}</ProjectGuid>\r\n' b' <RootNamespace></RootNamespace>\r\n' b' </PropertyGroup>\r\n') self.assertEqual(output_data, expected_output_data)
def testWriteConfigurationPropertyGroup(self): """Tests the _WriteConfigurationPropertyGroup function.""" project_configuration = resources.VSProjectConfiguration() file_writer = writers.VS2010ProjectFileWriter() file_writer._file = io.BytesIO() file_writer._WriteConfigurationPropertyGroup(project_configuration) file_writer._file.seek(0, os.SEEK_SET) output_data = file_writer._file.read() expected_output_data = ( b' <PropertyGroup Condition="\'$(Configuration)|$(Platform)\'==\'|\'"' b' Label="Configuration">\r\n' b' <ConfigurationType></ConfigurationType>\r\n' b' </PropertyGroup>\r\n') self.assertEqual(output_data, expected_output_data)