public void FormatProject() { string unformattedCsFilePath = Path.Combine(BaselineHelper.GetAssetsDirectory(), UnformattedFileName); string projectDirectory = DotNetHelper.ExecuteNew("console", nameof(FormatProject), "C#"); string projectFilePath = Path.Combine(projectDirectory, nameof(FormatProject) + ".csproj"); string testFilePath = Path.Combine(projectDirectory, TestFileName); File.Copy(unformattedCsFilePath, testFilePath); DotNetHelper.ExecuteCmd($"format {projectFilePath}"); BaselineHelper.CompareFiles(ExpectedFormattedFileName, testFilePath, OutputHelper); }
public void WatchTests() { string projectDirectory = DotNetHelper.ExecuteNew(DotNetTemplate.Console.GetName(), nameof(DotNetWatchTests)); bool outputChanged = false; // We expect an exit code of 143 (128 + 15, i.e. SIGTERM) because we are killing the process manually DotNetHelper.ExecuteCmd( "watch run", workingDirectory: projectDirectory, additionalProcessConfigCallback: processConfigCallback, expectedExitCode: 143, millisecondTimeout: 30000); Assert.True(outputChanged); void processConfigCallback(Process process) { const string waitingString = "Waiting for a file to change before restarting dotnet..."; const string expectedString = "Hello from dotnet watch!"; bool fileChanged = false; process.OutputDataReceived += new DataReceivedEventHandler((sender, e) => { if (e.Data?.Contains(waitingString) ?? false) { if (!fileChanged) { OutputHelper.WriteLine("Program started, changing file on disk to trigger restart..."); File.WriteAllText( Path.Combine(projectDirectory, "Program.cs"), File.ReadAllText(Path.Combine(projectDirectory, "Program.cs")).Replace("Hello, World!", expectedString)); fileChanged = true; } } else if (e.Data?.Contains(expectedString) ?? false) { outputChanged = true; OutputHelper.WriteLine("Successfully re-ran program after code change."); ExecuteHelper.ExecuteProcessValidateExitCode("kill", $"-s TERM {process.Id}", OutputHelper); } }); } }