public void ReadRegistry_IgnoreSubToolsetSubKeys() { string xdir = NativeMethodsShared.IsWindows ? "c:\\xxx" : "/xxx"; RegistryKey key1 = _toolsVersionsRegistryKey.CreateSubKey("tv1"); key1.SetValue("msbuildtoolspath", xdir); key1.SetValue("name1", "value1"); RegistryKey subKey1 = key1.CreateSubKey("SubKey1"); subKey1.SetValue("name1a", "value1a"); subKey1.SetValue("name2a", "value2a"); RegistryKey subSubKey1 = subKey1.CreateSubKey("SubSubKey1"); subSubKey1.SetValue("name2b", "value2b"); ToolsetReader reader = GetStandardRegistryReader(); string msbuildOverrideTasksPath = null; string defaultOverrideToolsVersion = null; Dictionary <string, Toolset> values = new Dictionary <string, Toolset>(StringComparer.OrdinalIgnoreCase); string defaultToolsVersion = reader.ReadToolsets(values, new PropertyDictionary <ProjectPropertyInstance>(), new PropertyDictionary <ProjectPropertyInstance>(), false, out msbuildOverrideTasksPath, out defaultOverrideToolsVersion); Assert.Equal(1, values.Count); Assert.Equal(1, values["tv1"].Properties.Count); Assert.Equal(xdir, values["tv1"].ToolsPath); Assert.Equal("value1", values["tv1"].Properties["name1"].EvaluatedValue); Assert.Equal(1, values["tv1"].SubToolsets.Count); Assert.Equal(2, values["tv1"].SubToolsets["SubKey1"].Properties.Count); Assert.Equal("value1a", values["tv1"].SubToolsets["SubKey1"].Properties["name1a"].EvaluatedValue); Assert.Equal("value2a", values["tv1"].SubToolsets["SubKey1"].Properties["name2a"].EvaluatedValue); }
public void ReadToolsets_NoBinPathOrToolsPath() { RegistryKey key1 = _toolsVersionsRegistryKey.CreateSubKey("tv1"); key1.SetValue("msbuildtoolspath", "c:\\xxx"); key1.SetValue("name1", "value1"); RegistryKey key2 = _toolsVersionsRegistryKey.CreateSubKey("tv2"); key2.SetValue("name2", "value2"); RegistryKey key3 = _toolsVersionsRegistryKey.CreateSubKey("tv3"); key3.SetValue("msbuildtoolspath", "c:\\zzz"); key3.SetValue("name3", "value3"); ToolsetReader reader = GetStandardRegistryReader(); string msbuildOverrideTasksPath = null; string defaultOverrideToolsVersion = null; Dictionary <string, Toolset> values = new Dictionary <string, Toolset>(StringComparer.OrdinalIgnoreCase); //should not throw string defaultToolsVersion = reader.ReadToolsets(values, new PropertyDictionary <ProjectPropertyInstance>(), new PropertyDictionary <ProjectPropertyInstance>(), false, out msbuildOverrideTasksPath, out defaultOverrideToolsVersion); Assert.True(values.ContainsKey("tv1")); //should not contain the second toolset because it does not define a tools/bin path Assert.False(values.ContainsKey("tv2")); Assert.True(values.ContainsKey("tv3")); }
public void ReadRegistry_UnselectedSubToolsetIsIgnored() { RegistryKey key1 = _toolsVersionsRegistryKey.CreateSubKey("tv1"); key1.SetValue("msbuildtoolspath", "c:\\xxx"); key1.SetValue("name1", "value1"); key1.SetValue("name2", "value2"); RegistryKey subKey1 = key1.CreateSubKey("Foo"); subKey1.SetValue("name1", "value1a"); subKey1.SetValue("name2", ""); ToolsetReader reader = GetStandardRegistryReader(); string msbuildOverrideTasksPath = null; string defaultOverrideToolsVersion = null; Dictionary <string, Toolset> values = new Dictionary <string, Toolset>(StringComparer.OrdinalIgnoreCase); string defaultToolsVersion = reader.ReadToolsets(values, new PropertyDictionary <ProjectPropertyInstance>(), new PropertyDictionary <ProjectPropertyInstance>(), false, out msbuildOverrideTasksPath, out defaultOverrideToolsVersion); Assert.Equal(1, values.Count); Assert.Equal(2, values["tv1"].Properties.Count); Assert.Equal("c:\\xxx", values["tv1"].ToolsPath); Assert.Equal("value1", values["tv1"].Properties["name1"].EvaluatedValue); Assert.Equal("value2", values["tv1"].Properties["name2"].EvaluatedValue); }
public void ReadRegistry_Basic() { string xdir = NativeMethodsShared.IsWindows ? "c:\\xxx" : "/xxx"; string ydir = NativeMethodsShared.IsWindows ? "c:\\yyy" : "/yyy"; RegistryKey key1 = _toolsVersionsRegistryKey.CreateSubKey("tv1"); key1.SetValue("msbuildtoolspath", xdir); key1.SetValue("name1", "value1"); RegistryKey key2 = _toolsVersionsRegistryKey.CreateSubKey("tv2"); key2.SetValue("name2", "value2"); key2.SetValue("msbuildtoolspath", ydir); ToolsetReader reader = GetStandardRegistryReader(); string msbuildOverrideTasksPath = null; string defaultOverrideToolsVersion = null; Dictionary <string, Toolset> values = new Dictionary <string, Toolset>(StringComparer.OrdinalIgnoreCase); reader.ReadToolsets(values, new PropertyDictionary <ProjectPropertyInstance>(), new PropertyDictionary <ProjectPropertyInstance>(), false, out msbuildOverrideTasksPath, out defaultOverrideToolsVersion); Assert.Equal(2, values.Count); Assert.Equal(1, values["tv1"].Properties.Count); Assert.True(0 == String.Compare(xdir, values["tv1"].ToolsPath, StringComparison.OrdinalIgnoreCase)); Assert.True(0 == String.Compare("value1", values["tv1"].Properties["name1"].EvaluatedValue, StringComparison.OrdinalIgnoreCase)); Assert.Equal(1, values["tv2"].Properties.Count); Assert.True(0 == String.Compare(ydir, values["tv2"].ToolsPath, StringComparison.OrdinalIgnoreCase)); Assert.True(0 == String.Compare("value2", values["tv2"].Properties["name2"].EvaluatedValue, StringComparison.OrdinalIgnoreCase)); }
public void ReadRegistry_SubToolsetOverridesBaseToolsetEntries() { RegistryKey key1 = _toolsVersionsRegistryKey.CreateSubKey("tv1"); key1.SetValue("msbuildtoolspath", "c:\\xxx"); key1.SetValue("name1", "value1"); key1.SetValue("name2", "value2"); RegistryKey subKey1 = key1.CreateSubKey("Foo"); subKey1.SetValue("name1", "value1a"); subKey1.SetValue("name2", ""); ToolsetReader reader = GetStandardRegistryReader(); string msbuildOverrideTasksPath = null; string defaultOverrideToolsVersion = null; Dictionary <string, Toolset> values = new Dictionary <string, Toolset>(StringComparer.OrdinalIgnoreCase); string defaultToolsVersion = reader.ReadToolsets(values, new PropertyDictionary <ProjectPropertyInstance>(), new PropertyDictionary <ProjectPropertyInstance>(), false, out msbuildOverrideTasksPath, out defaultOverrideToolsVersion); Assert.Equal(1, values.Count); Assert.Equal(2, values["tv1"].Properties.Count); Assert.Equal("c:\\xxx", values["tv1"].ToolsPath); Assert.Equal("value1", values["tv1"].Properties["name1"].EvaluatedValue); Assert.Equal("value2", values["tv1"].Properties["name2"].EvaluatedValue); Assert.Equal(1, values["tv1"].SubToolsets.Count); Assert.Equal(2, values["tv1"].SubToolsets["Foo"].Properties.Count); Assert.Equal("value1a", values["tv1"].SubToolsets["Foo"].Properties["name1"].EvaluatedValue); Assert.Equal("", values["tv1"].SubToolsets["Foo"].Properties["name2"].EvaluatedValue); // Check when requesting the final evaluated value of the property in the context of its sub-toolset // that the sub-toolset overrides Assert.Equal("value1a", values["tv1"].GetProperty("name1", "Foo").EvaluatedValue); Assert.Equal("", values["tv1"].GetProperty("name2", "Foo").EvaluatedValue); }
public void GetDefaultOverrideToolsVersionFromRegistry_NonStringData() { _currentVersionRegistryKey.SetValue("DefaultOverrideToolsVersion", new String[] { "2938304894", "3948394.2.3.3.3" }, RegistryValueKind.MultiString); ToolsetReader reader = GetStandardRegistryReader(); 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); }
public void GetDefaultToolsVersionFromRegistry_DefaultValueNotSet() { ToolsetReader reader = GetStandardRegistryReader(); Dictionary <string, Toolset> values = new Dictionary <string, Toolset>(StringComparer.OrdinalIgnoreCase); string msbuildOverrideTasksPath; string defaultOverrideToolsVersion; string defaultToolsVersion = reader.ReadToolsets(values, new PropertyDictionary <ProjectPropertyInstance>(), new PropertyDictionary <ProjectPropertyInstance>(), false, out msbuildOverrideTasksPath, out defaultOverrideToolsVersion); Assert.Null(defaultToolsVersion); }
public void ReadRegistry_NoSubkeyNoValues() { ToolsetReader reader = GetStandardRegistryReader(); string msbuildOverrideTasksPath = null; string defaultOverrideToolsVersion = null; Dictionary <string, Toolset> values = new Dictionary <string, Toolset>(StringComparer.OrdinalIgnoreCase); string defaultToolsVersion = reader.ReadToolsets(values, new PropertyDictionary <ProjectPropertyInstance>(), new PropertyDictionary <ProjectPropertyInstance>(), false, out msbuildOverrideTasksPath, out defaultOverrideToolsVersion); Assert.Equal(0, values.Count); Assert.Equal(null, defaultToolsVersion); }
public void ReadRegistry_DeletedKey() { DeleteTestRegistryKey(); ToolsetReader reader = GetStandardRegistryReader(); string msbuildOverrideTasksPath = null; string defaultOverrideToolsVersion = null; Dictionary <string, Toolset> values = new Dictionary <string, Toolset>(StringComparer.OrdinalIgnoreCase); reader.ReadToolsets(values, new PropertyDictionary <ProjectPropertyInstance>(), new PropertyDictionary <ProjectPropertyInstance>(), false, out msbuildOverrideTasksPath, out defaultOverrideToolsVersion); Assert.Empty(values); }
public void GetDefaultOverrideToolsVersionFromRegistry_Basic() { _currentVersionRegistryKey.SetValue("DefaultOverrideToolsVersion", "15.0"); ToolsetReader reader = GetStandardRegistryReader(); 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); Assert.Equal("15.0", defaultOverrideToolsVersion); }
public void ReadRegistry_NoSubkeysOnlyValues() { _toolsVersionsRegistryKey.SetValue("Name1", "Value1"); _toolsVersionsRegistryKey.SetValue("Name2", "Value2"); ToolsetReader reader = GetStandardRegistryReader(); Dictionary <string, Toolset> values = new Dictionary <string, Toolset>(StringComparer.OrdinalIgnoreCase); string msbuildOverrideTasksPath; string defaultOverrideToolsVersion; string defaultToolsVersion = reader.ReadToolsets(values, new PropertyDictionary <ProjectPropertyInstance>(), new PropertyDictionary <ProjectPropertyInstance>(), false, out msbuildOverrideTasksPath, out defaultOverrideToolsVersion); Assert.Empty(values); Assert.Null(defaultToolsVersion); }
public void GetDefaultToolsVersionFromRegistry_NonStringData() { Assert.Throws <InvalidToolsetDefinitionException>(() => { _currentVersionRegistryKey.SetValue("DefaultToolsVersion", new String[] { "2.0.xxxx.a", "2.0.xxxx.b" }, RegistryValueKind.MultiString); ToolsetReader reader = GetStandardRegistryReader(); string msbuildOverrideTasksPath = null; string defaultOverrideToolsVersion = null; Dictionary <string, Toolset> values = new Dictionary <string, Toolset>(StringComparer.OrdinalIgnoreCase); string defaultToolsVersion = reader.ReadToolsets(values, new PropertyDictionary <ProjectPropertyInstance>(), new PropertyDictionary <ProjectPropertyInstance>(), false, out msbuildOverrideTasksPath, out defaultOverrideToolsVersion); } ); }
public void GetDefaultToolsVersionFromRegistry_Basic() { _currentVersionRegistryKey.SetValue("DefaultToolsVersion", "tv1"); RegistryKey key1 = _toolsVersionsRegistryKey.CreateSubKey("tv1"); // Need matching tools version key1.SetValue("msbuildtoolspath", "c:\\xxx"); ToolsetReader reader = GetStandardRegistryReader(); Dictionary <string, Toolset> values = new Dictionary <string, Toolset>(StringComparer.OrdinalIgnoreCase); string msbuildOverrideTasksPath; string defaultOverrideToolsVersion; string defaultToolsVersion = reader.ReadToolsets(values, new PropertyDictionary <ProjectPropertyInstance>(), new PropertyDictionary <ProjectPropertyInstance>(), false, out msbuildOverrideTasksPath, out defaultOverrideToolsVersion); Assert.Equal("tv1", defaultToolsVersion); }
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 = GetStandardRegistryReader(); string msbuildOverrideTasksPath = null; string defaultOverrideToolsVersion = null; Dictionary <string, Toolset> values = new Dictionary <string, Toolset>(StringComparer.OrdinalIgnoreCase); string defaultToolsVersion = reader.ReadToolsets(values, new PropertyDictionary <ProjectPropertyInstance>(), new PropertyDictionary <ProjectPropertyInstance>(), false, out msbuildOverrideTasksPath, out defaultOverrideToolsVersion); }
public void ReadRegistry_OnlyOneSubkey() { RegistryKey key1 = _toolsVersionsRegistryKey.CreateSubKey("tv1"); key1.SetValue("msbuildtoolspath", "c:\\xxx"); ToolsetReader reader = GetStandardRegistryReader(); string msbuildOverrideTasksPath = null; string defaultOverrideToolsVersion = null; Dictionary <string, Toolset> values = new Dictionary <string, Toolset>(StringComparer.OrdinalIgnoreCase); string defaultToolsVersion = reader.ReadToolsets(values, new PropertyDictionary <ProjectPropertyInstance>(), new PropertyDictionary <ProjectPropertyInstance>(), false, out msbuildOverrideTasksPath, out defaultOverrideToolsVersion); Assert.Equal(null, defaultToolsVersion); Assert.Equal(1, values.Count); Assert.Equal(0, values["tv1"].Properties.Count); Assert.Equal(0, String.Compare("c:\\xxx", values["tv1"].ToolsPath, StringComparison.OrdinalIgnoreCase)); }
public void GetOverrideTasksPathFromRegistry_Basic() { if (NativeMethodsShared.IsUnixLike) { return; // "Registry is not supported under Unix" } _currentVersionRegistryKey.SetValue("MsBuildOverrideTasksPath", "c:\\Foo"); ToolsetReader reader = GetStandardRegistryReader(); 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); Assert.Equal("c:\\Foo", msbuildOverrideTasksPath); }
public void ReadRegistry_OnlyOneSubkey() { string xdir = NativeMethodsShared.IsWindows ? "c:\\xxx" : "/xxx"; RegistryKey key1 = _toolsVersionsRegistryKey.CreateSubKey("tv1"); key1.SetValue("msbuildtoolspath", xdir); ToolsetReader reader = GetStandardRegistryReader(); Dictionary <string, Toolset> values = new Dictionary <string, Toolset>(StringComparer.OrdinalIgnoreCase); string msbuildOverrideTasksPath; string defaultOverrideToolsVersion; string defaultToolsVersion = reader.ReadToolsets(values, new PropertyDictionary <ProjectPropertyInstance>(), new PropertyDictionary <ProjectPropertyInstance>(), false, out msbuildOverrideTasksPath, out defaultOverrideToolsVersion); Assert.Null(defaultToolsVersion); Assert.Single(values); Assert.Empty(values["tv1"].Properties); Assert.Equal(0, String.Compare(xdir, values["tv1"].ToolsPath, StringComparison.OrdinalIgnoreCase)); }