Пример #1
0
        public void ReadRegistry_IgnoreSubKeysExceptTopMostSubKeys()
        {
            RegistryKey key1 = toolsVersionsRegistryKey.CreateSubKey("tv1");

            key1.SetValue("msbuildtoolspath", "c:\\xxx");
            key1.SetValue("name1", "value1");
            RegistryKey subKey1 = key1.CreateSubKey("SubKey1");

            subKey1.SetValue("name1a", "value1a");
            subKey1.SetValue("name2a", "value2a");
            RegistryKey key2 = toolsVersionsRegistryKey.CreateSubKey("tv2");

            key2.SetValue("msbuildtoolspath", "c:\\yyy");
            key2.SetValue("name2", "value2");
            RegistryKey subKey2 = key2.CreateSubKey("SubKey2");

            subKey2.SetValue("name3a", "value3a");
            subKey2.SetValue("name2a", "value2a");

            ToolsetReader     reader = new ToolsetRegistryReader(new MockRegistryKey(testRegistryPath));
            ToolsetCollection values = new ToolsetCollection(new Engine(ToolsetDefinitionLocations.None));
            string            defaultToolsVersion = reader.ReadToolsets(values, new BuildPropertyGroup(), new BuildPropertyGroup(), false);

            Assertion.AssertEquals(2, values.Count);
            Assertion.AssertEquals(1, values["tv1"].BuildProperties.Count);
            Assertion.Assert(0 == String.Compare("c:\\xxx", values["tv1"].ToolsPath, StringComparison.OrdinalIgnoreCase));
            Assertion.Assert(0 == String.Compare("value1", values["tv1"].BuildProperties["name1"].Value, StringComparison.OrdinalIgnoreCase));
            Assertion.AssertEquals(1, values["tv2"].BuildProperties.Count);
            Assertion.Assert(0 == String.Compare("c:\\yyy", values["tv2"].ToolsPath, StringComparison.OrdinalIgnoreCase));
            Assertion.Assert(0 == String.Compare("value2", values["tv2"].BuildProperties["name2"].Value, StringComparison.OrdinalIgnoreCase));
        }
Пример #2
0
        public void GetDefaultToolsVersionFromRegistry_NonStringData()
        {
            currentVersionRegistryKey.SetValue("DefaultToolsVersion", new String[] { "2.0.xxxx.a", "2.0.xxxx.b" }, RegistryValueKind.MultiString);

            ToolsetReader     reader = new ToolsetRegistryReader(new MockRegistryKey(testRegistryPath));
            ToolsetCollection values = new ToolsetCollection(new Engine(ToolsetDefinitionLocations.None));
            string            defaultToolsVersion = reader.ReadToolsets(values, new BuildPropertyGroup(), new BuildPropertyGroup(), false);
        }
Пример #3
0
        public void GetDefaultToolsVersionFromRegistry_DefaultValueNotSet()
        {
            ToolsetReader     reader = new ToolsetRegistryReader(new MockRegistryKey(testRegistryPath));
            ToolsetCollection values = new ToolsetCollection(new Engine(ToolsetDefinitionLocations.None));
            string            defaultToolsVersion = reader.ReadToolsets(values, new BuildPropertyGroup(), new BuildPropertyGroup(), false);

            Assertion.AssertEquals(null, defaultToolsVersion);
        }
Пример #4
0
        public void ReadRegistry_DeletedKey()
        {
            DeleteTestRegistryKey();

            ToolsetReader     reader = new ToolsetRegistryReader(new MockRegistryKey(testRegistryPath));
            ToolsetCollection values = new ToolsetCollection(new Engine(ToolsetDefinitionLocations.None));

            string defaultToolsVersion = reader.ReadToolsets(values, new BuildPropertyGroup(), new BuildPropertyGroup(), false);

            Assertion.AssertEquals(0, values.Count);
        }
Пример #5
0
        public void DefaultValueInRegistryDoesNotExist()
        {
            ToolsetReader reader = new ToolsetRegistryReader(new MockRegistryKey(testRegistryPath, "3.5" /* fail to find subkey 3.5 */));

            ToolsetCollection values = new ToolsetCollection(new Engine(ToolsetDefinitionLocations.None));

            // Should not throw
            string defaultToolsVersion = reader.ReadToolsets(values, new BuildPropertyGroup(), new BuildPropertyGroup(), false);

            Assertion.AssertEquals(null, defaultToolsVersion);
        }
Пример #6
0
        public void ReadRegistry_NoSubkeysOnlyValues()
        {
            toolsVersionsRegistryKey.SetValue("Name1", "Value1");
            toolsVersionsRegistryKey.SetValue("Name2", "Value2");

            ToolsetReader     reader = new ToolsetRegistryReader(new MockRegistryKey(testRegistryPath));
            ToolsetCollection values = new ToolsetCollection(new Engine(ToolsetDefinitionLocations.None));
            string            defaultToolsVersion = reader.ReadToolsets(values, new BuildPropertyGroup(), new BuildPropertyGroup(), false);

            Assertion.AssertEquals(0, values.Count);
            Assertion.AssertEquals(null, defaultToolsVersion);
        }
        public void DefaultValueInRegistryDoesNotExist()
        {
            ToolsetReader reader = new ToolsetRegistryReader(new ProjectCollection().EnvironmentProperties, new PropertyDictionary <ProjectPropertyInstance>(), new MockRegistryKey(testRegistryPath, "3.5" /* fail to find subkey 3.5 */));

            Dictionary <string, Toolset> values = new Dictionary <string, Toolset>(StringComparer.OrdinalIgnoreCase);

            // Should not throw
            string msbuildOverrideTasksPath    = null;
            string defaultOverrideToolsVersion = null;
            string defaultToolsVersion         = reader.ReadToolsets(values, new PropertyDictionary <ProjectPropertyInstance>(), new PropertyDictionary <ProjectPropertyInstance>(), false, out msbuildOverrideTasksPath, out defaultOverrideToolsVersion);

            Assert.Equal(null, defaultToolsVersion);
        }
Пример #8
0
        public void GetDefaultToolsVersionFromRegistry_Basic()
        {
            currentVersionRegistryKey.SetValue("DefaultToolsVersion", "tv1");
            RegistryKey key1 = toolsVersionsRegistryKey.CreateSubKey("tv1"); // Need matching tools version

            key1.SetValue("msbuildtoolspath", "c:\\xxx");

            ToolsetReader     reader = new ToolsetRegistryReader(new MockRegistryKey(testRegistryPath));
            ToolsetCollection values = new ToolsetCollection(new Engine(ToolsetDefinitionLocations.None));
            string            defaultToolsVersion = reader.ReadToolsets(values, new BuildPropertyGroup(), new BuildPropertyGroup(), false);

            Assertion.AssertEquals("tv1", defaultToolsVersion);
        }
        // Ignore: Test requires installed toolset.
        public void DefaultValuesInRegistryCreatedBySetup()
        {
            ToolsetReader reader = new ToolsetRegistryReader(new ProjectCollection().EnvironmentProperties, new PropertyDictionary <ProjectPropertyInstance>());  //we don't use the test registry key because we want to verify the install

            Dictionary <string, Toolset> values = new Dictionary <string, Toolset>(StringComparer.OrdinalIgnoreCase);

            string msbuildOverrideTasksPath    = null;
            string defaultOverrideToolsVersion = null;
            string defaultToolsVersion         = reader.ReadToolsets(values, new PropertyDictionary <ProjectPropertyInstance>(), new PropertyDictionary <ProjectPropertyInstance>(), false, out msbuildOverrideTasksPath, out defaultOverrideToolsVersion);

            // Check the values in the data
            Assert.True(values.ContainsKey("4.0"));   // "Tools version 4.0 should be defined by default"
            Assert.True(values.ContainsKey(ObjectModelHelpers.MSBuildDefaultToolsVersion), String.Format("Tools version {0} should be defined by default", ObjectModelHelpers.MSBuildDefaultToolsVersion));
            Assert.Equal("2.0", defaultToolsVersion); // "Default tools version should be 2.0"
        }
Пример #10
0
        public void ReadRegistry_NonStringData()
        {
            RegistryKey key1 = toolsVersionsRegistryKey.CreateSubKey("tv1");

            key1.SetValue("msbuildtoolspath", "c:\\xxx");
            key1.SetValue("name1", "value1");
            RegistryKey key2 = toolsVersionsRegistryKey.CreateSubKey("tv2");

            key2.SetValue("msbuildtoolspath", "c:\\xxx");
            key2.SetValue("name2", new String[] { "value2a", "value2b" }, RegistryValueKind.MultiString);

            ToolsetReader     reader = new ToolsetRegistryReader(new MockRegistryKey(testRegistryPath));
            ToolsetCollection values = new ToolsetCollection(new Engine(ToolsetDefinitionLocations.None));
            string            defaultToolsVersion = reader.ReadToolsets(values, new BuildPropertyGroup(), new BuildPropertyGroup(), false);
        }
Пример #11
0
        public void ReadRegistry_OnlyOneSubkey()
        {
            RegistryKey key1 = toolsVersionsRegistryKey.CreateSubKey("tv1");

            key1.SetValue("msbuildtoolspath", "c:\\xxx");

            ToolsetReader     reader = new ToolsetRegistryReader(new MockRegistryKey(testRegistryPath));
            ToolsetCollection values = new ToolsetCollection(new Engine(ToolsetDefinitionLocations.None));
            string            defaultToolsVersion = reader.ReadToolsets(values, new BuildPropertyGroup(), new BuildPropertyGroup(), false);

            Assertion.AssertEquals(null, defaultToolsVersion);
            Assertion.AssertEquals(1, values.Count);
            Assertion.AssertEquals(0, values["tv1"].BuildProperties.Count);
            Assertion.Assert(0 == String.Compare("c:\\xxx", values["tv1"].ToolsPath, StringComparison.OrdinalIgnoreCase));
        }
Пример #12
0
        public void DefaultValuesInRegistryCreatedBySetup()
        {
            ToolsetReader reader = new ToolsetRegistryReader();  //we don't use the test registry key because we want to verify the install

            ToolsetCollection values = new ToolsetCollection(new Engine(ToolsetDefinitionLocations.None));

            string defaultToolsVersion = reader.ReadToolsets(values, new BuildPropertyGroup(), new BuildPropertyGroup(), false);

            // Check the values in the data
            Assertion.Assert("Tools version 4.0 should be defined by default", values.Contains("4.0"));
            Assertion.AssertEquals("Default tools version should be 2.0", "2.0", defaultToolsVersion);

            if (FrameworkLocationHelper.PathToDotNetFrameworkV35 != null)
            {
                Assertion.Assert("Tools version 2.0 should be defined by default if .NET FX 3.5 exists on the machine.", values.Contains("2.0"));
                Assertion.Assert("Tools version 3.5 should be defined by default if .NET FX 3.5 exists on the machine.", values.Contains("3.5"));
            }
        }