/// <summary> /// Copy the file and check if file was copied with given timeout, shorten the name of file if needed be removing "_". /// </summary> /// <param name="waitTime">Timeout for checking if file was removed</param> /// <param name="oldName">The old name.</param> /// <param name="newName">The new name.</param> /// <param name="oldSubFolder">The old subFolder.</param> /// <param name="newSubFolder">The new subFolder.</param> /// <returns>The new name in case its shorten</returns> /// <example>How to use it: <code> /// FilesHelper.CopyFile(BaseConfiguration.ShortTimeout, fileName, newName, this.DriverContext.DownloadFolder + "\\", this.DriverContext.DownloadFolder + "\\"); /// </code></example> public static string CopyFile(double waitTime, string oldName, string newName, string oldSubFolder, string newSubFolder) { Logger.Debug(CultureInfo.CurrentCulture, "new file name: {0}\\{1}", newSubFolder, newName); newName = NameHelper.ShortenFileName(newSubFolder, newName, "_", 255); if (File.Exists(newSubFolder + Separator + newName)) { File.Delete(newSubFolder + Separator + newName); } // Use ProcessStartInfo class string command = "/c copy " + '\u0022' + oldName + '\u0022' + " " + '\u0022' + newSubFolder + Separator + newName + '\u0022'; ProcessStartInfo cmdsi = new ProcessStartInfo("cmd.exe") { WorkingDirectory = oldSubFolder, Arguments = command }; Thread.Sleep(1000); var timeoutMessage = string.Format(CultureInfo.CurrentCulture, "Waiting till file will be copied {0}", newSubFolder); Process.Start(cmdsi); WaitHelper.Wait(() => File.Exists(newSubFolder + Separator + newName), TimeSpan.FromSeconds(waitTime), TimeSpan.FromSeconds(1), timeoutMessage); return(newName); }
/// <summary> /// Saves the specified bitmap. /// </summary> /// <param name="bitmap">The bitmap.</param> /// <param name="format">The format.</param> /// <param name="folder">The folder.</param> /// <param name="title">The title.</param> /// <returns>The path to the saved bitmap, null if not saved.</returns> public static string Save(Bitmap bitmap, ImageFormat format, string folder, string title) { var fileName = string.Format(CultureInfo.CurrentCulture, "{0}_{1}_{2}.png", title, DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss-fff", CultureInfo.CurrentCulture), "fullscreen"); fileName = Regex.Replace(fileName, "[^0-9a-zA-Z._]+", "_"); fileName = NameHelper.ShortenFileName(folder, fileName, "_", 255); var filePath = Path.Combine(folder, fileName); if (bitmap == null) { Logger.Error("Full screenshot is not saved"); } else { bitmap.Save(filePath, format); bitmap.Dispose(); Logger.Error(CultureInfo.CurrentCulture, "Test failed: full screenshot saved to {0}.", filePath); FilesHelper.WaitForFileOfGivenName(BaseConfiguration.ShortTimeout, fileName, folder); Console.WriteLine(string.Format(CultureInfo.CurrentCulture, "##teamcity[publishArtifacts '{0}']", filePath)); return(filePath); } return(null); }