public void Test_Run() { var cacheDir = GetNewTempDir(); var outDir = GetNewTempDir(); var assemblyFile = new FileInfo(typeof(TcBuildTask_Test).Assembly.Location); // copy files to controlled outputDir CopyDirectory(assemblyFile.Directory, outDir); assemblyFile = new FileInfo(Path.Combine(outDir.FullName, assemblyFile.Name)); try { var task = new TcBuildTask { Configuration = "Debug", AssemblyFile = assemblyFile.FullName, //TargetFile = assemblyFile.FullName, TcPluginBase = typeof(DllExportAttribute).Assembly.Location, IntermediateDirectory = outDir.FullName, ProjectDirectory = "/ignored", ReferenceCopyLocalFiles = AppDomain.CurrentDomain.GetAssemblies().Select(_ => new TaskItem(_.Location)).Cast <ITaskItem>().ToArray(), MSBuildFrameworkToolsPath = @"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\", FrameworkSDKRoot = @"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\", CacheDir = cacheDir.FullName, LibDirectory = @"..\..\..\..\TcBuild\lib\", //-- BuildEngine = new FakeBuildEngine(_output) }; //var pdbFile = new FileInfo(assemblyFile.FullName.Replace(".dll", ".pdb")); //Assert.Contains(outDir.GetFiles(), _ => _.Name == pdbFile.Name); var hash = GetFileHash(task.AssemblyFile); //var pdbHash = GetFileHash(pdbFile.FullName); var success = task.Execute(); var hashAfter = GetFileHash(task.AssemblyFile); //Assert.Contains(outDir.GetFiles(), _ => _.Name == pdbFile.Name); //var pdbHashAfter = GetFileHash(pdbFile.FullName); Assert.True(hash.SequenceEqual(hashAfter)); //Assert.True(pdbHash.SequenceEqual(pdbHashAfter)); ValidateOutput(task, outDir, cacheDir); Assert.True(success); } finally { try { cacheDir.Delete(true); //outDir.Delete(true); } catch { // ignore } } }
private void ValidateOutput(TcBuildTask task, DirectoryInfo outDir, DirectoryInfo cacheDir) { _output.WriteLine("----- ValidateOutput -----"); foreach (var outputFile in outDir.GetFiles("*", SearchOption.AllDirectories)) { _output.WriteLine($" out: {outputFile.FullName}"); // print .zip contents if (outputFile.FullName.EndsWith(".zip")) { using (var fs = outputFile.OpenRead()) { foreach (var entry in new ZipArchive(fs, ZipArchiveMode.Read).Entries.OrderBy(_ => _.FullName)) { _output.WriteLine($" - {entry.FullName,-60} {entry.Length,10} B"); } } } } }