예제 #1
0
    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
예제 #2
0
파일: writers.py 프로젝트: libyal/vstools
  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)
예제 #3
0
파일: writers.py 프로젝트: libyal/vstools
  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>'))
예제 #4
0
파일: writers.py 프로젝트: libyal/vstools
  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)
예제 #5
0
파일: writers.py 프로젝트: libyal/vstools
  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'')
예제 #6
0
파일: writers.py 프로젝트: libyal/vstools
  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)
예제 #7
0
파일: writers.py 프로젝트: libyal/vstools
  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'')
예제 #8
0
파일: writers.py 프로젝트: libyal/vstools
  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)
예제 #9
0
파일: writers.py 프로젝트: libyal/vstools
  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'))
예제 #10
0
파일: writers.py 프로젝트: libyal/vstools
  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'))
예제 #11
0
파일: writers.py 프로젝트: libyal/vstools
  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)
예제 #12
0
파일: writers.py 프로젝트: libyal/vstools
  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)
예제 #13
0
파일: writers.py 프로젝트: libyal/vstools
  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)
예제 #14
0
파일: writers.py 프로젝트: libyal/vstools
  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)
예제 #15
0
파일: writers.py 프로젝트: libyal/vstools
  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)
예제 #16
0
파일: writers.py 프로젝트: libyal/vstools
  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)