public void Process_WillNotMissOutputViaEvents() { var environment = FakeEnvironment.CreateWindowsEnvironment(); var log = new FakeLog(); var runner = new AdvProcessRunner(environment, log); var settings = new AdvProcessSettings() .WithArguments(args => args.Append("--out line1 line2 --echoArgs --delay 100")) .UseWorkingDirectory(Environment.CurrentDirectory) .SetRedirectStandardOutput(true); var outputDataReceived = new List <string>(); using (var process = runner.Start(_appExe, settings)) { process.OutputDataReceived += (sender, args) => { outputDataReceived.Add(args.Output); }; process.WaitForExit(); outputDataReceived.Should() .BeEquivalentTo("Args received: --out line1 line2 --echoArgs --delay 100", "line1", "line2"); } }
public void Dispose_Does_Not_Kill_Underlying_Process_If_Still_Running() { var environment = FakeEnvironment.CreateWindowsEnvironment(); var log = new FakeLog(); var runner = new AdvProcessRunner(environment, log); var settings = new AdvProcessSettings() .UseWorkingDirectory(Environment.CurrentDirectory) .WithArguments(args => args.Append("--sleep 5000")); int processId; using (var process = runner.Start(_appExe, settings)) { processId = process.ProcessId; process.HasExited.Should().BeFalse(); } using (var p2 = System.Diagnostics.Process.GetProcessById(processId)) { p2.HasExited.Should().BeFalse(); p2.Kill(); } }
public FakeCakeContext() { var fileSystem = new FileSystem(); Log = new FakeLog(); var runtime = new CakeRuntime(); var platform = new FakePlatform(PlatformFamily.Windows); var environment = new CakeEnvironment(platform, runtime, Log); var globber = new Globber(fileSystem, environment); var args = Substitute.For <ICakeArguments>(); var registry = new WindowsRegistry(); var dataService = Substitute.For <ICakeDataService>(); var toolRepository = new ToolRepository(environment); var toolResolutionStrategy = new ToolResolutionStrategy(fileSystem, environment, globber, new FakeConfiguration()); var tools = new ToolLocator(environment, toolRepository, toolResolutionStrategy); var processRunner = new ProcessRunner(fileSystem, environment, Log, tools, new FakeConfiguration()); Context = new CakeContext(fileSystem, environment, globber, Log, args, processRunner, registry, tools, dataService); WorkingDirectory = new DirectoryPath( System.IO.Path.GetFullPath(AppContext.BaseDirectory)); Context.Environment.WorkingDirectory = WorkingDirectory; }
public FakeCakeContext() { var testsDir = new DirectoryPath(System.IO.Path.GetFullPath(AppContext.BaseDirectory)); var fileSystem = new FileSystem(); var environment = new FakeEnvironment(PlatformFamily.Windows); var globber = new Globber(fileSystem, environment); var log = new FakeLog(); var args = new FakeCakeArguments(); var toolRepo = new ToolRepository(environment); var config = new CakeConfigurationProvider(fileSystem, environment) .CreateConfiguration(testsDir, new Dictionary <string, string>()); var toolResolutionStrategy = new ToolResolutionStrategy(fileSystem, environment, globber, config); var toolLocator = new ToolLocator(environment, toolRepo, toolResolutionStrategy); var processRunner = new ProcessRunner(fileSystem, environment, log, toolLocator, config); var registry = new WindowsRegistry(); var dataService = new FakeDataService(); _context = new CakeContext( fileSystem, environment, globber, log, args, processRunner, registry, toolLocator, dataService, config); _context.Environment.WorkingDirectory = testsDir; }
public AzurePipelinesFixture() { Environment = Substitute.For <ICakeEnvironment>(); Environment.WorkingDirectory.Returns("C:\\build\\CAKE-CAKE-JOB1"); Environment.GetEnvironmentVariable("TF_BUILD").Returns((string)null); Environment.Platform.Family.Returns(PlatformFamily.Windows); Log = new FakeLog(); }
public FakeCakeContext () { testsDir = new DirectoryPath ( System.IO.Path.GetFullPath( System.IO.Path.Combine (AppDomain.CurrentDomain.BaseDirectory, "../../"))); var environment = Cake.Testing.FakeEnvironment.CreateUnixEnvironment (false); var fileSystem = new Cake.Testing.FakeFileSystem (environment); var globber = new Globber (fileSystem, environment); log = new Cake.Testing.FakeLog (); var args = new FakeCakeArguments (); var processRunner = new ProcessRunner (environment, log); var registry = new WindowsRegistry (); context = new CakeContext (fileSystem, environment, globber, log, args, processRunner, registry); context.Environment.WorkingDirectory = testsDir; }