static void AssertProcess(bool isRunning, params FilePair[] pairs) { foreach (var pair in pairs) { var command = tool.BuildCommand(pair.Received, pair.Verified); if (isRunning == ProcessCleanup.IsRunning(command)) { continue; } var commands = string.Join(Environment.NewLine, ProcessCleanup.Commands.Select(x => x.Command)); string message; if (isRunning) { message = "Expected command running"; } else { message = "Expected command not running"; } throw new Exception($@"{message} {command} Commands: {commands}"); } }
static void Launch(ResolvedDiffTool tool, string path1, string path2) { Guard.AgainstNull(tool, nameof(tool)); var command = tool.BuildCommand(path1, path2); var isDiffToolRunning = ProcessCleanup.IsRunning(command); if (isDiffToolRunning) { if (tool.SupportsAutoRefresh) { return; } if (!tool.IsMdi) { ProcessCleanup.Kill(command); } } var arguments = tool.BuildArguments(path1, path2); try { Process.Start(tool.ExePath, arguments); } catch (Exception exception) { var message = $@"Failed to launch diff tool. {tool.ExePath} {arguments}"; throw new Exception(message, exception); } }