diff --git a/src/Tools/Source/RunTests/Cache/CachingTestExecutor.cs b/src/Tools/Source/RunTests/Cache/CachingTestExecutor.cs index 59d69e4ef3bf42170b603a962de49f014115c3ad..30dfef872255950814ba5d7a0e038cc3c98b7ad0 100644 --- a/src/Tools/Source/RunTests/Cache/CachingTestExecutor.cs +++ b/src/Tools/Source/RunTests/Cache/CachingTestExecutor.cs @@ -76,7 +76,8 @@ private TestResult Migrate(string assemblyPath, CachedTestResult cachedTestResul commandLine: commandLine, elapsed: TimeSpan.FromMilliseconds(0), standardOutput: cachedTestResult.StandardOutput, - errorOutput: cachedTestResult.ErrorOutput); + errorOutput: cachedTestResult.ErrorOutput, + isResultFromCache: true); } private async Task CacheTestResult(ContentFile contentFile, TestResult testResult) diff --git a/src/Tools/Source/RunTests/Cache/WebDataStorage.cs b/src/Tools/Source/RunTests/Cache/WebDataStorage.cs index e121de3488457e4bb6204836194455c85c2fa8ad..161adbc9712f230a3b9c70e7b415c511cab936d6 100644 --- a/src/Tools/Source/RunTests/Cache/WebDataStorage.cs +++ b/src/Tools/Source/RunTests/Cache/WebDataStorage.cs @@ -20,9 +20,8 @@ internal sealed class WebDataStorage : IDataStorage private const string NameResultsFileName = "ResultsFileName"; private const string NameResultsFileContent = "ResultsFileContent"; private const string NameEllapsedSeconds = "EllapsedSeconds"; - private const string DashboardUriString = "http://jdash.azurewebsites.net"; - private readonly RestClient _restClient = new RestClient(DashboardUriString); + private readonly RestClient _restClient = new RestClient(Constants.DashboardUriString); public async Task AddCachedTestResult(ContentFile contentFile, CachedTestResult testResult) { diff --git a/src/Tools/Source/RunTests/Constants.cs b/src/Tools/Source/RunTests/Constants.cs index f18e3a82be6dca45a44ef99a3b4d652eb638d4de..7fe04a38fdda762a45ce91b0482394068b097b01 100644 --- a/src/Tools/Source/RunTests/Constants.cs +++ b/src/Tools/Source/RunTests/Constants.cs @@ -10,6 +10,10 @@ namespace RunTests { internal static class Constants { - internal const string ResultsDirectoryName = "xUnitResults"; + internal static string ResultsDirectoryName => "xUnitResults"; + + internal static bool IsJenkinsRun => !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("JENKINS_URL")); + + internal static string DashboardUriString => "http://jdash.azurewebsites.net"; } } diff --git a/src/Tools/Source/RunTests/ITestExecutor.cs b/src/Tools/Source/RunTests/ITestExecutor.cs index 28713ab395dce8940c9a8815edb1bc32b042e18d..e6044af7da41e060045427c1387db529e8b794fd 100644 --- a/src/Tools/Source/RunTests/ITestExecutor.cs +++ b/src/Tools/Source/RunTests/ITestExecutor.cs @@ -16,6 +16,7 @@ internal struct TestResult internal TimeSpan Elapsed { get; } internal string StandardOutput { get; } internal string ErrorOutput { get; } + internal bool IsResultFromCache { get; } /// /// Path to the results file. Can be null in the case xunit error'd and did not create one. @@ -25,7 +26,7 @@ internal struct TestResult internal string ResultDir { get; } internal bool Succeeded => ExitCode == 0; - internal TestResult(int exitCode, string assemblyPath, string resultDir, string resultsFilePath, string commandLine, TimeSpan elapsed, string standardOutput, string errorOutput) + internal TestResult(int exitCode, string assemblyPath, string resultDir, string resultsFilePath, string commandLine, TimeSpan elapsed, string standardOutput, string errorOutput, bool isResultFromCache) { ExitCode = exitCode; AssemblyName = Path.GetFileName(assemblyPath); @@ -36,6 +37,7 @@ internal TestResult(int exitCode, string assemblyPath, string resultDir, string Elapsed = elapsed; StandardOutput = standardOutput; ErrorOutput = errorOutput; + IsResultFromCache = isResultFromCache; } } diff --git a/src/Tools/Source/RunTests/ProcessTestExecutor.cs b/src/Tools/Source/RunTests/ProcessTestExecutor.cs index d8a76c1699a7fff87e6202e3fff0b464e0f34444..0ea5e1ca8e451d66feff1c4e2c404689ca2eb92d 100644 --- a/src/Tools/Source/RunTests/ProcessTestExecutor.cs +++ b/src/Tools/Source/RunTests/ProcessTestExecutor.cs @@ -125,7 +125,8 @@ public async Task RunTestAsync(string assemblyPath, CancellationToke commandLine: commandLine, elapsed: span, standardOutput: standardOutput, - errorOutput: errorOutput); + errorOutput: errorOutput, + isResultFromCache: false); } catch (Exception ex) { diff --git a/src/Tools/Source/RunTests/Program.cs b/src/Tools/Source/RunTests/Program.cs index e133a54cf9c7abd180ec702cf6691ece9acacb6e..6d7c54cdaf45de197d43ae54003da4b18a506750 100644 --- a/src/Tools/Source/RunTests/Program.cs +++ b/src/Tools/Source/RunTests/Program.cs @@ -37,8 +37,7 @@ internal static int Main(string[] args) // and Jenkins runs by default until we work on this a bit more. Anyone reading this who wants // to try it out should feel free to opt into this. IDataStorage dataStorage = new LocalDataStorage(); - if (StringComparer.OrdinalIgnoreCase.Equals("REDMOND", Environment.UserDomainName) || - !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("JENKINS_URL"))) + if (StringComparer.OrdinalIgnoreCase.Equals("REDMOND", Environment.UserDomainName) || Constants.IsJenkinsRun) { Console.WriteLine("Using web cache"); dataStorage = new WebDataStorage(); diff --git a/src/Tools/Source/RunTests/RunTests.csproj b/src/Tools/Source/RunTests/RunTests.csproj index 08044d3cacafa316948759478c780f0e50922e40..6c7a9e74cffae16636d9f500e9f9c0e7b5ce7be2 100644 --- a/src/Tools/Source/RunTests/RunTests.csproj +++ b/src/Tools/Source/RunTests/RunTests.csproj @@ -50,4 +50,4 @@ - + \ No newline at end of file