hexo/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py

1548 lines
74 KiB
Python

#!/usr/bin/env python3
# Copyright (c) 2012 Google Inc. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Unit tests for the MSVSSettings.py file."""
import unittest
import gyp.MSVSSettings as MSVSSettings
from io import StringIO
class TestSequenceFunctions(unittest.TestCase):
def setUp(self):
self.stderr = StringIO()
def _ExpectedWarnings(self, expected):
"""Compares recorded lines to expected warnings."""
self.stderr.seek(0)
actual = self.stderr.read().split("\n")
actual = [line for line in actual if line]
self.assertEqual(sorted(expected), sorted(actual))
def testValidateMSVSSettings_tool_names(self):
"""Tests that only MSVS tool names are allowed."""
MSVSSettings.ValidateMSVSSettings(
{
"VCCLCompilerTool": {},
"VCLinkerTool": {},
"VCMIDLTool": {},
"foo": {},
"VCResourceCompilerTool": {},
"VCLibrarianTool": {},
"VCManifestTool": {},
"ClCompile": {},
},
self.stderr,
)
self._ExpectedWarnings(
["Warning: unrecognized tool foo", "Warning: unrecognized tool ClCompile"]
)
def testValidateMSVSSettings_settings(self):
"""Tests that for invalid MSVS settings."""
MSVSSettings.ValidateMSVSSettings(
{
"VCCLCompilerTool": {
"AdditionalIncludeDirectories": "folder1;folder2",
"AdditionalOptions": ["string1", "string2"],
"AdditionalUsingDirectories": "folder1;folder2",
"AssemblerListingLocation": "a_file_name",
"AssemblerOutput": "0",
"BasicRuntimeChecks": "5",
"BrowseInformation": "fdkslj",
"BrowseInformationFile": "a_file_name",
"BufferSecurityCheck": "true",
"CallingConvention": "-1",
"CompileAs": "1",
"DebugInformationFormat": "2",
"DefaultCharIsUnsigned": "true",
"Detect64BitPortabilityProblems": "true",
"DisableLanguageExtensions": "true",
"DisableSpecificWarnings": "string1;string2",
"EnableEnhancedInstructionSet": "1",
"EnableFiberSafeOptimizations": "true",
"EnableFunctionLevelLinking": "true",
"EnableIntrinsicFunctions": "true",
"EnablePREfast": "true",
"Enableprefast": "bogus",
"ErrorReporting": "1",
"ExceptionHandling": "1",
"ExpandAttributedSource": "true",
"FavorSizeOrSpeed": "1",
"FloatingPointExceptions": "true",
"FloatingPointModel": "1",
"ForceConformanceInForLoopScope": "true",
"ForcedIncludeFiles": "file1;file2",
"ForcedUsingFiles": "file1;file2",
"GeneratePreprocessedFile": "1",
"GenerateXMLDocumentationFiles": "true",
"IgnoreStandardIncludePath": "true",
"InlineFunctionExpansion": "1",
"KeepComments": "true",
"MinimalRebuild": "true",
"ObjectFile": "a_file_name",
"OmitDefaultLibName": "true",
"OmitFramePointers": "true",
"OpenMP": "true",
"Optimization": "1",
"PrecompiledHeaderFile": "a_file_name",
"PrecompiledHeaderThrough": "a_file_name",
"PreprocessorDefinitions": "string1;string2",
"ProgramDataBaseFileName": "a_file_name",
"RuntimeLibrary": "1",
"RuntimeTypeInfo": "true",
"ShowIncludes": "true",
"SmallerTypeCheck": "true",
"StringPooling": "true",
"StructMemberAlignment": "1",
"SuppressStartupBanner": "true",
"TreatWChar_tAsBuiltInType": "true",
"UndefineAllPreprocessorDefinitions": "true",
"UndefinePreprocessorDefinitions": "string1;string2",
"UseFullPaths": "true",
"UsePrecompiledHeader": "1",
"UseUnicodeResponseFiles": "true",
"WarnAsError": "true",
"WarningLevel": "1",
"WholeProgramOptimization": "true",
"XMLDocumentationFileName": "a_file_name",
"ZZXYZ": "bogus",
},
"VCLinkerTool": {
"AdditionalDependencies": "file1;file2",
"AdditionalDependencies_excluded": "file3",
"AdditionalLibraryDirectories": "folder1;folder2",
"AdditionalManifestDependencies": "file1;file2",
"AdditionalOptions": "a string1",
"AddModuleNamesToAssembly": "file1;file2",
"AllowIsolation": "true",
"AssemblyDebug": "2",
"AssemblyLinkResource": "file1;file2",
"BaseAddress": "a string1",
"CLRImageType": "2",
"CLRThreadAttribute": "2",
"CLRUnmanagedCodeCheck": "true",
"DataExecutionPrevention": "2",
"DelayLoadDLLs": "file1;file2",
"DelaySign": "true",
"Driver": "2",
"EmbedManagedResourceFile": "file1;file2",
"EnableCOMDATFolding": "2",
"EnableUAC": "true",
"EntryPointSymbol": "a string1",
"ErrorReporting": "2",
"FixedBaseAddress": "2",
"ForceSymbolReferences": "file1;file2",
"FunctionOrder": "a_file_name",
"GenerateDebugInformation": "true",
"GenerateManifest": "true",
"GenerateMapFile": "true",
"HeapCommitSize": "a string1",
"HeapReserveSize": "a string1",
"IgnoreAllDefaultLibraries": "true",
"IgnoreDefaultLibraryNames": "file1;file2",
"IgnoreEmbeddedIDL": "true",
"IgnoreImportLibrary": "true",
"ImportLibrary": "a_file_name",
"KeyContainer": "a_file_name",
"KeyFile": "a_file_name",
"LargeAddressAware": "2",
"LinkIncremental": "2",
"LinkLibraryDependencies": "true",
"LinkTimeCodeGeneration": "2",
"ManifestFile": "a_file_name",
"MapExports": "true",
"MapFileName": "a_file_name",
"MergedIDLBaseFileName": "a_file_name",
"MergeSections": "a string1",
"MidlCommandFile": "a_file_name",
"ModuleDefinitionFile": "a_file_name",
"OptimizeForWindows98": "1",
"OptimizeReferences": "2",
"OutputFile": "a_file_name",
"PerUserRedirection": "true",
"Profile": "true",
"ProfileGuidedDatabase": "a_file_name",
"ProgramDatabaseFile": "a_file_name",
"RandomizedBaseAddress": "2",
"RegisterOutput": "true",
"ResourceOnlyDLL": "true",
"SetChecksum": "true",
"ShowProgress": "2",
"StackCommitSize": "a string1",
"StackReserveSize": "a string1",
"StripPrivateSymbols": "a_file_name",
"SubSystem": "2",
"SupportUnloadOfDelayLoadedDLL": "true",
"SuppressStartupBanner": "true",
"SwapRunFromCD": "true",
"SwapRunFromNet": "true",
"TargetMachine": "2",
"TerminalServerAware": "2",
"TurnOffAssemblyGeneration": "true",
"TypeLibraryFile": "a_file_name",
"TypeLibraryResourceID": "33",
"UACExecutionLevel": "2",
"UACUIAccess": "true",
"UseLibraryDependencyInputs": "true",
"UseUnicodeResponseFiles": "true",
"Version": "a string1",
},
"VCMIDLTool": {
"AdditionalIncludeDirectories": "folder1;folder2",
"AdditionalOptions": "a string1",
"CPreprocessOptions": "a string1",
"DefaultCharType": "1",
"DLLDataFileName": "a_file_name",
"EnableErrorChecks": "1",
"ErrorCheckAllocations": "true",
"ErrorCheckBounds": "true",
"ErrorCheckEnumRange": "true",
"ErrorCheckRefPointers": "true",
"ErrorCheckStubData": "true",
"GenerateStublessProxies": "true",
"GenerateTypeLibrary": "true",
"HeaderFileName": "a_file_name",
"IgnoreStandardIncludePath": "true",
"InterfaceIdentifierFileName": "a_file_name",
"MkTypLibCompatible": "true",
"notgood": "bogus",
"OutputDirectory": "a string1",
"PreprocessorDefinitions": "string1;string2",
"ProxyFileName": "a_file_name",
"RedirectOutputAndErrors": "a_file_name",
"StructMemberAlignment": "1",
"SuppressStartupBanner": "true",
"TargetEnvironment": "1",
"TypeLibraryName": "a_file_name",
"UndefinePreprocessorDefinitions": "string1;string2",
"ValidateParameters": "true",
"WarnAsError": "true",
"WarningLevel": "1",
},
"VCResourceCompilerTool": {
"AdditionalOptions": "a string1",
"AdditionalIncludeDirectories": "folder1;folder2",
"Culture": "1003",
"IgnoreStandardIncludePath": "true",
"notgood2": "bogus",
"PreprocessorDefinitions": "string1;string2",
"ResourceOutputFileName": "a string1",
"ShowProgress": "true",
"SuppressStartupBanner": "true",
"UndefinePreprocessorDefinitions": "string1;string2",
},
"VCLibrarianTool": {
"AdditionalDependencies": "file1;file2",
"AdditionalLibraryDirectories": "folder1;folder2",
"AdditionalOptions": "a string1",
"ExportNamedFunctions": "string1;string2",
"ForceSymbolReferences": "a string1",
"IgnoreAllDefaultLibraries": "true",
"IgnoreSpecificDefaultLibraries": "file1;file2",
"LinkLibraryDependencies": "true",
"ModuleDefinitionFile": "a_file_name",
"OutputFile": "a_file_name",
"SuppressStartupBanner": "true",
"UseUnicodeResponseFiles": "true",
},
"VCManifestTool": {
"AdditionalManifestFiles": "file1;file2",
"AdditionalOptions": "a string1",
"AssemblyIdentity": "a string1",
"ComponentFileName": "a_file_name",
"DependencyInformationFile": "a_file_name",
"GenerateCatalogFiles": "true",
"InputResourceManifests": "a string1",
"ManifestResourceFile": "a_file_name",
"OutputManifestFile": "a_file_name",
"RegistrarScriptFile": "a_file_name",
"ReplacementsFile": "a_file_name",
"SuppressStartupBanner": "true",
"TypeLibraryFile": "a_file_name",
"UpdateFileHashes": "truel",
"UpdateFileHashesSearchPath": "a_file_name",
"UseFAT32Workaround": "true",
"UseUnicodeResponseFiles": "true",
"VerboseOutput": "true",
},
},
self.stderr,
)
self._ExpectedWarnings(
[
"Warning: for VCCLCompilerTool/BasicRuntimeChecks, "
"index value (5) not in expected range [0, 4)",
"Warning: for VCCLCompilerTool/BrowseInformation, "
"invalid literal for int() with base 10: 'fdkslj'",
"Warning: for VCCLCompilerTool/CallingConvention, "
"index value (-1) not in expected range [0, 4)",
"Warning: for VCCLCompilerTool/DebugInformationFormat, "
"converted value for 2 not specified.",
"Warning: unrecognized setting VCCLCompilerTool/Enableprefast",
"Warning: unrecognized setting VCCLCompilerTool/ZZXYZ",
"Warning: for VCLinkerTool/TargetMachine, "
"converted value for 2 not specified.",
"Warning: unrecognized setting VCMIDLTool/notgood",
"Warning: unrecognized setting VCResourceCompilerTool/notgood2",
"Warning: for VCManifestTool/UpdateFileHashes, "
"expected bool; got 'truel'"
"",
]
)
def testValidateMSBuildSettings_settings(self):
"""Tests that for invalid MSBuild settings."""
MSVSSettings.ValidateMSBuildSettings(
{
"ClCompile": {
"AdditionalIncludeDirectories": "folder1;folder2",
"AdditionalOptions": ["string1", "string2"],
"AdditionalUsingDirectories": "folder1;folder2",
"AssemblerListingLocation": "a_file_name",
"AssemblerOutput": "NoListing",
"BasicRuntimeChecks": "StackFrameRuntimeCheck",
"BrowseInformation": "false",
"BrowseInformationFile": "a_file_name",
"BufferSecurityCheck": "true",
"BuildingInIDE": "true",
"CallingConvention": "Cdecl",
"CompileAs": "CompileAsC",
"CompileAsManaged": "true",
"CreateHotpatchableImage": "true",
"DebugInformationFormat": "ProgramDatabase",
"DisableLanguageExtensions": "true",
"DisableSpecificWarnings": "string1;string2",
"EnableEnhancedInstructionSet": "StreamingSIMDExtensions",
"EnableFiberSafeOptimizations": "true",
"EnablePREfast": "true",
"Enableprefast": "bogus",
"ErrorReporting": "Prompt",
"ExceptionHandling": "SyncCThrow",
"ExpandAttributedSource": "true",
"FavorSizeOrSpeed": "Neither",
"FloatingPointExceptions": "true",
"FloatingPointModel": "Precise",
"ForceConformanceInForLoopScope": "true",
"ForcedIncludeFiles": "file1;file2",
"ForcedUsingFiles": "file1;file2",
"FunctionLevelLinking": "false",
"GenerateXMLDocumentationFiles": "true",
"IgnoreStandardIncludePath": "true",
"InlineFunctionExpansion": "OnlyExplicitInline",
"IntrinsicFunctions": "false",
"MinimalRebuild": "true",
"MultiProcessorCompilation": "true",
"ObjectFileName": "a_file_name",
"OmitDefaultLibName": "true",
"OmitFramePointers": "true",
"OpenMPSupport": "true",
"Optimization": "Disabled",
"PrecompiledHeader": "NotUsing",
"PrecompiledHeaderFile": "a_file_name",
"PrecompiledHeaderOutputFile": "a_file_name",
"PreprocessKeepComments": "true",
"PreprocessorDefinitions": "string1;string2",
"PreprocessOutputPath": "a string1",
"PreprocessSuppressLineNumbers": "false",
"PreprocessToFile": "false",
"ProcessorNumber": "33",
"ProgramDataBaseFileName": "a_file_name",
"RuntimeLibrary": "MultiThreaded",
"RuntimeTypeInfo": "true",
"ShowIncludes": "true",
"SmallerTypeCheck": "true",
"StringPooling": "true",
"StructMemberAlignment": "1Byte",
"SuppressStartupBanner": "true",
"TrackerLogDirectory": "a_folder",
"TreatSpecificWarningsAsErrors": "string1;string2",
"TreatWarningAsError": "true",
"TreatWChar_tAsBuiltInType": "true",
"UndefineAllPreprocessorDefinitions": "true",
"UndefinePreprocessorDefinitions": "string1;string2",
"UseFullPaths": "true",
"UseUnicodeForAssemblerListing": "true",
"WarningLevel": "TurnOffAllWarnings",
"WholeProgramOptimization": "true",
"XMLDocumentationFileName": "a_file_name",
"ZZXYZ": "bogus",
},
"Link": {
"AdditionalDependencies": "file1;file2",
"AdditionalLibraryDirectories": "folder1;folder2",
"AdditionalManifestDependencies": "file1;file2",
"AdditionalOptions": "a string1",
"AddModuleNamesToAssembly": "file1;file2",
"AllowIsolation": "true",
"AssemblyDebug": "",
"AssemblyLinkResource": "file1;file2",
"BaseAddress": "a string1",
"BuildingInIDE": "true",
"CLRImageType": "ForceIJWImage",
"CLRSupportLastError": "Enabled",
"CLRThreadAttribute": "MTAThreadingAttribute",
"CLRUnmanagedCodeCheck": "true",
"CreateHotPatchableImage": "X86Image",
"DataExecutionPrevention": "false",
"DelayLoadDLLs": "file1;file2",
"DelaySign": "true",
"Driver": "NotSet",
"EmbedManagedResourceFile": "file1;file2",
"EnableCOMDATFolding": "false",
"EnableUAC": "true",
"EntryPointSymbol": "a string1",
"FixedBaseAddress": "false",
"ForceFileOutput": "Enabled",
"ForceSymbolReferences": "file1;file2",
"FunctionOrder": "a_file_name",
"GenerateDebugInformation": "true",
"GenerateMapFile": "true",
"HeapCommitSize": "a string1",
"HeapReserveSize": "a string1",
"IgnoreAllDefaultLibraries": "true",
"IgnoreEmbeddedIDL": "true",
"IgnoreSpecificDefaultLibraries": "a_file_list",
"ImageHasSafeExceptionHandlers": "true",
"ImportLibrary": "a_file_name",
"KeyContainer": "a_file_name",
"KeyFile": "a_file_name",
"LargeAddressAware": "false",
"LinkDLL": "true",
"LinkErrorReporting": "SendErrorReport",
"LinkStatus": "true",
"LinkTimeCodeGeneration": "UseLinkTimeCodeGeneration",
"ManifestFile": "a_file_name",
"MapExports": "true",
"MapFileName": "a_file_name",
"MergedIDLBaseFileName": "a_file_name",
"MergeSections": "a string1",
"MidlCommandFile": "a_file_name",
"MinimumRequiredVersion": "a string1",
"ModuleDefinitionFile": "a_file_name",
"MSDOSStubFileName": "a_file_name",
"NoEntryPoint": "true",
"OptimizeReferences": "false",
"OutputFile": "a_file_name",
"PerUserRedirection": "true",
"PreventDllBinding": "true",
"Profile": "true",
"ProfileGuidedDatabase": "a_file_name",
"ProgramDatabaseFile": "a_file_name",
"RandomizedBaseAddress": "false",
"RegisterOutput": "true",
"SectionAlignment": "33",
"SetChecksum": "true",
"ShowProgress": "LinkVerboseREF",
"SpecifySectionAttributes": "a string1",
"StackCommitSize": "a string1",
"StackReserveSize": "a string1",
"StripPrivateSymbols": "a_file_name",
"SubSystem": "Console",
"SupportNobindOfDelayLoadedDLL": "true",
"SupportUnloadOfDelayLoadedDLL": "true",
"SuppressStartupBanner": "true",
"SwapRunFromCD": "true",
"SwapRunFromNET": "true",
"TargetMachine": "MachineX86",
"TerminalServerAware": "false",
"TrackerLogDirectory": "a_folder",
"TreatLinkerWarningAsErrors": "true",
"TurnOffAssemblyGeneration": "true",
"TypeLibraryFile": "a_file_name",
"TypeLibraryResourceID": "33",
"UACExecutionLevel": "AsInvoker",
"UACUIAccess": "true",
"Version": "a string1",
},
"ResourceCompile": {
"AdditionalIncludeDirectories": "folder1;folder2",
"AdditionalOptions": "a string1",
"Culture": "0x236",
"IgnoreStandardIncludePath": "true",
"NullTerminateStrings": "true",
"PreprocessorDefinitions": "string1;string2",
"ResourceOutputFileName": "a string1",
"ShowProgress": "true",
"SuppressStartupBanner": "true",
"TrackerLogDirectory": "a_folder",
"UndefinePreprocessorDefinitions": "string1;string2",
},
"Midl": {
"AdditionalIncludeDirectories": "folder1;folder2",
"AdditionalOptions": "a string1",
"ApplicationConfigurationMode": "true",
"ClientStubFile": "a_file_name",
"CPreprocessOptions": "a string1",
"DefaultCharType": "Signed",
"DllDataFileName": "a_file_name",
"EnableErrorChecks": "EnableCustom",
"ErrorCheckAllocations": "true",
"ErrorCheckBounds": "true",
"ErrorCheckEnumRange": "true",
"ErrorCheckRefPointers": "true",
"ErrorCheckStubData": "true",
"GenerateClientFiles": "Stub",
"GenerateServerFiles": "None",
"GenerateStublessProxies": "true",
"GenerateTypeLibrary": "true",
"HeaderFileName": "a_file_name",
"IgnoreStandardIncludePath": "true",
"InterfaceIdentifierFileName": "a_file_name",
"LocaleID": "33",
"MkTypLibCompatible": "true",
"OutputDirectory": "a string1",
"PreprocessorDefinitions": "string1;string2",
"ProxyFileName": "a_file_name",
"RedirectOutputAndErrors": "a_file_name",
"ServerStubFile": "a_file_name",
"StructMemberAlignment": "NotSet",
"SuppressCompilerWarnings": "true",
"SuppressStartupBanner": "true",
"TargetEnvironment": "Itanium",
"TrackerLogDirectory": "a_folder",
"TypeLibFormat": "NewFormat",
"TypeLibraryName": "a_file_name",
"UndefinePreprocessorDefinitions": "string1;string2",
"ValidateAllParameters": "true",
"WarnAsError": "true",
"WarningLevel": "1",
},
"Lib": {
"AdditionalDependencies": "file1;file2",
"AdditionalLibraryDirectories": "folder1;folder2",
"AdditionalOptions": "a string1",
"DisplayLibrary": "a string1",
"ErrorReporting": "PromptImmediately",
"ExportNamedFunctions": "string1;string2",
"ForceSymbolReferences": "a string1",
"IgnoreAllDefaultLibraries": "true",
"IgnoreSpecificDefaultLibraries": "file1;file2",
"LinkTimeCodeGeneration": "true",
"MinimumRequiredVersion": "a string1",
"ModuleDefinitionFile": "a_file_name",
"Name": "a_file_name",
"OutputFile": "a_file_name",
"RemoveObjects": "file1;file2",
"SubSystem": "Console",
"SuppressStartupBanner": "true",
"TargetMachine": "MachineX86i",
"TrackerLogDirectory": "a_folder",
"TreatLibWarningAsErrors": "true",
"UseUnicodeResponseFiles": "true",
"Verbose": "true",
},
"Manifest": {
"AdditionalManifestFiles": "file1;file2",
"AdditionalOptions": "a string1",
"AssemblyIdentity": "a string1",
"ComponentFileName": "a_file_name",
"EnableDPIAwareness": "fal",
"GenerateCatalogFiles": "truel",
"GenerateCategoryTags": "true",
"InputResourceManifests": "a string1",
"ManifestFromManagedAssembly": "a_file_name",
"notgood3": "bogus",
"OutputManifestFile": "a_file_name",
"OutputResourceManifests": "a string1",
"RegistrarScriptFile": "a_file_name",
"ReplacementsFile": "a_file_name",
"SuppressDependencyElement": "true",
"SuppressStartupBanner": "true",
"TrackerLogDirectory": "a_folder",
"TypeLibraryFile": "a_file_name",
"UpdateFileHashes": "true",
"UpdateFileHashesSearchPath": "a_file_name",
"VerboseOutput": "true",
},
"ProjectReference": {
"LinkLibraryDependencies": "true",
"UseLibraryDependencyInputs": "true",
},
"ManifestResourceCompile": {"ResourceOutputFileName": "a_file_name"},
"": {
"EmbedManifest": "true",
"GenerateManifest": "true",
"IgnoreImportLibrary": "true",
"LinkIncremental": "false",
},
},
self.stderr,
)
self._ExpectedWarnings(
[
"Warning: unrecognized setting ClCompile/Enableprefast",
"Warning: unrecognized setting ClCompile/ZZXYZ",
"Warning: unrecognized setting Manifest/notgood3",
"Warning: for Manifest/GenerateCatalogFiles, "
"expected bool; got 'truel'",
"Warning: for Lib/TargetMachine, unrecognized enumerated value "
"MachineX86i",
"Warning: for Manifest/EnableDPIAwareness, expected bool; got 'fal'",
]
)
def testConvertToMSBuildSettings_empty(self):
"""Tests an empty conversion."""
msvs_settings = {}
expected_msbuild_settings = {}
actual_msbuild_settings = MSVSSettings.ConvertToMSBuildSettings(
msvs_settings, self.stderr
)
self.assertEqual(expected_msbuild_settings, actual_msbuild_settings)
self._ExpectedWarnings([])
def testConvertToMSBuildSettings_minimal(self):
"""Tests a minimal conversion."""
msvs_settings = {
"VCCLCompilerTool": {
"AdditionalIncludeDirectories": "dir1",
"AdditionalOptions": "/foo",
"BasicRuntimeChecks": "0",
},
"VCLinkerTool": {
"LinkTimeCodeGeneration": "1",
"ErrorReporting": "1",
"DataExecutionPrevention": "2",
},
}
expected_msbuild_settings = {
"ClCompile": {
"AdditionalIncludeDirectories": "dir1",
"AdditionalOptions": "/foo",
"BasicRuntimeChecks": "Default",
},
"Link": {
"LinkTimeCodeGeneration": "UseLinkTimeCodeGeneration",
"LinkErrorReporting": "PromptImmediately",
"DataExecutionPrevention": "true",
},
}
actual_msbuild_settings = MSVSSettings.ConvertToMSBuildSettings(
msvs_settings, self.stderr
)
self.assertEqual(expected_msbuild_settings, actual_msbuild_settings)
self._ExpectedWarnings([])
def testConvertToMSBuildSettings_warnings(self):
"""Tests conversion that generates warnings."""
msvs_settings = {
"VCCLCompilerTool": {
"AdditionalIncludeDirectories": "1",
"AdditionalOptions": "2",
# These are incorrect values:
"BasicRuntimeChecks": "12",
"BrowseInformation": "21",
"UsePrecompiledHeader": "13",
"GeneratePreprocessedFile": "14",
},
"VCLinkerTool": {
# These are incorrect values:
"Driver": "10",
"LinkTimeCodeGeneration": "31",
"ErrorReporting": "21",
"FixedBaseAddress": "6",
},
"VCResourceCompilerTool": {
# Custom
"Culture": "1003"
},
}
expected_msbuild_settings = {
"ClCompile": {
"AdditionalIncludeDirectories": "1",
"AdditionalOptions": "2",
},
"Link": {},
"ResourceCompile": {
# Custom
"Culture": "0x03eb"
},
}
actual_msbuild_settings = MSVSSettings.ConvertToMSBuildSettings(
msvs_settings, self.stderr
)
self.assertEqual(expected_msbuild_settings, actual_msbuild_settings)
self._ExpectedWarnings(
[
"Warning: while converting VCCLCompilerTool/BasicRuntimeChecks to "
"MSBuild, index value (12) not in expected range [0, 4)",
"Warning: while converting VCCLCompilerTool/BrowseInformation to "
"MSBuild, index value (21) not in expected range [0, 3)",
"Warning: while converting VCCLCompilerTool/UsePrecompiledHeader to "
"MSBuild, index value (13) not in expected range [0, 3)",
"Warning: while converting "
"VCCLCompilerTool/GeneratePreprocessedFile to "
"MSBuild, value must be one of [0, 1, 2]; got 14",
"Warning: while converting VCLinkerTool/Driver to "
"MSBuild, index value (10) not in expected range [0, 4)",
"Warning: while converting VCLinkerTool/LinkTimeCodeGeneration to "
"MSBuild, index value (31) not in expected range [0, 5)",
"Warning: while converting VCLinkerTool/ErrorReporting to "
"MSBuild, index value (21) not in expected range [0, 3)",
"Warning: while converting VCLinkerTool/FixedBaseAddress to "
"MSBuild, index value (6) not in expected range [0, 3)",
]
)
def testConvertToMSBuildSettings_full_synthetic(self):
"""Tests conversion of all the MSBuild settings."""
msvs_settings = {
"VCCLCompilerTool": {
"AdditionalIncludeDirectories": "folder1;folder2;folder3",
"AdditionalOptions": "a_string",
"AdditionalUsingDirectories": "folder1;folder2;folder3",
"AssemblerListingLocation": "a_file_name",
"AssemblerOutput": "0",
"BasicRuntimeChecks": "1",
"BrowseInformation": "2",
"BrowseInformationFile": "a_file_name",
"BufferSecurityCheck": "true",
"CallingConvention": "0",
"CompileAs": "1",
"DebugInformationFormat": "4",
"DefaultCharIsUnsigned": "true",
"Detect64BitPortabilityProblems": "true",
"DisableLanguageExtensions": "true",
"DisableSpecificWarnings": "d1;d2;d3",
"EnableEnhancedInstructionSet": "0",
"EnableFiberSafeOptimizations": "true",
"EnableFunctionLevelLinking": "true",
"EnableIntrinsicFunctions": "true",
"EnablePREfast": "true",
"ErrorReporting": "1",
"ExceptionHandling": "2",
"ExpandAttributedSource": "true",
"FavorSizeOrSpeed": "0",
"FloatingPointExceptions": "true",
"FloatingPointModel": "1",
"ForceConformanceInForLoopScope": "true",
"ForcedIncludeFiles": "file1;file2;file3",
"ForcedUsingFiles": "file1;file2;file3",
"GeneratePreprocessedFile": "1",
"GenerateXMLDocumentationFiles": "true",
"IgnoreStandardIncludePath": "true",
"InlineFunctionExpansion": "2",
"KeepComments": "true",
"MinimalRebuild": "true",
"ObjectFile": "a_file_name",
"OmitDefaultLibName": "true",
"OmitFramePointers": "true",
"OpenMP": "true",
"Optimization": "3",
"PrecompiledHeaderFile": "a_file_name",
"PrecompiledHeaderThrough": "a_file_name",
"PreprocessorDefinitions": "d1;d2;d3",
"ProgramDataBaseFileName": "a_file_name",
"RuntimeLibrary": "0",
"RuntimeTypeInfo": "true",
"ShowIncludes": "true",
"SmallerTypeCheck": "true",
"StringPooling": "true",
"StructMemberAlignment": "1",
"SuppressStartupBanner": "true",
"TreatWChar_tAsBuiltInType": "true",
"UndefineAllPreprocessorDefinitions": "true",
"UndefinePreprocessorDefinitions": "d1;d2;d3",
"UseFullPaths": "true",
"UsePrecompiledHeader": "1",
"UseUnicodeResponseFiles": "true",
"WarnAsError": "true",
"WarningLevel": "2",
"WholeProgramOptimization": "true",
"XMLDocumentationFileName": "a_file_name",
},
"VCLinkerTool": {
"AdditionalDependencies": "file1;file2;file3",
"AdditionalLibraryDirectories": "folder1;folder2;folder3",
"AdditionalLibraryDirectories_excluded": "folder1;folder2;folder3",
"AdditionalManifestDependencies": "file1;file2;file3",
"AdditionalOptions": "a_string",
"AddModuleNamesToAssembly": "file1;file2;file3",
"AllowIsolation": "true",
"AssemblyDebug": "0",
"AssemblyLinkResource": "file1;file2;file3",
"BaseAddress": "a_string",
"CLRImageType": "1",
"CLRThreadAttribute": "2",
"CLRUnmanagedCodeCheck": "true",
"DataExecutionPrevention": "0",
"DelayLoadDLLs": "file1;file2;file3",
"DelaySign": "true",
"Driver": "1",
"EmbedManagedResourceFile": "file1;file2;file3",
"EnableCOMDATFolding": "0",
"EnableUAC": "true",
"EntryPointSymbol": "a_string",
"ErrorReporting": "0",
"FixedBaseAddress": "1",
"ForceSymbolReferences": "file1;file2;file3",
"FunctionOrder": "a_file_name",
"GenerateDebugInformation": "true",
"GenerateManifest": "true",
"GenerateMapFile": "true",
"HeapCommitSize": "a_string",
"HeapReserveSize": "a_string",
"IgnoreAllDefaultLibraries": "true",
"IgnoreDefaultLibraryNames": "file1;file2;file3",
"IgnoreEmbeddedIDL": "true",
"IgnoreImportLibrary": "true",
"ImportLibrary": "a_file_name",
"KeyContainer": "a_file_name",
"KeyFile": "a_file_name",
"LargeAddressAware": "2",
"LinkIncremental": "1",
"LinkLibraryDependencies": "true",
"LinkTimeCodeGeneration": "2",
"ManifestFile": "a_file_name",
"MapExports": "true",
"MapFileName": "a_file_name",
"MergedIDLBaseFileName": "a_file_name",
"MergeSections": "a_string",
"MidlCommandFile": "a_file_name",
"ModuleDefinitionFile": "a_file_name",
"OptimizeForWindows98": "1",
"OptimizeReferences": "0",
"OutputFile": "a_file_name",
"PerUserRedirection": "true",
"Profile": "true",
"ProfileGuidedDatabase": "a_file_name",
"ProgramDatabaseFile": "a_file_name",
"RandomizedBaseAddress": "1",
"RegisterOutput": "true",
"ResourceOnlyDLL": "true",
"SetChecksum": "true",
"ShowProgress": "0",
"StackCommitSize": "a_string",
"StackReserveSize": "a_string",
"StripPrivateSymbols": "a_file_name",
"SubSystem": "2",
"SupportUnloadOfDelayLoadedDLL": "true",
"SuppressStartupBanner": "true",
"SwapRunFromCD": "true",
"SwapRunFromNet": "true",
"TargetMachine": "3",
"TerminalServerAware": "2",
"TurnOffAssemblyGeneration": "true",
"TypeLibraryFile": "a_file_name",
"TypeLibraryResourceID": "33",
"UACExecutionLevel": "1",
"UACUIAccess": "true",
"UseLibraryDependencyInputs": "false",
"UseUnicodeResponseFiles": "true",
"Version": "a_string",
},
"VCResourceCompilerTool": {
"AdditionalIncludeDirectories": "folder1;folder2;folder3",
"AdditionalOptions": "a_string",
"Culture": "1003",
"IgnoreStandardIncludePath": "true",
"PreprocessorDefinitions": "d1;d2;d3",
"ResourceOutputFileName": "a_string",
"ShowProgress": "true",
"SuppressStartupBanner": "true",
"UndefinePreprocessorDefinitions": "d1;d2;d3",
},
"VCMIDLTool": {
"AdditionalIncludeDirectories": "folder1;folder2;folder3",
"AdditionalOptions": "a_string",
"CPreprocessOptions": "a_string",
"DefaultCharType": "0",
"DLLDataFileName": "a_file_name",
"EnableErrorChecks": "2",
"ErrorCheckAllocations": "true",
"ErrorCheckBounds": "true",
"ErrorCheckEnumRange": "true",
"ErrorCheckRefPointers": "true",
"ErrorCheckStubData": "true",
"GenerateStublessProxies": "true",
"GenerateTypeLibrary": "true",
"HeaderFileName": "a_file_name",
"IgnoreStandardIncludePath": "true",
"InterfaceIdentifierFileName": "a_file_name",
"MkTypLibCompatible": "true",
"OutputDirectory": "a_string",
"PreprocessorDefinitions": "d1;d2;d3",
"ProxyFileName": "a_file_name",
"RedirectOutputAndErrors": "a_file_name",
"StructMemberAlignment": "3",
"SuppressStartupBanner": "true",
"TargetEnvironment": "1",
"TypeLibraryName": "a_file_name",
"UndefinePreprocessorDefinitions": "d1;d2;d3",
"ValidateParameters": "true",
"WarnAsError": "true",
"WarningLevel": "4",
},
"VCLibrarianTool": {
"AdditionalDependencies": "file1;file2;file3",
"AdditionalLibraryDirectories": "folder1;folder2;folder3",
"AdditionalLibraryDirectories_excluded": "folder1;folder2;folder3",
"AdditionalOptions": "a_string",
"ExportNamedFunctions": "d1;d2;d3",
"ForceSymbolReferences": "a_string",
"IgnoreAllDefaultLibraries": "true",
"IgnoreSpecificDefaultLibraries": "file1;file2;file3",
"LinkLibraryDependencies": "true",
"ModuleDefinitionFile": "a_file_name",
"OutputFile": "a_file_name",
"SuppressStartupBanner": "true",
"UseUnicodeResponseFiles": "true",
},
"VCManifestTool": {
"AdditionalManifestFiles": "file1;file2;file3",
"AdditionalOptions": "a_string",
"AssemblyIdentity": "a_string",
"ComponentFileName": "a_file_name",
"DependencyInformationFile": "a_file_name",
"EmbedManifest": "true",
"GenerateCatalogFiles": "true",
"InputResourceManifests": "a_string",
"ManifestResourceFile": "my_name",
"OutputManifestFile": "a_file_name",
"RegistrarScriptFile": "a_file_name",
"ReplacementsFile": "a_file_name",
"SuppressStartupBanner": "true",
"TypeLibraryFile": "a_file_name",
"UpdateFileHashes": "true",
"UpdateFileHashesSearchPath": "a_file_name",
"UseFAT32Workaround": "true",
"UseUnicodeResponseFiles": "true",
"VerboseOutput": "true",
},
}
expected_msbuild_settings = {
"ClCompile": {
"AdditionalIncludeDirectories": "folder1;folder2;folder3",
"AdditionalOptions": "a_string /J",
"AdditionalUsingDirectories": "folder1;folder2;folder3",
"AssemblerListingLocation": "a_file_name",
"AssemblerOutput": "NoListing",
"BasicRuntimeChecks": "StackFrameRuntimeCheck",
"BrowseInformation": "true",
"BrowseInformationFile": "a_file_name",
"BufferSecurityCheck": "true",
"CallingConvention": "Cdecl",
"CompileAs": "CompileAsC",
"DebugInformationFormat": "EditAndContinue",
"DisableLanguageExtensions": "true",
"DisableSpecificWarnings": "d1;d2;d3",
"EnableEnhancedInstructionSet": "NotSet",
"EnableFiberSafeOptimizations": "true",
"EnablePREfast": "true",
"ErrorReporting": "Prompt",
"ExceptionHandling": "Async",
"ExpandAttributedSource": "true",
"FavorSizeOrSpeed": "Neither",
"FloatingPointExceptions": "true",
"FloatingPointModel": "Strict",
"ForceConformanceInForLoopScope": "true",
"ForcedIncludeFiles": "file1;file2;file3",
"ForcedUsingFiles": "file1;file2;file3",
"FunctionLevelLinking": "true",
"GenerateXMLDocumentationFiles": "true",
"IgnoreStandardIncludePath": "true",
"InlineFunctionExpansion": "AnySuitable",
"IntrinsicFunctions": "true",
"MinimalRebuild": "true",
"ObjectFileName": "a_file_name",
"OmitDefaultLibName": "true",
"OmitFramePointers": "true",
"OpenMPSupport": "true",
"Optimization": "Full",
"PrecompiledHeader": "Create",
"PrecompiledHeaderFile": "a_file_name",
"PrecompiledHeaderOutputFile": "a_file_name",
"PreprocessKeepComments": "true",
"PreprocessorDefinitions": "d1;d2;d3",
"PreprocessSuppressLineNumbers": "false",
"PreprocessToFile": "true",
"ProgramDataBaseFileName": "a_file_name",
"RuntimeLibrary": "MultiThreaded",
"RuntimeTypeInfo": "true",
"ShowIncludes": "true",
"SmallerTypeCheck": "true",
"StringPooling": "true",
"StructMemberAlignment": "1Byte",
"SuppressStartupBanner": "true",
"TreatWarningAsError": "true",
"TreatWChar_tAsBuiltInType": "true",
"UndefineAllPreprocessorDefinitions": "true",
"UndefinePreprocessorDefinitions": "d1;d2;d3",
"UseFullPaths": "true",
"WarningLevel": "Level2",
"WholeProgramOptimization": "true",
"XMLDocumentationFileName": "a_file_name",
},
"Link": {
"AdditionalDependencies": "file1;file2;file3",
"AdditionalLibraryDirectories": "folder1;folder2;folder3",
"AdditionalManifestDependencies": "file1;file2;file3",
"AdditionalOptions": "a_string",
"AddModuleNamesToAssembly": "file1;file2;file3",
"AllowIsolation": "true",
"AssemblyDebug": "",
"AssemblyLinkResource": "file1;file2;file3",
"BaseAddress": "a_string",
"CLRImageType": "ForceIJWImage",
"CLRThreadAttribute": "STAThreadingAttribute",
"CLRUnmanagedCodeCheck": "true",
"DataExecutionPrevention": "",
"DelayLoadDLLs": "file1;file2;file3",
"DelaySign": "true",
"Driver": "Driver",
"EmbedManagedResourceFile": "file1;file2;file3",
"EnableCOMDATFolding": "",
"EnableUAC": "true",
"EntryPointSymbol": "a_string",
"FixedBaseAddress": "false",
"ForceSymbolReferences": "file1;file2;file3",
"FunctionOrder": "a_file_name",
"GenerateDebugInformation": "true",
"GenerateMapFile": "true",
"HeapCommitSize": "a_string",
"HeapReserveSize": "a_string",
"IgnoreAllDefaultLibraries": "true",
"IgnoreEmbeddedIDL": "true",
"IgnoreSpecificDefaultLibraries": "file1;file2;file3",
"ImportLibrary": "a_file_name",
"KeyContainer": "a_file_name",
"KeyFile": "a_file_name",
"LargeAddressAware": "true",
"LinkErrorReporting": "NoErrorReport",
"LinkTimeCodeGeneration": "PGInstrument",
"ManifestFile": "a_file_name",
"MapExports": "true",
"MapFileName": "a_file_name",
"MergedIDLBaseFileName": "a_file_name",
"MergeSections": "a_string",
"MidlCommandFile": "a_file_name",
"ModuleDefinitionFile": "a_file_name",
"NoEntryPoint": "true",
"OptimizeReferences": "",
"OutputFile": "a_file_name",
"PerUserRedirection": "true",
"Profile": "true",
"ProfileGuidedDatabase": "a_file_name",
"ProgramDatabaseFile": "a_file_name",
"RandomizedBaseAddress": "false",
"RegisterOutput": "true",
"SetChecksum": "true",
"ShowProgress": "NotSet",
"StackCommitSize": "a_string",
"StackReserveSize": "a_string",
"StripPrivateSymbols": "a_file_name",
"SubSystem": "Windows",
"SupportUnloadOfDelayLoadedDLL": "true",
"SuppressStartupBanner": "true",
"SwapRunFromCD": "true",
"SwapRunFromNET": "true",
"TargetMachine": "MachineARM",
"TerminalServerAware": "true",
"TurnOffAssemblyGeneration": "true",
"TypeLibraryFile": "a_file_name",
"TypeLibraryResourceID": "33",
"UACExecutionLevel": "HighestAvailable",
"UACUIAccess": "true",
"Version": "a_string",
},
"ResourceCompile": {
"AdditionalIncludeDirectories": "folder1;folder2;folder3",
"AdditionalOptions": "a_string",
"Culture": "0x03eb",
"IgnoreStandardIncludePath": "true",
"PreprocessorDefinitions": "d1;d2;d3",
"ResourceOutputFileName": "a_string",
"ShowProgress": "true",
"SuppressStartupBanner": "true",
"UndefinePreprocessorDefinitions": "d1;d2;d3",
},
"Midl": {
"AdditionalIncludeDirectories": "folder1;folder2;folder3",
"AdditionalOptions": "a_string",
"CPreprocessOptions": "a_string",
"DefaultCharType": "Unsigned",
"DllDataFileName": "a_file_name",
"EnableErrorChecks": "All",
"ErrorCheckAllocations": "true",
"ErrorCheckBounds": "true",
"ErrorCheckEnumRange": "true",
"ErrorCheckRefPointers": "true",
"ErrorCheckStubData": "true",
"GenerateStublessProxies": "true",
"GenerateTypeLibrary": "true",
"HeaderFileName": "a_file_name",
"IgnoreStandardIncludePath": "true",
"InterfaceIdentifierFileName": "a_file_name",
"MkTypLibCompatible": "true",
"OutputDirectory": "a_string",
"PreprocessorDefinitions": "d1;d2;d3",
"ProxyFileName": "a_file_name",
"RedirectOutputAndErrors": "a_file_name",
"StructMemberAlignment": "4",
"SuppressStartupBanner": "true",
"TargetEnvironment": "Win32",
"TypeLibraryName": "a_file_name",
"UndefinePreprocessorDefinitions": "d1;d2;d3",
"ValidateAllParameters": "true",
"WarnAsError": "true",
"WarningLevel": "4",
},
"Lib": {
"AdditionalDependencies": "file1;file2;file3",
"AdditionalLibraryDirectories": "folder1;folder2;folder3",
"AdditionalOptions": "a_string",
"ExportNamedFunctions": "d1;d2;d3",
"ForceSymbolReferences": "a_string",
"IgnoreAllDefaultLibraries": "true",
"IgnoreSpecificDefaultLibraries": "file1;file2;file3",
"ModuleDefinitionFile": "a_file_name",
"OutputFile": "a_file_name",
"SuppressStartupBanner": "true",
"UseUnicodeResponseFiles": "true",
},
"Manifest": {
"AdditionalManifestFiles": "file1;file2;file3",
"AdditionalOptions": "a_string",
"AssemblyIdentity": "a_string",
"ComponentFileName": "a_file_name",
"GenerateCatalogFiles": "true",
"InputResourceManifests": "a_string",
"OutputManifestFile": "a_file_name",
"RegistrarScriptFile": "a_file_name",
"ReplacementsFile": "a_file_name",
"SuppressStartupBanner": "true",
"TypeLibraryFile": "a_file_name",
"UpdateFileHashes": "true",
"UpdateFileHashesSearchPath": "a_file_name",
"VerboseOutput": "true",
},
"ManifestResourceCompile": {"ResourceOutputFileName": "my_name"},
"ProjectReference": {
"LinkLibraryDependencies": "true",
"UseLibraryDependencyInputs": "false",
},
"": {
"EmbedManifest": "true",
"GenerateManifest": "true",
"IgnoreImportLibrary": "true",
"LinkIncremental": "false",
},
}
self.maxDiff = 9999 # on failure display a long diff
actual_msbuild_settings = MSVSSettings.ConvertToMSBuildSettings(
msvs_settings, self.stderr
)
self.assertEqual(expected_msbuild_settings, actual_msbuild_settings)
self._ExpectedWarnings([])
def testConvertToMSBuildSettings_actual(self):
"""Tests the conversion of an actual project.
A VS2008 project with most of the options defined was created through the
VS2008 IDE. It was then converted to VS2010. The tool settings found in
the .vcproj and .vcxproj files were converted to the two dictionaries
msvs_settings and expected_msbuild_settings.
Note that for many settings, the VS2010 converter adds macros like
%(AdditionalIncludeDirectories) to make sure than inherited values are
included. Since the Gyp projects we generate do not use inheritance,
we removed these macros. They were:
ClCompile:
AdditionalIncludeDirectories: ';%(AdditionalIncludeDirectories)'
AdditionalOptions: ' %(AdditionalOptions)'
AdditionalUsingDirectories: ';%(AdditionalUsingDirectories)'
DisableSpecificWarnings: ';%(DisableSpecificWarnings)',
ForcedIncludeFiles: ';%(ForcedIncludeFiles)',
ForcedUsingFiles: ';%(ForcedUsingFiles)',
PreprocessorDefinitions: ';%(PreprocessorDefinitions)',
UndefinePreprocessorDefinitions:
';%(UndefinePreprocessorDefinitions)',
Link:
AdditionalDependencies: ';%(AdditionalDependencies)',
AdditionalLibraryDirectories: ';%(AdditionalLibraryDirectories)',
AdditionalManifestDependencies:
';%(AdditionalManifestDependencies)',
AdditionalOptions: ' %(AdditionalOptions)',
AddModuleNamesToAssembly: ';%(AddModuleNamesToAssembly)',
AssemblyLinkResource: ';%(AssemblyLinkResource)',
DelayLoadDLLs: ';%(DelayLoadDLLs)',
EmbedManagedResourceFile: ';%(EmbedManagedResourceFile)',
ForceSymbolReferences: ';%(ForceSymbolReferences)',
IgnoreSpecificDefaultLibraries:
';%(IgnoreSpecificDefaultLibraries)',
ResourceCompile:
AdditionalIncludeDirectories: ';%(AdditionalIncludeDirectories)',
AdditionalOptions: ' %(AdditionalOptions)',
PreprocessorDefinitions: ';%(PreprocessorDefinitions)',
Manifest:
AdditionalManifestFiles: ';%(AdditionalManifestFiles)',
AdditionalOptions: ' %(AdditionalOptions)',
InputResourceManifests: ';%(InputResourceManifests)',
"""
msvs_settings = {
"VCCLCompilerTool": {
"AdditionalIncludeDirectories": "dir1",
"AdditionalOptions": "/more",
"AdditionalUsingDirectories": "test",
"AssemblerListingLocation": "$(IntDir)\\a",
"AssemblerOutput": "1",
"BasicRuntimeChecks": "3",
"BrowseInformation": "1",
"BrowseInformationFile": "$(IntDir)\\e",
"BufferSecurityCheck": "false",
"CallingConvention": "1",
"CompileAs": "1",
"DebugInformationFormat": "4",
"DefaultCharIsUnsigned": "true",
"Detect64BitPortabilityProblems": "true",
"DisableLanguageExtensions": "true",
"DisableSpecificWarnings": "abc",
"EnableEnhancedInstructionSet": "1",
"EnableFiberSafeOptimizations": "true",
"EnableFunctionLevelLinking": "true",
"EnableIntrinsicFunctions": "true",
"EnablePREfast": "true",
"ErrorReporting": "2",
"ExceptionHandling": "2",
"ExpandAttributedSource": "true",
"FavorSizeOrSpeed": "2",
"FloatingPointExceptions": "true",
"FloatingPointModel": "1",
"ForceConformanceInForLoopScope": "false",
"ForcedIncludeFiles": "def",
"ForcedUsingFiles": "ge",
"GeneratePreprocessedFile": "2",
"GenerateXMLDocumentationFiles": "true",
"IgnoreStandardIncludePath": "true",
"InlineFunctionExpansion": "1",
"KeepComments": "true",
"MinimalRebuild": "true",
"ObjectFile": "$(IntDir)\\b",
"OmitDefaultLibName": "true",
"OmitFramePointers": "true",
"OpenMP": "true",
"Optimization": "3",
"PrecompiledHeaderFile": "$(IntDir)\\$(TargetName).pche",
"PrecompiledHeaderThrough": "StdAfx.hd",
"PreprocessorDefinitions": "WIN32;_DEBUG;_CONSOLE",
"ProgramDataBaseFileName": "$(IntDir)\\vc90b.pdb",
"RuntimeLibrary": "3",
"RuntimeTypeInfo": "false",
"ShowIncludes": "true",
"SmallerTypeCheck": "true",
"StringPooling": "true",
"StructMemberAlignment": "3",
"SuppressStartupBanner": "false",
"TreatWChar_tAsBuiltInType": "false",
"UndefineAllPreprocessorDefinitions": "true",
"UndefinePreprocessorDefinitions": "wer",
"UseFullPaths": "true",
"UsePrecompiledHeader": "0",
"UseUnicodeResponseFiles": "false",
"WarnAsError": "true",
"WarningLevel": "3",
"WholeProgramOptimization": "true",
"XMLDocumentationFileName": "$(IntDir)\\c",
},
"VCLinkerTool": {
"AdditionalDependencies": "zx",
"AdditionalLibraryDirectories": "asd",
"AdditionalManifestDependencies": "s2",
"AdditionalOptions": "/mor2",
"AddModuleNamesToAssembly": "d1",
"AllowIsolation": "false",
"AssemblyDebug": "1",
"AssemblyLinkResource": "d5",
"BaseAddress": "23423",
"CLRImageType": "3",
"CLRThreadAttribute": "1",
"CLRUnmanagedCodeCheck": "true",
"DataExecutionPrevention": "0",
"DelayLoadDLLs": "d4",
"DelaySign": "true",
"Driver": "2",
"EmbedManagedResourceFile": "d2",
"EnableCOMDATFolding": "1",
"EnableUAC": "false",
"EntryPointSymbol": "f5",
"ErrorReporting": "2",
"FixedBaseAddress": "1",
"ForceSymbolReferences": "d3",
"FunctionOrder": "fssdfsd",
"GenerateDebugInformation": "true",
"GenerateManifest": "false",
"GenerateMapFile": "true",
"HeapCommitSize": "13",
"HeapReserveSize": "12",
"IgnoreAllDefaultLibraries": "true",
"IgnoreDefaultLibraryNames": "flob;flok",
"IgnoreEmbeddedIDL": "true",
"IgnoreImportLibrary": "true",
"ImportLibrary": "f4",
"KeyContainer": "f7",
"KeyFile": "f6",
"LargeAddressAware": "2",
"LinkIncremental": "0",
"LinkLibraryDependencies": "false",
"LinkTimeCodeGeneration": "1",
"ManifestFile": "$(IntDir)\\$(TargetFileName).2intermediate.manifest",
"MapExports": "true",
"MapFileName": "d5",
"MergedIDLBaseFileName": "f2",
"MergeSections": "f5",
"MidlCommandFile": "f1",
"ModuleDefinitionFile": "sdsd",
"OptimizeForWindows98": "2",
"OptimizeReferences": "2",
"OutputFile": "$(OutDir)\\$(ProjectName)2.exe",
"PerUserRedirection": "true",
"Profile": "true",
"ProfileGuidedDatabase": "$(TargetDir)$(TargetName).pgdd",
"ProgramDatabaseFile": "Flob.pdb",
"RandomizedBaseAddress": "1",
"RegisterOutput": "true",
"ResourceOnlyDLL": "true",
"SetChecksum": "false",
"ShowProgress": "1",
"StackCommitSize": "15",
"StackReserveSize": "14",
"StripPrivateSymbols": "d3",
"SubSystem": "1",
"SupportUnloadOfDelayLoadedDLL": "true",
"SuppressStartupBanner": "false",
"SwapRunFromCD": "true",
"SwapRunFromNet": "true",
"TargetMachine": "1",
"TerminalServerAware": "1",
"TurnOffAssemblyGeneration": "true",
"TypeLibraryFile": "f3",
"TypeLibraryResourceID": "12",
"UACExecutionLevel": "2",
"UACUIAccess": "true",
"UseLibraryDependencyInputs": "true",
"UseUnicodeResponseFiles": "false",
"Version": "333",
},
"VCResourceCompilerTool": {
"AdditionalIncludeDirectories": "f3",
"AdditionalOptions": "/more3",
"Culture": "3084",
"IgnoreStandardIncludePath": "true",
"PreprocessorDefinitions": "_UNICODE;UNICODE2",
"ResourceOutputFileName": "$(IntDir)/$(InputName)3.res",
"ShowProgress": "true",
},
"VCManifestTool": {
"AdditionalManifestFiles": "sfsdfsd",
"AdditionalOptions": "afdsdafsd",
"AssemblyIdentity": "sddfdsadfsa",
"ComponentFileName": "fsdfds",
"DependencyInformationFile": "$(IntDir)\\mt.depdfd",
"EmbedManifest": "false",
"GenerateCatalogFiles": "true",
"InputResourceManifests": "asfsfdafs",
"ManifestResourceFile":
"$(IntDir)\\$(TargetFileName).embed.manifest.resfdsf",
"OutputManifestFile": "$(TargetPath).manifestdfs",
"RegistrarScriptFile": "sdfsfd",
"ReplacementsFile": "sdffsd",
"SuppressStartupBanner": "false",
"TypeLibraryFile": "sfsd",
"UpdateFileHashes": "true",
"UpdateFileHashesSearchPath": "sfsd",
"UseFAT32Workaround": "true",
"UseUnicodeResponseFiles": "false",
"VerboseOutput": "true",
},
}
expected_msbuild_settings = {
"ClCompile": {
"AdditionalIncludeDirectories": "dir1",
"AdditionalOptions": "/more /J",
"AdditionalUsingDirectories": "test",
"AssemblerListingLocation": "$(IntDir)a",
"AssemblerOutput": "AssemblyCode",
"BasicRuntimeChecks": "EnableFastChecks",
"BrowseInformation": "true",
"BrowseInformationFile": "$(IntDir)e",
"BufferSecurityCheck": "false",
"CallingConvention": "FastCall",
"CompileAs": "CompileAsC",
"DebugInformationFormat": "EditAndContinue",
"DisableLanguageExtensions": "true",
"DisableSpecificWarnings": "abc",
"EnableEnhancedInstructionSet": "StreamingSIMDExtensions",
"EnableFiberSafeOptimizations": "true",
"EnablePREfast": "true",
"ErrorReporting": "Queue",
"ExceptionHandling": "Async",
"ExpandAttributedSource": "true",
"FavorSizeOrSpeed": "Size",
"FloatingPointExceptions": "true",
"FloatingPointModel": "Strict",
"ForceConformanceInForLoopScope": "false",
"ForcedIncludeFiles": "def",
"ForcedUsingFiles": "ge",
"FunctionLevelLinking": "true",
"GenerateXMLDocumentationFiles": "true",
"IgnoreStandardIncludePath": "true",
"InlineFunctionExpansion": "OnlyExplicitInline",
"IntrinsicFunctions": "true",
"MinimalRebuild": "true",
"ObjectFileName": "$(IntDir)b",
"OmitDefaultLibName": "true",
"OmitFramePointers": "true",
"OpenMPSupport": "true",
"Optimization": "Full",
"PrecompiledHeader": "NotUsing", # Actual conversion gives ''
"PrecompiledHeaderFile": "StdAfx.hd",
"PrecompiledHeaderOutputFile": "$(IntDir)$(TargetName).pche",
"PreprocessKeepComments": "true",
"PreprocessorDefinitions": "WIN32;_DEBUG;_CONSOLE",
"PreprocessSuppressLineNumbers": "true",
"PreprocessToFile": "true",
"ProgramDataBaseFileName": "$(IntDir)vc90b.pdb",
"RuntimeLibrary": "MultiThreadedDebugDLL",
"RuntimeTypeInfo": "false",
"ShowIncludes": "true",
"SmallerTypeCheck": "true",
"StringPooling": "true",
"StructMemberAlignment": "4Bytes",
"SuppressStartupBanner": "false",
"TreatWarningAsError": "true",
"TreatWChar_tAsBuiltInType": "false",
"UndefineAllPreprocessorDefinitions": "true",
"UndefinePreprocessorDefinitions": "wer",
"UseFullPaths": "true",
"WarningLevel": "Level3",
"WholeProgramOptimization": "true",
"XMLDocumentationFileName": "$(IntDir)c",
},
"Link": {
"AdditionalDependencies": "zx",
"AdditionalLibraryDirectories": "asd",
"AdditionalManifestDependencies": "s2",
"AdditionalOptions": "/mor2",
"AddModuleNamesToAssembly": "d1",
"AllowIsolation": "false",
"AssemblyDebug": "true",
"AssemblyLinkResource": "d5",
"BaseAddress": "23423",
"CLRImageType": "ForceSafeILImage",
"CLRThreadAttribute": "MTAThreadingAttribute",
"CLRUnmanagedCodeCheck": "true",
"DataExecutionPrevention": "",
"DelayLoadDLLs": "d4",
"DelaySign": "true",
"Driver": "UpOnly",
"EmbedManagedResourceFile": "d2",
"EnableCOMDATFolding": "false",
"EnableUAC": "false",
"EntryPointSymbol": "f5",
"FixedBaseAddress": "false",
"ForceSymbolReferences": "d3",
"FunctionOrder": "fssdfsd",
"GenerateDebugInformation": "true",
"GenerateMapFile": "true",
"HeapCommitSize": "13",
"HeapReserveSize": "12",
"IgnoreAllDefaultLibraries": "true",
"IgnoreEmbeddedIDL": "true",
"IgnoreSpecificDefaultLibraries": "flob;flok",
"ImportLibrary": "f4",
"KeyContainer": "f7",
"KeyFile": "f6",
"LargeAddressAware": "true",
"LinkErrorReporting": "QueueForNextLogin",
"LinkTimeCodeGeneration": "UseLinkTimeCodeGeneration",
"ManifestFile": "$(IntDir)$(TargetFileName).2intermediate.manifest",
"MapExports": "true",
"MapFileName": "d5",
"MergedIDLBaseFileName": "f2",
"MergeSections": "f5",
"MidlCommandFile": "f1",
"ModuleDefinitionFile": "sdsd",
"NoEntryPoint": "true",
"OptimizeReferences": "true",
"OutputFile": "$(OutDir)$(ProjectName)2.exe",
"PerUserRedirection": "true",
"Profile": "true",
"ProfileGuidedDatabase": "$(TargetDir)$(TargetName).pgdd",
"ProgramDatabaseFile": "Flob.pdb",
"RandomizedBaseAddress": "false",
"RegisterOutput": "true",
"SetChecksum": "false",
"ShowProgress": "LinkVerbose",
"StackCommitSize": "15",
"StackReserveSize": "14",
"StripPrivateSymbols": "d3",
"SubSystem": "Console",
"SupportUnloadOfDelayLoadedDLL": "true",
"SuppressStartupBanner": "false",
"SwapRunFromCD": "true",
"SwapRunFromNET": "true",
"TargetMachine": "MachineX86",
"TerminalServerAware": "false",
"TurnOffAssemblyGeneration": "true",
"TypeLibraryFile": "f3",
"TypeLibraryResourceID": "12",
"UACExecutionLevel": "RequireAdministrator",
"UACUIAccess": "true",
"Version": "333",
},
"ResourceCompile": {
"AdditionalIncludeDirectories": "f3",
"AdditionalOptions": "/more3",
"Culture": "0x0c0c",
"IgnoreStandardIncludePath": "true",
"PreprocessorDefinitions": "_UNICODE;UNICODE2",
"ResourceOutputFileName": "$(IntDir)%(Filename)3.res",
"ShowProgress": "true",
},
"Manifest": {
"AdditionalManifestFiles": "sfsdfsd",
"AdditionalOptions": "afdsdafsd",
"AssemblyIdentity": "sddfdsadfsa",
"ComponentFileName": "fsdfds",
"GenerateCatalogFiles": "true",
"InputResourceManifests": "asfsfdafs",
"OutputManifestFile": "$(TargetPath).manifestdfs",
"RegistrarScriptFile": "sdfsfd",
"ReplacementsFile": "sdffsd",
"SuppressStartupBanner": "false",
"TypeLibraryFile": "sfsd",
"UpdateFileHashes": "true",
"UpdateFileHashesSearchPath": "sfsd",
"VerboseOutput": "true",
},
"ProjectReference": {
"LinkLibraryDependencies": "false",
"UseLibraryDependencyInputs": "true",
},
"": {
"EmbedManifest": "false",
"GenerateManifest": "false",
"IgnoreImportLibrary": "true",
"LinkIncremental": "",
},
"ManifestResourceCompile": {
"ResourceOutputFileName":
"$(IntDir)$(TargetFileName).embed.manifest.resfdsf"
},
}
self.maxDiff = 9999 # on failure display a long diff
actual_msbuild_settings = MSVSSettings.ConvertToMSBuildSettings(
msvs_settings, self.stderr
)
self.assertEqual(expected_msbuild_settings, actual_msbuild_settings)
self._ExpectedWarnings([])
if __name__ == "__main__":
unittest.main()