#!/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()