| File: CopyAction.cs | Web Access |
| Project: src\test\Microsoft.ML.TestFramework\Microsoft.ML.TestFramework.csproj (Microsoft.ML.TestFramework) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System.IO; using System.Threading.Tasks; namespace Microsoft.ML.RunTests { public class CopyAction { private static void CopyAll(string sourcePath, string destinationPath) { string[] directories = System.IO.Directory.GetDirectories(sourcePath, "*.*", SearchOption.AllDirectories); Parallel.ForEach(directories, dirPath => { Directory.CreateDirectory(dirPath.Replace(sourcePath, destinationPath)); }); string[] files = System.IO.Directory.GetFiles(sourcePath, "*.*", SearchOption.AllDirectories); Parallel.ForEach(files, oldPath => { var newPath = oldPath.Replace(sourcePath, destinationPath); FileInfo file = new FileInfo(oldPath); FileInfo destFile = new FileInfo(newPath); if (destFile.Exists) { if (file.LastWriteTime > destFile.LastWriteTime) file.CopyTo(destFile.FullName, true); } else file.CopyTo(destFile.FullName, true); }); } /// <summary> /// Since test folder doesn't have libraries from AutoLoad folder and Win libraries, /// we copy them for each test (only newest one). /// This allow execute tests locally. /// </summary> public static void Execute() { var testDirectory = new FileInfo(typeof(CopyAction).Assembly.Location).Directory; var deploymentDirectory = testDirectory.Parent.FullName; if (System.Diagnostics.Process.GetCurrentProcess().ProcessName == "dotnet") { var copyfolder = ""; if (Path.PathSeparator == '/') copyfolder = "Linux"; else copyfolder = "Win"; var dir = new DirectoryInfo(Path.Combine(deploymentDirectory, copyfolder)); CopyAll(dir.FullName, testDirectory.FullName); CopyAll(Path.Combine(deploymentDirectory, "AutoLoad"), testDirectory.FullName); } } } }