public void ResolveQuoteTest() { var factory = SetupFactory(); var environmentMock = new Mock <IEnvironment>(); var environment = environmentMock.Object; var resolver = new ExecutableResolver(factory, environment); string result = resolver.Resolve("'C:\\Program Files\\Git\\bin\\git.exe'"); Assert.NotNull(result); Assert.NotEmpty(result); Assert.Equal("C:\\Program Files\\Git\\bin\\git.exe", result); }
public static SystemExecutionOutput RunQueryMultiDbExecution(QueryMultiDbArgumentStringBuilder argumentStringBuilder, bool createOutputFileBeforeExecution = false) { if (argumentStringBuilder == null) { throw new ArgumentNullException(nameof(argumentStringBuilder)); } var temporaryDirectory = GetTemporaryDirectory(); var outputFilename = Guid.NewGuid().ToString(); var outputFile = Path.Combine(temporaryDirectory, outputFilename); argumentStringBuilder.OutputFile = outputFile; if (createOutputFileBeforeExecution) { using (var sw = File.CreateText(outputFile)) { sw.WriteLine("Test file created before execution."); } } var arguments = argumentStringBuilder.ToString(); var startInfo = new ProcessStartInfo { UseShellExecute = false, CreateNoWindow = false, RedirectStandardOutput = true, RedirectStandardError = true, RedirectStandardInput = true, FileName = ExecutableResolver.GetQueryMultiDbExecutablePath(QueryMultiDbFilename, RelativeExecutablePath), Arguments = arguments }; SystemExecutionOutput systemExecutionOutput; using (var process = Process.Start(startInfo)) { if (process == null) { throw new Exception(); } string standardOutput; using (var standardOutputReader = process.StandardOutput) { standardOutput = standardOutputReader.ReadToEnd(); } string standardError; using (var standardErrorReader = process.StandardError) { standardError = standardErrorReader.ReadToEnd(); } process.WaitForExit(); var exitCode = process.ExitCode; byte[] fileContent = null; try { var path = outputFile; fileContent = File.ReadAllBytes(path); SafeCreateDirectory(RelativeTestResultsDirectory); var extension = argumentStringBuilder.Exporter == "csv" ? ".zip" : ".xlsx"; File.Move(path, RelativeTestResultsDirectory + outputFilename + extension); } catch { // Ignored because fileContent being null is fine in this case. It will be asserted later. throw; } systemExecutionOutput = new SystemExecutionOutput(exitCode, standardOutput, standardError, fileContent); } DeleteDirectory(temporaryDirectory); return(systemExecutionOutput); }