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); } }); } }
internal void Execute(DotNetHelper dotNetHelper) { // Don't use the cli language name in the project name because it may contain '#': https://github.com/dotnet/roslyn/issues/51692 string projectName = $"{ScenarioName}_{Template}_{Language}"; string customNewArgs = Template.IsAspNetCore() && NoHttps ? "--no-https" : string.Empty; dotNetHelper.ExecuteNew(Template.GetName(), projectName, Language.ToCliName(), customArgs: customNewArgs); if (Commands.HasFlag(DotNetActions.Build)) { dotNetHelper.ExecuteBuild(projectName); } if (Commands.HasFlag(DotNetActions.Run)) { if (Template.IsAspNetCore()) { dotNetHelper.ExecuteRunWeb(projectName); } else { dotNetHelper.ExecuteRun(projectName); } } if (Commands.HasFlag(DotNetActions.Publish)) { dotNetHelper.ExecutePublish(projectName); } if (Commands.HasFlag(DotNetActions.PublishComplex)) { dotNetHelper.ExecutePublish(projectName, selfContained: false); dotNetHelper.ExecutePublish(projectName, selfContained: true, Config.TargetRid); dotNetHelper.ExecutePublish(projectName, selfContained: true, "linux-x64"); } if (Commands.HasFlag(DotNetActions.PublishR2R)) { dotNetHelper.ExecutePublish(projectName, selfContained: true, "linux-x64", trimmed: true, readyToRun: true); } if (Commands.HasFlag(DotNetActions.Test)) { dotNetHelper.ExecuteTest(projectName); } }
public async void VerifyScenario(DotNetTemplate template) { await InitializeOmniSharp(); string templateName = template.GetName(); string projectName = $"{nameof(OmniSharpTests)}_{templateName}"; string projectDirectory = DotNetHelper.ExecuteNew(templateName, projectName); (Process Process, string StdOut, string StdErr)executeResult = ExecuteHelper.ExecuteProcess( Path.Combine(OmniSharpDirectory, "run"), $"-s {projectDirectory}", OutputHelper, logOutput: true, millisecondTimeout: 5000, configure: (process) => DotNetHelper.ConfigureProcess(process, projectDirectory, setPath: true)); Assert.NotEqual(0, executeResult.Process.ExitCode); Assert.DoesNotContain("ERROR", executeResult.StdOut); Assert.DoesNotContain("ERROR", executeResult.StdErr); }