| Viewing file:  MSVSSettings_test.py (64.57 KB)      -rwxr-xr-x Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
#!/opt/alt/python27/bin/python
 # 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."""
 
 try:
 from cStringIO import StringIO
 except ImportError:
 from io import StringIO
 
 import unittest
 import gyp.MSVSSettings as MSVSSettings
 
 
 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()
 
 |