Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        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));
        }