/// <summary> /// Attempts to load Natvis files from a directory resolved from the Windows Registry. /// </summary> /// <param name="keyName">The registry key name.</param> /// <param name="valueName">The registry value name.</param> /// <param name="dirSuffix">The directory suffix to append to the path found in the /// registry.</param> /// <param name="typeVisualizers">Type visualizers to initialize.</param> /// <returns>False if the registry key doesn't exist.</returns> bool LoadFromRegistryKey(string keyName, string valueName, string dirSuffix, ICollection <NatvisVisualizerScanner.FileInfo> typeVisualizers) { if (_winRegistry == null) { throw new InvalidOperationException("winRegistry cannot be null."); } string natvisDir = (string)_winRegistry.GetValue(keyName, valueName, null); if (string.IsNullOrEmpty(natvisDir)) { return(false); } natvisDir = Path.GetFullPath(Path.Combine(natvisDir, dirSuffix)); LoadFromDirectory(natvisDir, typeVisualizers); return(true); }
public void ValidRegistryLoad() { // User directory set up. _mockRegistry.GetValue( @"HKEY_CURRENT_USER\Microsoft\Visual Studio\1.2.3", "VisualStudioLocation", null).Returns( @"C:\dummy\user\dir\path"); _mockFileSystem.AddFile(_userDirNatvisFilepath, new MockFileData(_validNatvis)); // System directory set up. _mockRegistry.GetValue( @"HKEY_CURRENT_USER\Microsoft\Visual Studio\1.2.3_Config", "InstallDir", null).Returns( @"C:\dummy\system\dir\path\extra-sub-dir"); _mockFileSystem.AddFile(_systemDirNatvisFilepath, new MockFileData(_validNatvis)); // Exercise _natvisScanner.LoadFromRegistry(@"Microsoft\Visual Studio\1.2.3"); Assert.That(_nLogSpy.GetOutput(), Does.Not.Contain("ERROR")); Assert.That(_nLogSpy.GetOutput(), Does.Not.Contain("WARNING")); Assert.That(_nLogSpy.GetOutput(), Does.Contain(_userDirNatvisFilepath)); Assert.That(_nLogSpy.GetOutput(), Does.Contain(_systemDirNatvisFilepath)); }