public void PassReferenceWithNoReferenceDirectory() { MockEngine engine = new MockEngine(); GetSDKReferenceFiles t = new GetSDKReferenceFiles(); t.BuildEngine = engine; ITaskItem item = new TaskItem("C:\\SDKDoesNotExist"); item.SetMetadata("ExpandReferenceAssemblies", "true"); item.SetMetadata("TargetedSDKConfiguration", "Retail"); item.SetMetadata("TargetedSDKArchitecture", "x86"); item.SetMetadata("OriginalItemSpec", "SDKWithManifest, Version=2.0"); t.ResolvedSDKReferences = new ITaskItem[] { item }; t.CacheFileFolderPath = s_cacheDirectory; bool success = t.Execute(s_getAssemblyName, s_getAssemblyRuntimeVersion, FileUtilities.FileExistsNoThrow); Assert.IsTrue(success); Assert.IsTrue(t.CopyLocalFiles.Length == 0); Assert.IsTrue(t.References.Length == 0); Assert.IsTrue(t.RedistFiles.Length == 0); }
public void LogNoWarningForRedistConflictWithinSDK() { MockEngine engine = new MockEngine(); GetSDKReferenceFiles t = new GetSDKReferenceFiles(); t.BuildEngine = engine; t.CacheFileFolderPath = s_cacheDirectory; ITaskItem item = new TaskItem(s_sdkDirectory); item.SetMetadata("ExpandReferenceAssemblies", "false"); item.SetMetadata("TargetedSDKConfiguration", "Retail"); item.SetMetadata("TargetedSDKArchitecture", "x86"); item.SetMetadata("CopyRedist", "true"); item.SetMetadata("OriginalItemSpec", "SDKWithManifest, Version=2.0"); t.ResolvedSDKReferences = new ITaskItem[] { item }; bool success = t.Execute(s_getAssemblyName, s_getAssemblyRuntimeVersion, FileUtilities.FileExistsNoThrow); Assert.IsTrue(success); Assert.IsTrue(t.RedistFiles.Length == 5); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.ConflictRedistSameSDK", "A.dll", "SDKWithManifest, Version=2.0", "Redist\\Retail\\X86\\A.dll", "Redist\\CommonConfiguration\\Neutral\\A.dll"); Assert.AreEqual(0, engine.Warnings); }
public void VerifyRedistFilesLogRedistTrueAmd64() { MockEngine engine = new MockEngine(); GetSDKReferenceFiles t = new GetSDKReferenceFiles(); t.BuildEngine = engine; t.CacheFileFolderPath = s_cacheDirectory; ITaskItem item = new TaskItem(s_sdkDirectory); item.SetMetadata("TargetedSDKConfiguration", "Retail"); item.SetMetadata("TargetedSDKArchitecture", "amd64"); item.SetMetadata("CopyRedist", "true"); item.SetMetadata("OriginalItemSpec", "SDKWithManifest, Version=2.0"); t.ResolvedSDKReferences = new ITaskItem[] { item }; bool success = t.Execute(s_getAssemblyName, s_getAssemblyRuntimeVersion, FileUtilities.FileExistsNoThrow); Assert.IsTrue(success); Assert.IsTrue(t.CopyLocalFiles.Length == 0); Assert.IsTrue(t.RedistFiles.Length == 5); Assert.IsTrue(t.RedistFiles[0].ItemSpec.IndexOf("x64", StringComparison.OrdinalIgnoreCase) > -1); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingRedistFile", t.RedistFiles[0].ItemSpec.Replace(t.RedistFiles[0].GetMetadata("SDKRootPath"), String.Empty), t.RedistFiles[0].GetMetadata("TargetPath")); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingRedistFile", t.RedistFiles[1].ItemSpec.Replace(t.RedistFiles[1].GetMetadata("SDKRootPath"), String.Empty), t.RedistFiles[1].GetMetadata("TargetPath")); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingRedistFile", t.RedistFiles[2].ItemSpec.Replace(t.RedistFiles[2].GetMetadata("SDKRootPath"), String.Empty), t.RedistFiles[2].GetMetadata("TargetPath")); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingRedistFile", t.RedistFiles[3].ItemSpec.Replace(t.RedistFiles[3].GetMetadata("SDKRootPath"), String.Empty), t.RedistFiles[3].GetMetadata("TargetPath")); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingRedistFile", t.RedistFiles[4].ItemSpec.Replace(t.RedistFiles[4].GetMetadata("SDKRootPath"), String.Empty), t.RedistFiles[4].GetMetadata("TargetPath")); }
public void VerifyRedistFilesLogRedistFalse() { MockEngine engine = new MockEngine(); GetSDKReferenceFiles t = new GetSDKReferenceFiles(); t.BuildEngine = engine; t.CacheFileFolderPath = s_cacheDirectory; ITaskItem item = new TaskItem(s_sdkDirectory); item.SetMetadata("ExpandReferenceAssemblies", "true"); item.SetMetadata("TargetedSDKConfiguration", "Retail"); item.SetMetadata("TargetedSDKArchitecture", "x86"); item.SetMetadata("CopyRedist", "true"); item.SetMetadata("CopyRedistToSubDirectory", "Super"); item.SetMetadata("OriginalItemSpec", "SDKWithManifest, Version=2.0"); t.ResolvedSDKReferences = new ITaskItem[] { item }; t.LogRedistFilesList = false; bool success = t.Execute(s_getAssemblyName, s_getAssemblyRuntimeVersion, FileUtilities.FileExistsNoThrow); Assert.IsTrue(success); Assert.IsTrue(t.CopyLocalFiles.Length == 0); Assert.IsTrue(t.References.Length == 8); Assert.IsTrue(t.RedistFiles.Length == 5); engine.AssertLogDoesntContainMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingRedistFile", t.RedistFiles[0].ItemSpec.Replace(t.RedistFiles[0].GetMetadata("SDKRootPath"), String.Empty), t.RedistFiles[0].GetMetadata("TargetPath")); engine.AssertLogDoesntContainMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingRedistFile", t.RedistFiles[1].ItemSpec.Replace(t.RedistFiles[1].GetMetadata("SDKRootPath"), String.Empty), t.RedistFiles[1].GetMetadata("TargetPath")); engine.AssertLogDoesntContainMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingRedistFile", t.RedistFiles[2].ItemSpec.Replace(t.RedistFiles[2].GetMetadata("SDKRootPath"), String.Empty), t.RedistFiles[2].GetMetadata("TargetPath")); engine.AssertLogDoesntContainMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingRedistFile", t.RedistFiles[3].ItemSpec.Replace(t.RedistFiles[3].GetMetadata("SDKRootPath"), String.Empty), t.RedistFiles[3].GetMetadata("TargetPath")); engine.AssertLogDoesntContainMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingRedistFile", t.RedistFiles[4].ItemSpec.Replace(t.RedistFiles[4].GetMetadata("SDKRootPath"), String.Empty), t.RedistFiles[4].GetMetadata("TargetPath")); Assert.IsTrue(Path.GetFileName(t.RedistFiles[0].ItemSpec).Equals("A.dll", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[0].GetMetadata("TargetPath").Equals("Super\\A.dll", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[0].GetMetadata("OriginalItemSpec").Equals("SDkWithManifest, Version=2.0", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[0].GetMetadata("ResolvedFrom").Equals("GetSDKReferenceFiles", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[0].GetMetadata("Root").Length == 0); Assert.IsTrue(Path.GetFileName(t.RedistFiles[1].ItemSpec).Equals("B.dll", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[1].GetMetadata("TargetPath").Equals("Super\\ASubDirectory\\TwoDeep\\B.dll", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[1].GetMetadata("OriginalItemSpec").Equals("SDkWithManifest, Version=2.0", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[1].GetMetadata("ResolvedFrom").Equals("GetSDKReferenceFiles", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[1].GetMetadata("Root").Length == 0); Assert.IsTrue(Path.GetFileName(t.RedistFiles[2].ItemSpec).Equals("B.PRI", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[2].GetMetadata("TargetPath").Equals("Super\\B.PRI", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[2].GetMetadata("OriginalItemSpec").Equals("SDkWithManifest, Version=2.0", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[2].GetMetadata("ResolvedFrom").Equals("GetSDKReferenceFiles", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[2].GetMetadata("Root").Equals("Super", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(Path.GetFileName(t.RedistFiles[3].ItemSpec).Equals("C.dll", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[3].GetMetadata("TargetPath").Equals("Super\\C.dll", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[3].GetMetadata("OriginalItemSpec").Equals("SDkWithManifest, Version=2.0", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[3].GetMetadata("ResolvedFrom").Equals("GetSDKReferenceFiles", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[3].GetMetadata("Root").Length == 0); Assert.IsTrue(Path.GetFileName(t.RedistFiles[4].ItemSpec).Equals("D.dll", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[4].GetMetadata("TargetPath").Equals("Super\\D.dll", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[4].GetMetadata("OriginalItemSpec").Equals("SDkWithManifest, Version=2.0", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[4].GetMetadata("ResolvedFrom").Equals("GetSDKReferenceFiles", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[4].GetMetadata("Root").Length == 0); }
public void VerifyReferencesLoggedX64() { MockEngine engine = new MockEngine(); GetSDKReferenceFiles t = new GetSDKReferenceFiles(); t.BuildEngine = engine; t.CacheFileFolderPath = s_cacheDirectory; ITaskItem item = new TaskItem(s_sdkDirectory); item.SetMetadata("ExpandReferenceAssemblies", "true"); item.SetMetadata("TargetedSDKConfiguration", "Retail"); item.SetMetadata("TargetedSDKArchitecture", "x64"); item.SetMetadata("DisplayName", "SDKWithManifestDisplayName"); item.SetMetadata("OriginalItemSpec", "SDKWithManifest, Version=2.0"); t.ResolvedSDKReferences = new ITaskItem[] { item }; bool success = t.Execute(s_getAssemblyName, s_getAssemblyRuntimeVersion, FileUtilities.FileExistsNoThrow); Assert.IsTrue(success); Assert.IsTrue(t.CopyLocalFiles.Length == 0); Assert.IsTrue(t.References.Length == 8); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[0].ItemSpec.Replace(t.References[0].GetMetadata("SDKRootPath"), String.Empty)); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[1].ItemSpec.Replace(t.References[1].GetMetadata("SDKRootPath"), String.Empty)); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[2].ItemSpec.Replace(t.References[2].GetMetadata("SDKRootPath"), String.Empty)); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[3].ItemSpec.Replace(t.References[3].GetMetadata("SDKRootPath"), String.Empty)); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[4].ItemSpec.Replace(t.References[4].GetMetadata("SDKRootPath"), String.Empty)); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[5].ItemSpec.Replace(t.References[5].GetMetadata("SDKRootPath"), String.Empty)); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[6].ItemSpec.Replace(t.References[6].GetMetadata("SDKRootPath"), String.Empty)); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[7].ItemSpec.Replace(t.References[7].GetMetadata("SDKRootPath"), String.Empty)); Assert.IsTrue(t.References[0].ItemSpec.IndexOf("x64", StringComparison.OrdinalIgnoreCase) > -1); Assert.IsTrue(Path.GetFileName(t.References[0].ItemSpec).Equals("A.winmd", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[0].GetMetadata("WinMDFile").Equals("true", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[0].GetMetadata("ReferenceGrouping").Equals("SDKWithManifest, Version=2.0", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[0].GetMetadata("WinMDFileType").Equals("Managed", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[0].GetMetadata("ReferenceGroupingDisplayName").Equals("SDKWithManifestDisplayName", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[0].GetMetadata("CopyLocal").Equals("false", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[0].GetMetadata("OriginalItemSpec").Equals("SDkWithManifest, Version=2.0", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[0].GetMetadata("ResolvedFrom").Equals("GetSDKReferenceFiles", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(Path.GetFileName(t.References[4].ItemSpec).Equals("E.dll", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[4].GetMetadata("WinMDFile").Equals("false", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[4].GetMetadata("WinMDFileType").Length == 0); Assert.IsTrue(t.References[4].GetMetadata("CopyLocal").Equals("false", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[4].GetMetadata("OriginalItemSpec").Equals("SDkWithManifest, Version=2.0", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[4].GetMetadata("ResolvedFrom").Equals("GetSDKReferenceFiles", StringComparison.OrdinalIgnoreCase)); }
public void VerifyLogReferencesFalse() { MockEngine engine = new MockEngine(); GetSDKReferenceFiles t = new GetSDKReferenceFiles(); t.BuildEngine = engine; t.CacheFileFolderPath = s_cacheDirectory; ITaskItem item = new TaskItem(s_sdkDirectory); item.SetMetadata("ExpandReferenceAssemblies", "true"); item.SetMetadata("TargetedSDKConfiguration", "Retail"); item.SetMetadata("TargetedSDKArchitecture", "x86"); item.SetMetadata("OriginalItemSpec", "SDKWithManifest, Version=2.0"); t.ResolvedSDKReferences = new ITaskItem[] { item }; t.LogReferencesList = false; bool success = t.Execute(s_getAssemblyName, s_getAssemblyRuntimeVersion, FileUtilities.FileExistsNoThrow); Assert.IsTrue(success); Assert.IsTrue(t.CopyLocalFiles.Length == 0); Assert.IsTrue(t.References.Length == 8); engine.AssertLogDoesntContainMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[0].ItemSpec.Replace(t.References[0].GetMetadata("SDKRootPath"), String.Empty)); engine.AssertLogDoesntContainMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[1].ItemSpec.Replace(t.References[1].GetMetadata("SDKRootPath"), String.Empty)); engine.AssertLogDoesntContainMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[2].ItemSpec.Replace(t.References[2].GetMetadata("SDKRootPath"), String.Empty)); engine.AssertLogDoesntContainMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[3].ItemSpec.Replace(t.References[3].GetMetadata("SDKRootPath"), String.Empty)); engine.AssertLogDoesntContainMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[4].ItemSpec.Replace(t.References[4].GetMetadata("SDKRootPath"), String.Empty)); engine.AssertLogDoesntContainMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[5].ItemSpec.Replace(t.References[5].GetMetadata("SDKRootPath"), String.Empty)); engine.AssertLogDoesntContainMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[6].ItemSpec.Replace(t.References[6].GetMetadata("SDKRootPath"), String.Empty)); engine.AssertLogDoesntContainMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.AddingReference", t.References[7].ItemSpec.Replace(t.References[7].GetMetadata("SDKRootPath"), String.Empty)); }
public void VerifyCacheFileNames() { MockEngine engine = new MockEngine(); GetSDKReferenceFiles t = new GetSDKReferenceFiles(); t.BuildEngine = engine; t.CacheFileFolderPath = s_cacheDirectory; ITaskItem item = new TaskItem(s_sdkDirectory); item.SetMetadata("ExpandReferenceAssemblies", "true"); item.SetMetadata("TargetedSDKConfiguration", "Retail"); item.SetMetadata("TargetedSDKArchitecture", "x86"); item.SetMetadata("OriginalItemSpec", "SDKWithManifest, Version=2.0"); t.ResolvedSDKReferences = new ITaskItem[] { item }; bool success = t.Execute(s_getAssemblyName, s_getAssemblyRuntimeVersion, FileUtilities.FileExistsNoThrow); Assert.IsTrue(success); ITaskItem[] references1 = t.References; // Verify the task created a cache file string sdkIdentity = item.GetMetadata("OriginalItemSpec"); string sdkRoot = item.ItemSpec; string cacheFile = sdkIdentity + ",Set=" + FileUtilities.GetHexHash(sdkIdentity) + "-" + FileUtilities.GetHexHash(sdkRoot) + ",Hash=*.dat"; Thread.Sleep(100); string[] existingCacheFiles = Directory.GetFiles(s_cacheDirectory, cacheFile); Assert.IsTrue(existingCacheFiles.Length == 1); GetSDKReferenceFiles t2 = new GetSDKReferenceFiles(); t2.BuildEngine = engine; t2.CacheFileFolderPath = s_cacheDirectory; // Same SDK with different path ITaskItem item2 = new TaskItem(s_sdkDirectory2); item2.SetMetadata("ExpandReferenceAssemblies", "true"); item2.SetMetadata("TargetedSDKConfiguration", "Retail"); item2.SetMetadata("TargetedSDKArchitecture", "x86"); item2.SetMetadata("OriginalItemSpec", "SDKWithManifest, Version=2.0"); t2.ResolvedSDKReferences = new ITaskItem[] { item2 }; bool success2 = t2.Execute(s_getAssemblyName, s_getAssemblyRuntimeVersion, FileUtilities.FileExistsNoThrow); ITaskItem[] references2 = t2.References; Assert.IsTrue(success2); // References from the two builds should not overlap, otherwise the cache files are being misused foreach (var ref2 in references2) { Assert.IsTrue(references1.Count(i => i.ItemSpec.Equals(ref2.ItemSpec, StringComparison.InvariantCultureIgnoreCase)) == 0); } Thread.Sleep(100); string sdkIdentity2 = item.GetMetadata("OriginalItemSpec"); string sdkRoot2 = item.ItemSpec; string cacheFile2 = sdkIdentity2 + ",Set=" + FileUtilities.GetHexHash(sdkIdentity2) + "-" + FileUtilities.GetHexHash(sdkRoot2) + ",Hash=*.dat"; string[] existingCacheFiles2 = Directory.GetFiles(s_cacheDirectory, cacheFile); Assert.IsTrue(existingCacheFiles2.Length == 1); // There should have two cache files with the same prefix and first hash Thread.Sleep(100); string[] allCacheFiles = Directory.GetFiles(s_cacheDirectory, sdkIdentity2 + ",Set=" + FileUtilities.GetHexHash(sdkIdentity2) + "*"); Assert.IsTrue(allCacheFiles.Length == 2); }
public void LogErrorWhenNoArchitecture() { MockEngine engine = new MockEngine(); GetSDKReferenceFiles t = new GetSDKReferenceFiles(); t.BuildEngine = engine; t.CacheFileFolderPath = s_cacheDirectory; ITaskItem item = new TaskItem(s_sdkDirectory); item.SetMetadata("ExpandReferenceAssemblies", "true"); item.SetMetadata("TargetedSDKConfiguration", "Debug"); item.SetMetadata("TargetedSDKArchitecture", ""); item.SetMetadata("OriginalItemSpec", "SDKWithManifest, Version=2.0"); t.ResolvedSDKReferences = new ITaskItem[] { item }; bool success = t.Execute(s_getAssemblyName, s_getAssemblyRuntimeVersion, FileUtilities.FileExistsNoThrow); Assert.IsFalse(success); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.CannotHaveEmptyTargetArchitecture", s_sdkDirectory); }
public void GetReferenceAssembliesWhenExpandTrueCopyLocalFalse() { MockEngine engine = new MockEngine(); GetSDKReferenceFiles t = new GetSDKReferenceFiles(); t.BuildEngine = engine; t.CacheFileFolderPath = s_cacheDirectory; ITaskItem item = new TaskItem(s_sdkDirectory); item.SetMetadata("ExpandReferenceAssemblies", "true"); item.SetMetadata("TargetedSDKConfiguration", "Retail"); item.SetMetadata("TargetedSDKArchitecture", "x86"); item.SetMetadata("CopyLocalExpandedReferenceAssemblies", "false"); item.SetMetadata("OriginalItemSpec", "SDKWithManifest, Version=2.0"); t.ResolvedSDKReferences = new ITaskItem[] { item }; bool success = t.Execute(s_getAssemblyName, s_getAssemblyRuntimeVersion, FileUtilities.FileExistsNoThrow); Assert.IsTrue(success); Assert.IsTrue(t.CopyLocalFiles.Length == 0); Assert.IsTrue(t.References.Length == 8); Assert.IsTrue(Path.GetFileName(t.References[0].ItemSpec).Equals("A.winmd", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[0].GetMetadata("ImageRuntime").Equals("WindowsRuntime 1.0;CLR V2.0.50727", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[0].GetMetadata("FusionName").Equals("A, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=null", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[0].GetMetadata("WinMDFile").Equals("true", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[0].GetMetadata("WinMDFileType").Equals("Managed", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[0].GetMetadata("CopyLocal").Equals("false", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[0].GetMetadata("OriginalItemSpec").Equals("SDkWithManifest, Version=2.0", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[0].GetMetadata("ResolvedFrom").Equals("GetSDKReferenceFiles", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(Path.GetFileName(t.References[1].ItemSpec).Equals("B.winmd", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[1].GetMetadata("ImageRuntime").Equals("WindowsRuntime 1.0", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[1].GetMetadata("FusionName").Equals("B, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=null", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[1].GetMetadata("WinMDFile").Equals("true", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[1].GetMetadata("WinMDFileType").Equals("Native", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[1].GetMetadata("CopyLocal").Equals("false", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[1].GetMetadata("OriginalItemSpec").Equals("SDkWithManifest, Version=2.0", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[1].GetMetadata("ResolvedFrom").Equals("GetSDKReferenceFiles", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(Path.GetFileName(t.References[4].ItemSpec).Equals("E.dll", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[4].GetMetadata("ImageRuntime").Equals("CLR V2.0.50727", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[4].GetMetadata("FusionName").Equals("E, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=null", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[4].GetMetadata("WinMDFile").Equals("false", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[4].GetMetadata("WinMDFileType").Length == 0); Assert.IsTrue(t.References[4].GetMetadata("CopyLocal").Equals("false", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[4].GetMetadata("OriginalItemSpec").Equals("SDkWithManifest, Version=2.0", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.References[4].GetMetadata("ResolvedFrom").Equals("GetSDKReferenceFiles", StringComparison.OrdinalIgnoreCase)); }
public void VerifyNoCopyWhenReferenceOnlyIsTrue() { MockEngine engine = new MockEngine(); GetSDKReferenceFiles t = new GetSDKReferenceFiles(); t.BuildEngine = engine; t.CacheFileFolderPath = s_cacheDirectory; ITaskItem item1 = new TaskItem(s_sdkDirectory); item1.SetMetadata("ExpandReferenceAssemblies", "true"); item1.SetMetadata("TargetedSDKConfiguration", "Retail"); item1.SetMetadata("TargetedSDKArchitecture", "x86"); item1.SetMetadata("CopyLocalExpandedReferenceAssemblies", "false"); item1.SetMetadata("OriginalItemSpec", "SDKWithManifest, Version=2.0"); ITaskItem item2 = new TaskItem(s_sdkDirectory); item2.SetMetadata("ExpandReferenceAssemblies", "true"); item2.SetMetadata("TargetedSDKConfiguration", "Retail"); item2.SetMetadata("TargetedSDKArchitecture", "x86"); item2.SetMetadata("CopyLocalExpandedReferenceAssemblies", "false"); item2.SetMetadata("OriginalItemSpec", "SDKWithManifest, Version=2.0"); item2.SetMetadata("RuntimeReferenceOnly", "true"); // Process both regular and runtime-only references t.ResolvedSDKReferences = new ITaskItem[] { item1, item2 }; bool success = t.Execute(s_getAssemblyName, s_getAssemblyRuntimeVersion, FileUtilities.FileExistsNoThrow); Assert.IsTrue(success); Assert.IsTrue(t.References.Length == 8); // Process regular references t = new GetSDKReferenceFiles(); t.BuildEngine = engine; t.CacheFileFolderPath = s_cacheDirectory; t.ResolvedSDKReferences = new ITaskItem[] { item1 }; success = t.Execute(s_getAssemblyName, s_getAssemblyRuntimeVersion, FileUtilities.FileExistsNoThrow); Assert.IsTrue(success); Assert.IsTrue(t.References.Length == 8); // Process runtime-only references t = new GetSDKReferenceFiles(); t.BuildEngine = engine; t.CacheFileFolderPath = s_cacheDirectory; t.ResolvedSDKReferences = new ITaskItem[] { item2 }; success = t.Execute(s_getAssemblyName, s_getAssemblyRuntimeVersion, FileUtilities.FileExistsNoThrow); Assert.IsTrue(success); Assert.IsTrue(t.References.Length == 0); }
public void PassNoSDKReferences() { MockEngine engine = new MockEngine(); GetSDKReferenceFiles t = new GetSDKReferenceFiles(); t.BuildEngine = engine; t.CacheFileFolderPath = s_cacheDirectory; bool success = t.Execute(s_getAssemblyName, s_getAssemblyRuntimeVersion, FileUtilities.FileExistsNoThrow); Assert.IsTrue(success); Assert.IsTrue(t.CopyLocalFiles.Length == 0); Assert.IsTrue(t.References.Length == 0); Assert.IsTrue(t.RedistFiles.Length == 0); }
public void TwoSDKSConflictRedistButDifferentTargetPaths() { MockEngine engine = new MockEngine(); GetSDKReferenceFiles t = new GetSDKReferenceFiles(); t.BuildEngine = engine; t.CacheFileFolderPath = s_cacheDirectory; ITaskItem item = new TaskItem(s_sdkDirectory); item.SetMetadata("ExpandReferenceAssemblies", "false"); item.SetMetadata("TargetedSDKConfiguration", "Retail"); item.SetMetadata("TargetedSDKArchitecture", "x86"); item.SetMetadata("CopyRedistToSubDirectory", "SDK1"); item.SetMetadata("CopyRedist", "true"); item.SetMetadata("OriginalItemSpec", "SDKWithManifest, Version=2.0"); ITaskItem item2 = new TaskItem(s_sdkDirectory2); item2.SetMetadata("ExpandReferenceAssemblies", "false"); item2.SetMetadata("TargetedSDKConfiguration", "Retail"); item2.SetMetadata("TargetedSDKArchitecture", "x86"); item2.SetMetadata("CopyRedistToSubDirectory", "SDK2"); item2.SetMetadata("CopyRedist", "true"); item2.SetMetadata("OriginalItemSpec", "AnotherSDK, Version=2.0"); t.ResolvedSDKReferences = new ITaskItem[] { item, item2 }; t.LogReferencesList = false; bool success = t.Execute(s_getAssemblyName, s_getAssemblyRuntimeVersion, FileUtilities.FileExistsNoThrow); Assert.IsTrue(success); Assert.IsTrue(t.RedistFiles.Length == 7); Assert.IsTrue(engine.Warnings == 0); Assert.IsTrue(Path.GetFileName(t.RedistFiles[0].ItemSpec).Equals("A.dll", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[0].GetMetadata("TargetPath").Equals("SDK1\\A.dll", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[0].GetMetadata("OriginalItemSpec").Equals("SDkWithManifest, Version=2.0", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[0].GetMetadata("ResolvedFrom").Equals("GetSDKReferenceFiles", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[0].GetMetadata("Root").Length == 0); Assert.IsTrue(Path.GetFileName(t.RedistFiles[1].ItemSpec).Equals("B.dll", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[1].GetMetadata("TargetPath").Equals("SDK2\\B.dll", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[1].GetMetadata("OriginalItemSpec").Equals("AnotherSDK, Version=2.0", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[1].GetMetadata("ResolvedFrom").Equals("GetSDKReferenceFiles", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[1].GetMetadata("Root").Length == 0); Assert.IsTrue(Path.GetFileName(t.RedistFiles[2].ItemSpec).Equals("B.dll", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[2].GetMetadata("TargetPath").Equals("SDK1\\ASubDirectory\\TwoDeep\\B.dll", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[2].GetMetadata("OriginalItemSpec").Equals("SDkWithManifest, Version=2.0", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[2].GetMetadata("ResolvedFrom").Equals("GetSDKReferenceFiles", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[2].GetMetadata("Root").Length == 0); Assert.IsTrue(Path.GetFileName(t.RedistFiles[3].ItemSpec).Equals("B.pri", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[3].GetMetadata("TargetPath").Equals("SDK2\\B.Pri", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[3].GetMetadata("OriginalItemSpec").Equals("AnotherSDK, Version=2.0", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[3].GetMetadata("ResolvedFrom").Equals("GetSDKReferenceFiles", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[3].GetMetadata("Root").Equals("SDK2", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(Path.GetFileName(t.RedistFiles[4].ItemSpec).Equals("B.PRI", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[4].GetMetadata("TargetPath").Equals("SDK1\\B.PRI", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[4].GetMetadata("OriginalItemSpec").Equals("SDkWithManifest, Version=2.0", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[4].GetMetadata("ResolvedFrom").Equals("GetSDKReferenceFiles", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[4].GetMetadata("Root").Equals("SDK1", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(Path.GetFileName(t.RedistFiles[5].ItemSpec).Equals("C.dll", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[5].GetMetadata("TargetPath").Equals("SDK1\\C.dll", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[5].GetMetadata("OriginalItemSpec").Equals("SDkWithManifest, Version=2.0", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[5].GetMetadata("ResolvedFrom").Equals("GetSDKReferenceFiles", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[5].GetMetadata("Root").Length == 0); Assert.IsTrue(Path.GetFileName(t.RedistFiles[6].ItemSpec).Equals("D.dll", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[6].GetMetadata("TargetPath").Equals("SDK1\\D.dll", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[6].GetMetadata("OriginalItemSpec").Equals("SDkWithManifest, Version=2.0", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[6].GetMetadata("ResolvedFrom").Equals("GetSDKReferenceFiles", StringComparison.OrdinalIgnoreCase)); Assert.IsTrue(t.RedistFiles[6].GetMetadata("Root").Length == 0); }
public void LogReferenceAndRedistConflictBetweenSdksNowarning() { MockEngine engine = new MockEngine(); GetSDKReferenceFiles t = new GetSDKReferenceFiles(); t.BuildEngine = engine; t.CacheFileFolderPath = s_cacheDirectory; ITaskItem item = new TaskItem(s_sdkDirectory); item.SetMetadata("ExpandReferenceAssemblies", "true"); item.SetMetadata("TargetedSDKConfiguration", "Retail"); item.SetMetadata("TargetedSDKArchitecture", "x86"); item.SetMetadata("CopyRedist", "true"); item.SetMetadata("OriginalItemSpec", "SDKWithManifest, Version=2.0"); ITaskItem item2 = new TaskItem(s_sdkDirectory2); item2.SetMetadata("ExpandReferenceAssemblies", "true"); item2.SetMetadata("TargetedSDKConfiguration", "Retail"); item2.SetMetadata("TargetedSDKArchitecture", "x86"); item2.SetMetadata("CopyRedist", "true"); item2.SetMetadata("OriginalItemSpec", "AnotherSDK, Version=2.0"); t.ResolvedSDKReferences = new ITaskItem[] { item, item2 }; t.LogReferencesList = false; t.LogReferenceConflictBetweenSDKsAsWarning = false; t.LogRedistConflictBetweenSDKsAsWarning = false; bool success = t.Execute(s_getAssemblyName, s_getAssemblyRuntimeVersion, FileUtilities.FileExistsNoThrow); Assert.IsTrue(success); Assert.IsTrue(t.CopyLocalFiles.Length == 0); Assert.IsTrue(t.References.Length == 8); Assert.IsTrue(t.RedistFiles.Length == 6); Assert.IsTrue(engine.Warnings == 0); string redistWinner = Path.Combine(s_sdkDirectory, "Redist\\Retail\\Neutral\\B.pri"); string redistVictim = Path.Combine(s_sdkDirectory2, "Redist\\Retail\\X86\\B.pri"); string referenceWinner = Path.Combine(s_sdkDirectory, "References\\Retail\\Neutral\\B.WinMD"); string referenceVictim = Path.Combine(s_sdkDirectory2, "References\\Retail\\X86\\B.WinMD"); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.ConflictRedistDifferentSDK", "B.PRI", "SDKWithManifest, Version=2.0", "AnotherSDK, Version=2.0", redistWinner, redistVictim); engine.AssertLogContainsMessageFromResource(s_resourceDelegate, "GetSDKReferenceFiles.ConflictReferenceDifferentSDK", "SDKWithManifest, Version=2.0", "AnotherSDK, Version=2.0", referenceWinner, referenceVictim); }