public void TestMergeRuntimeValues(string left, string right, bool success, string expected) { XMakeAttributes.TryMergeRuntimeValues(left, right, out string mergedRuntime) .ShouldBe(success); mergedRuntime.ShouldBe(expected); }
/// <summary> /// Given a set of task parameters from the UsingTask and from the task invocation, generate a dictionary that combines the two, or throws if the merge /// is impossible (we shouldn't ever get to this point if it is ...) /// </summary> private static IDictionary <string, string> MergeTaskFactoryParameterSets(IDictionary <string, string> factoryIdentityParameters, IDictionary <string, string> taskIdentityParameters) { IDictionary <string, string> mergedParameters = null; string mergedRuntime = null; string mergedArchitecture = null; if (factoryIdentityParameters == null || factoryIdentityParameters.Count == 0) { mergedParameters = new Dictionary <string, string>(taskIdentityParameters, StringComparer.OrdinalIgnoreCase); } else if (taskIdentityParameters == null || taskIdentityParameters.Count == 0) { mergedParameters = new Dictionary <string, string>(factoryIdentityParameters, StringComparer.OrdinalIgnoreCase); } if (mergedParameters != null) { mergedParameters.TryGetValue(XMakeAttributes.runtime, out mergedRuntime); mergedParameters.TryGetValue(XMakeAttributes.architecture, out mergedArchitecture); mergedParameters[XMakeAttributes.runtime] = XMakeAttributes.GetExplicitMSBuildRuntime(mergedRuntime); mergedParameters[XMakeAttributes.architecture] = XMakeAttributes.GetExplicitMSBuildArchitecture(mergedArchitecture); } else { string taskRuntime = null; string taskArchitecture = null; string usingTaskRuntime = null; string usingTaskArchitecture = null; mergedParameters = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase); taskIdentityParameters.TryGetValue(XMakeAttributes.runtime, out taskRuntime); factoryIdentityParameters.TryGetValue(XMakeAttributes.runtime, out usingTaskRuntime); if (!XMakeAttributes.TryMergeRuntimeValues(taskRuntime, usingTaskRuntime, out mergedRuntime)) { ErrorUtilities.ThrowInternalError("How did we get two runtime values that were unmergeable?"); } else { mergedParameters.Add(XMakeAttributes.runtime, mergedRuntime); } taskIdentityParameters.TryGetValue(XMakeAttributes.architecture, out taskArchitecture); factoryIdentityParameters.TryGetValue(XMakeAttributes.architecture, out usingTaskArchitecture); if (!XMakeAttributes.TryMergeArchitectureValues(taskArchitecture, usingTaskArchitecture, out mergedArchitecture)) { ErrorUtilities.ThrowInternalError("How did we get two runtime values that were unmergeable?"); } else { mergedParameters.Add(XMakeAttributes.architecture, mergedArchitecture); } } return(mergedParameters); }
public void TestMergeRuntimeValuesAnyAcceptsCurrent() { XMakeAttributes.TryMergeRuntimeValues(XMakeAttributes.MSBuildRuntimeValues.any, XMakeAttributes.MSBuildRuntimeValues.currentRuntime, out string mergedRuntime) .ShouldBeTrue(); mergedRuntime.ShouldBe(XMakeAttributes.GetCurrentMSBuildRuntime()); }
public void TestMergeRuntimeValuesCurrentToClr4() { XMakeAttributes.TryMergeRuntimeValues( XMakeAttributes.MSBuildRuntimeValues.currentRuntime, XMakeAttributes.MSBuildRuntimeValues.clr4, out string mergedRuntime).ShouldBeTrue(); mergedRuntime.ShouldBe(XMakeAttributes.MSBuildRuntimeValues.clr4); XMakeAttributes.TryMergeRuntimeValues( XMakeAttributes.MSBuildRuntimeValues.currentRuntime, XMakeAttributes.MSBuildRuntimeValues.net, out mergedRuntime).ShouldBeFalse(); mergedRuntime.ShouldBeNull(); }
public void TestMergeRuntimeValues() { string mergedRuntime = null; Assert.IsTrue(XMakeAttributes.TryMergeRuntimeValues(XMakeAttributes.MSBuildRuntimeValues.any, XMakeAttributes.MSBuildRuntimeValues.currentRuntime, out mergedRuntime)); Assert.AreEqual(XMakeAttributes.MSBuildRuntimeValues.clr4, mergedRuntime); Assert.IsTrue(XMakeAttributes.TryMergeRuntimeValues(XMakeAttributes.MSBuildRuntimeValues.any, XMakeAttributes.MSBuildRuntimeValues.clr4, out mergedRuntime)); Assert.AreEqual(XMakeAttributes.MSBuildRuntimeValues.clr4, mergedRuntime); Assert.IsTrue(XMakeAttributes.TryMergeRuntimeValues(XMakeAttributes.MSBuildRuntimeValues.clr2, XMakeAttributes.MSBuildRuntimeValues.any, out mergedRuntime)); Assert.AreEqual(XMakeAttributes.MSBuildRuntimeValues.clr2, mergedRuntime); Assert.IsTrue(XMakeAttributes.TryMergeRuntimeValues(XMakeAttributes.MSBuildRuntimeValues.currentRuntime, XMakeAttributes.MSBuildRuntimeValues.clr4, out mergedRuntime)); Assert.AreEqual(XMakeAttributes.MSBuildRuntimeValues.clr4, mergedRuntime); Assert.IsFalse(XMakeAttributes.TryMergeRuntimeValues(XMakeAttributes.MSBuildRuntimeValues.currentRuntime, XMakeAttributes.MSBuildRuntimeValues.clr2, out mergedRuntime)); Assert.IsNull(mergedRuntime); Assert.IsFalse(XMakeAttributes.TryMergeRuntimeValues(XMakeAttributes.MSBuildRuntimeValues.clr4, XMakeAttributes.MSBuildRuntimeValues.clr2, out mergedRuntime)); Assert.IsNull(mergedRuntime); }