From 50ef4faf1469652ff427c42e1024d3b17f350352 Mon Sep 17 00:00:00 2001 From: Brennan Date: Fri, 14 Feb 2020 11:34:11 -0800 Subject: [PATCH] Fix dotnet watch tests on Helix (#19021) --- .../dotnet-watch/test/AppWithDepsTests.cs | 3 ++- .../dotnet-watch/test/AwaitableProcess.cs | 4 +++- .../dotnet-watch/test/DotNetWatcherTests.cs | 6 +++--- .../dotnet-watch/test/GlobbingAppTests.cs | 20 +++++++++++-------- src/Tools/dotnet-watch/test/NoDepsAppTests.cs | 8 ++++---- .../test/Scenario/WatchableApp.cs | 13 ++++++++---- 6 files changed, 33 insertions(+), 21 deletions(-) diff --git a/src/Tools/dotnet-watch/test/AppWithDepsTests.cs b/src/Tools/dotnet-watch/test/AppWithDepsTests.cs index a14e8c6c05..1ec8a59284 100644 --- a/src/Tools/dotnet-watch/test/AppWithDepsTests.cs +++ b/src/Tools/dotnet-watch/test/AppWithDepsTests.cs @@ -19,7 +19,8 @@ namespace Microsoft.DotNet.Watcher.Tools.FunctionalTests _app = new AppWithDeps(logger); } - [Fact(Skip = "https://github.com/dotnet/aspnetcore/issues/8267")] + [Fact] + [Flaky("", FlakyOn.All)] public async Task ChangeFileInDependency() { await _app.StartWatcherAsync(); diff --git a/src/Tools/dotnet-watch/test/AwaitableProcess.cs b/src/Tools/dotnet-watch/test/AwaitableProcess.cs index 3e22d53245..b7e6afde53 100644 --- a/src/Tools/dotnet-watch/test/AwaitableProcess.cs +++ b/src/Tools/dotnet-watch/test/AwaitableProcess.cs @@ -21,6 +21,7 @@ namespace Microsoft.DotNet.Watcher.Tools.FunctionalTests private BufferBlock _source; private ITestOutputHelper _logger; private TaskCompletionSource _exited; + private bool _started; public AwaitableProcess(ProcessSpec spec, ITestOutputHelper logger) { @@ -72,6 +73,7 @@ namespace Microsoft.DotNet.Watcher.Tools.FunctionalTests _process.Exited += OnExit; _process.Start(); + _started = true; _process.BeginErrorReadLine(); _process.BeginOutputReadLine(); _logger.WriteLine($"{DateTime.Now}: process start: '{_process.StartInfo.FileName} {_process.StartInfo.Arguments}'"); @@ -150,7 +152,7 @@ namespace Microsoft.DotNet.Watcher.Tools.FunctionalTests if (_process != null) { - if (!_process.HasExited) + if (_started && !_process.HasExited) { _process.KillTree(); } diff --git a/src/Tools/dotnet-watch/test/DotNetWatcherTests.cs b/src/Tools/dotnet-watch/test/DotNetWatcherTests.cs index 7eded72270..3ef636b009 100644 --- a/src/Tools/dotnet-watch/test/DotNetWatcherTests.cs +++ b/src/Tools/dotnet-watch/test/DotNetWatcherTests.cs @@ -22,8 +22,8 @@ namespace Microsoft.DotNet.Watcher.Tools.FunctionalTests _app = new KitchenSinkApp(logger); } - [ConditionalFact] - [SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/8267")] + [Fact] + [Flaky("", FlakyOn.All)] public async Task RunsWithDotnetWatchEnvVariable() { Assert.True(string.IsNullOrEmpty(Environment.GetEnvironmentVariable("DOTNET_WATCH")), "DOTNET_WATCH cannot be set already when this test is running"); @@ -36,7 +36,7 @@ namespace Microsoft.DotNet.Watcher.Tools.FunctionalTests } [Fact] - [Flaky("https://github.com/dotnet/aspnetcore-internal/issues/1826", FlakyOn.All)] + [Flaky("", FlakyOn.All)] public async Task RunsWithIterationEnvVariable() { await _app.StartWatcherAsync(); diff --git a/src/Tools/dotnet-watch/test/GlobbingAppTests.cs b/src/Tools/dotnet-watch/test/GlobbingAppTests.cs index 6cde7bbf5d..8862debc7f 100644 --- a/src/Tools/dotnet-watch/test/GlobbingAppTests.cs +++ b/src/Tools/dotnet-watch/test/GlobbingAppTests.cs @@ -21,9 +21,10 @@ namespace Microsoft.DotNet.Watcher.Tools.FunctionalTests _app = new GlobbingApp(logger); } - [Theory(Skip = "https://github.com/dotnet/aspnetcore/issues/8267")] + [Theory] [InlineData(true)] [InlineData(false)] + [Flaky("", FlakyOn.All)] public async Task ChangeCompiledFile(bool usePollingWatcher) { _app.UsePollingWatcher = usePollingWatcher; @@ -41,7 +42,8 @@ namespace Microsoft.DotNet.Watcher.Tools.FunctionalTests Assert.Equal(2, types); } - [Fact(Skip = "https://github.com/dotnet/aspnetcore/issues/8267")] + [Fact] + [Flaky("", FlakyOn.All)] public async Task DeleteCompiledFile() { await _app.StartWatcherAsync(); @@ -57,7 +59,8 @@ namespace Microsoft.DotNet.Watcher.Tools.FunctionalTests Assert.Equal(1, types); } - [Fact(Skip = "https://github.com/dotnet/aspnetcore/issues/8267")] + [Fact] + [Flaky("", FlakyOn.All)] public async Task DeleteSourceFolder() { await _app.StartWatcherAsync(); @@ -73,7 +76,8 @@ namespace Microsoft.DotNet.Watcher.Tools.FunctionalTests Assert.Equal(1, types); } - [Fact(Skip = "https://github.com/dotnet/aspnetcore/issues/8987")] + [Fact] + [Flaky("", FlakyOn.All)] public async Task RenameCompiledFile() { await _app.StartWatcherAsync(); @@ -85,8 +89,8 @@ namespace Microsoft.DotNet.Watcher.Tools.FunctionalTests await _app.HasRestarted(); } - [ConditionalFact] - [SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/8267")] + [Fact] + [Flaky("", FlakyOn.All)] public async Task ChangeExcludedFile() { await _app.StartWatcherAsync(); @@ -99,8 +103,8 @@ namespace Microsoft.DotNet.Watcher.Tools.FunctionalTests Assert.NotSame(restart, finished); } - [ConditionalFact] - [SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/8267")] + [Fact] + [Flaky("", FlakyOn.All)] public async Task ListsFiles() { await _app.PrepareAsync(); diff --git a/src/Tools/dotnet-watch/test/NoDepsAppTests.cs b/src/Tools/dotnet-watch/test/NoDepsAppTests.cs index b9b2352efc..5b1cc36788 100644 --- a/src/Tools/dotnet-watch/test/NoDepsAppTests.cs +++ b/src/Tools/dotnet-watch/test/NoDepsAppTests.cs @@ -2,7 +2,6 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; -using System.Diagnostics; using System.IO; using System.Threading.Tasks; using Microsoft.AspNetCore.Testing; @@ -24,7 +23,8 @@ namespace Microsoft.DotNet.Watcher.Tools.FunctionalTests _output = logger; } - [Fact(Skip = "https://github.com/dotnet/aspnetcore/issues/8267")] + [Fact] + [Flaky("", FlakyOn.All)] public async Task RestartProcessOnFileChange() { await _app.StartWatcherAsync(new[] { "--no-exit" }); @@ -42,8 +42,8 @@ namespace Microsoft.DotNet.Watcher.Tools.FunctionalTests Assert.NotEqual(processIdentifier, processIdentifier2); } - [ConditionalFact] - [SkipOnHelix("https://github.com/dotnet/aspnetcore/issues/8267")] + [Fact] + [Flaky("", FlakyOn.All)] public async Task RestartProcessThatTerminatesAfterFileChange() { await _app.StartWatcherAsync(); diff --git a/src/Tools/dotnet-watch/test/Scenario/WatchableApp.cs b/src/Tools/dotnet-watch/test/Scenario/WatchableApp.cs index 6d89b4861a..699942e224 100644 --- a/src/Tools/dotnet-watch/test/Scenario/WatchableApp.cs +++ b/src/Tools/dotnet-watch/test/Scenario/WatchableApp.cs @@ -8,7 +8,6 @@ using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Threading.Tasks; -using Microsoft.Extensions.CommandLineUtils; using Xunit.Abstractions; namespace Microsoft.DotNet.Watcher.Tools.FunctionalTests @@ -89,9 +88,15 @@ namespace Microsoft.DotNet.Watcher.Tools.FunctionalTests }; args.AddRange(arguments); - var dotnetPath = typeof(WatchableApp).Assembly.GetCustomAttributes() - .Single(s => s.Key == "DotnetPath").Value; - + var dotnetPath = "dotnet"; + + // Fallback to embedded path to dotnet when not on helix + if (string.IsNullOrEmpty(Environment.GetEnvironmentVariable("helix"))) + { + dotnetPath = typeof(WatchableApp).Assembly.GetCustomAttributes() + .Single(s => s.Key == "DotnetPath").Value; + } + var spec = new ProcessSpec { Executable = dotnetPath,