Skip to content

Commit 7095b97

Browse files
committed
Remove warnings from terminal when compiling the test runner.
A fix for the test runner that patches most of the warnings that are reported in the terminal when compiling the test runner. Some warnings were suppressed as it was too time-consuming or there were impacts to other parts of the test runner when they were fixed.
1 parent 116605a commit 7095b97

15 files changed

+129
-77
lines changed

Turkey/BashTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ protected override async Task<TestResult> InternalRunAsync(Action<string> logger
3838
startInfo.EnvironmentVariables.Add(key, value);
3939
}
4040

41-
int exitCode = await ProcessRunner.RunAsync(startInfo, logger, cancellationToken);
41+
int exitCode = await ProcessRunner.RunAsync(startInfo, logger, cancellationToken).ConfigureAwait(false);
4242

4343
return exitCode == 0 ? TestResult.Passed : TestResult.Failed;
4444
}

Turkey/Cleaner.cs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ public static IEnumerable<string> LocalProjectCruft()
3636
yield return "project.lock.json";
3737
}
3838

39-
public async Task CleanProjectLocalDotNetCruftAsync()
39+
#pragma warning disable CA1822 // Mark members as static
40+
public Task CleanProjectLocalDotNetCruftAsync()
41+
#pragma warning restore CA1822 // Mark members as static
4042
{
4143

4244
foreach(var name in LocalProjectCruft())
@@ -51,9 +53,12 @@ public async Task CleanProjectLocalDotNetCruftAsync()
5153
File.Delete(name);
5254
}
5355
}
56+
return Task.CompletedTask;
5457
}
5558

56-
public async Task CleanLocalDotNetCacheAsync()
59+
#pragma warning disable CA1822 // Mark members as static
60+
public Task CleanLocalDotNetCacheAsync()
61+
#pragma warning restore CA1822 // Mark members as static
5762
{
5863
foreach (var path in CruftDirectoryGlobs())
5964
{
@@ -77,12 +82,14 @@ public async Task CleanLocalDotNetCacheAsync()
7782
Console.WriteLine($"WARNING: unable to expand {path}");
7883
}
7984
}
80-
return;
85+
return Task.CompletedTask;
8186
}
8287

88+
#pragma warning disable CA1822 // Mark members as static
8389
public IEnumerable<string> ExpandPath(string pathWithGlob)
90+
#pragma warning restore CA1822 // Mark members as static
8491
{
85-
if (pathWithGlob.StartsWith("~"))
92+
if (pathWithGlob.StartsWith("~", StringComparison.Ordinal))
8693
{
8794
pathWithGlob = Environment.GetEnvironmentVariable("HOME") + pathWithGlob.Substring(1);
8895
}

Turkey/DotNet.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public List<Version> RuntimeVersions
4343
string output = p.StandardOutput.ReadToEnd();
4444
var list = output
4545
.Split("\n", StringSplitOptions.RemoveEmptyEntries)
46-
.Where(line => line.StartsWith("Microsoft.NETCore.App"))
46+
.Where(line => line.StartsWith("Microsoft.NETCore.App", StringComparison.Ordinal))
4747
.Select(line => line.Split(" ")[1])
4848
.Select(versionString => Version.Parse(versionString))
4949
.OrderBy(x => x)
@@ -137,7 +137,7 @@ private async Task<int> RunDotNetCommandAsync(DirectoryInfo workingDirectory, st
137137
startInfo.EnvironmentVariables.Add(key, value);
138138
}
139139

140-
return await ProcessRunner.RunAsync(startInfo, logger, token);
140+
return await ProcessRunner.RunAsync(startInfo, logger, token).ConfigureAwait(false);
141141
}
142142

143143
private static bool IsCoreClrRuntime(string dotnetRoot, Version version)
@@ -159,7 +159,9 @@ private static bool IsCoreClrRuntime(string dotnetRoot, Version version)
159159
return File.Exists(Path.Combine(runtimeDir, "libcoreclrtraceptprovider.so"));
160160
}
161161

162+
#nullable enable
162163
private static string? FindProgramInPath(string program)
164+
#nullable disable
163165
{
164166
string[] paths = Environment.GetEnvironmentVariable("PATH")?.Split(':', StringSplitOptions.RemoveEmptyEntries) ?? Array.Empty<string>();
165167
foreach (string p in paths)

Turkey/IEnumerableExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public static async Task ForEachAsync<T>(this IEnumerable<T> items, Func<T, Task
1010
{
1111
foreach (T item in items)
1212
{
13-
await task(item);
13+
await task(item).ConfigureAwait(false);
1414
}
1515
}
1616
}

Turkey/NuGet.cs

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,31 @@ public NuGet(HttpClient client)
2121
public async Task<bool> IsPackageLiveAsync(string name, Version version)
2222
{
2323
var url = $"https://api-v2v3search-0.nuget.org/autocomplete?id={name}&prerelease=true";
24-
var result = await _client.GetStringAsync(url);
25-
return await IsPackageLiveAsync(name, version, result);
24+
Uri uri = new(url);
25+
var result = await _client.GetStringAsync(uri).ConfigureAwait(false);
26+
return await IsPackageLiveAsync(name, version, result).ConfigureAwait(false);
2627
}
2728

28-
public async Task<bool> IsPackageLiveAsync(string name, Version version, string json)
29+
#pragma warning disable CA1801 // Remove unused parameter
30+
#pragma warning disable CA1822 // Mark members as static
31+
public Task<bool> IsPackageLiveAsync(string name, Version version, string json)
32+
#pragma warning restore CA1822 // Mark members as static
33+
#pragma warning restore CA1801 // Remove unused parameter
2934
{
3035
JObject deserialized = (JObject) JsonConvert.DeserializeObject(json);
31-
JArray versions = (JArray) deserialized.GetValue("data");
36+
JArray versions = (JArray) deserialized.GetValue("data", StringComparison.Ordinal);
3237
var found = versions.Children<JToken>()
33-
.Where(v => v.Value<string>().Equals(version.ToString()))
38+
.Where(v => v.Value<string>().Equals(version.ToString(), StringComparison.Ordinal))
3439
.Any();
35-
return found;
40+
return Task.FromResult(found);
3641
}
3742

38-
public async Task<string> GenerateNuGetConfig(List<string> urls, string nugetConfig = null)
43+
#pragma warning disable CA1822 // Mark members as static
44+
public Task<string> GenerateNuGetConfig(List<string> urls, string nugetConfig = null)
45+
#pragma warning restore CA1822 // Mark members as static
3946
{
40-
if( !urls.Any() && nugetConfig == null )
41-
throw new ArgumentNullException();
47+
if(!urls.Any())
48+
ArgumentNullException.ThrowIfNull(nugetConfig);
4249

4350
string sources = null;
4451
if( urls.Any() )
@@ -54,6 +61,7 @@ public async Task<string> GenerateNuGetConfig(List<string> urls, string nugetCon
5461
{
5562
sources = $" {sources}\n";
5663
}
64+
5765
}
5866

5967
if( string.IsNullOrWhiteSpace(nugetConfig) )
@@ -66,9 +74,9 @@ public async Task<string> GenerateNuGetConfig(List<string> urls, string nugetCon
6674
}
6775

6876
if( !string.IsNullOrWhiteSpace(sources) )
69-
nugetConfig = nugetConfig.Replace("</packageSources>", sources + "</packageSources>");
77+
nugetConfig = nugetConfig.Replace("</packageSources>", sources + "</packageSources>", StringComparison.Ordinal);
7078

71-
return nugetConfig;
79+
return Task.FromResult(nugetConfig);
7280
}
7381

7482
}

Turkey/PlatformId.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ public List<string> CurrentIds
1818

1919
public List<string> ComputePlatformIds(string[] osReleaseLines, string lddVersionOutput)
2020
{
21-
string arch = Enum.GetName(typeof(Architecture), RuntimeInformation.OSArchitecture).ToLowerInvariant();
21+
#pragma warning disable CA1308 // Normalize strings to uppercase
22+
string arch = RuntimeInformation.OSArchitecture.ToString().ToLowerInvariant();
23+
#pragma warning restore CA1308 // Normalize strings to uppercase
2224
return ComputePlatformIds(osReleaseLines, arch, lddVersionOutput);
2325
}
2426

@@ -63,25 +65,27 @@ public List<string> ComputePlatformIds(string[] osReleaseLines, string architect
6365
return platforms.ToList();
6466
}
6567

66-
private string GetValue(string key, string[] lines)
68+
private static string GetValue(string key, string[] lines)
6769
{
6870
return lines.Where(line => line.StartsWith(key + "=", StringComparison.Ordinal)).Last().Substring((key + "=").Length);
6971
}
7072

71-
private string Unquote(string text)
73+
private static string Unquote(string text)
7274
{
7375
// TODO implement proper un-escaping
7476
// This is a limited shell-style syntax described at
7577
// https://www.freedesktop.org/software/systemd/man/os-release.html
76-
if (text.StartsWith("\"") && text.EndsWith("\""))
78+
if (text.StartsWith("\"", StringComparison.Ordinal) && text.EndsWith("\"", StringComparison.Ordinal))
7779
{
7880
return text.Substring(1, text.Length - 2);
7981
}
8082

8183
return text;
8284
}
8385

86+
#pragma warning disable CA1822 // Mark members as static
8487
internal string GetLddVersion()
88+
#pragma warning restore CA1822 // Mark members as static
8589
{
8690
using (Process p = new Process())
8791
{

Turkey/ProcessExtensions.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public static async Task<int> RunAsync(ProcessStartInfo psi, Action<string> logg
1212
{
1313
logger($"Executing {psi.FileName} with arguments {psi.Arguments} in working directory {psi.WorkingDirectory}");
1414
using var process = Process.Start(psi);
15-
await process.WaitForExitAsync(logger, token);
15+
await process.WaitForExitAsync(logger, token).ConfigureAwait(false);
1616
return process.ExitCode;
1717
}
1818
}
@@ -43,11 +43,11 @@ public static async Task WaitForExitAsync(this Process process, Action<string> l
4343

4444
try
4545
{
46-
await process.WaitForExitAsync(token);
46+
await process.WaitForExitAsync(token).ConfigureAwait(false);
4747

4848
logger($"Process Exit Code: {process.ExitCode}");
4949
}
50-
catch (OperationCanceledException ex)
50+
catch (OperationCanceledException)
5151
{
5252
lock (logger)
5353
{

Turkey/Program.cs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
using System.Runtime.InteropServices;
1212

1313
namespace Turkey
14-
{
15-
public class Program
14+
{ public static class Program
15+
1616
{
1717
public static readonly Option<bool> verboseOption = new Option<bool>(
1818
new string[] { "--verbose", "-v" },
@@ -118,7 +118,7 @@ public static async Task<int> Run(string testRoot,
118118

119119
Version packageVersion = runtimeVersion;
120120
string nuGetConfig = await GenerateNuGetConfigIfNeededAsync(additionalFeed, packageVersion,
121-
useSourceBuildNuGetConfig: false);
121+
useSourceBuildNuGetConfig: false).ConfigureAwait(false);
122122
if (verbose && nuGetConfig != null)
123123
{
124124
Console.WriteLine("Using nuget.config: ");
@@ -132,7 +132,7 @@ public static async Task<int> Run(string testRoot,
132132
verboseOutput: verbose,
133133
nuGetConfig: nuGetConfig);
134134

135-
var results = await runner.ScanAndRunAsync(testOutputs, logDir.FullName, defaultTimeout);
135+
var results = await runner.ScanAndRunAsync(testOutputs, logDir.FullName, defaultTimeout).ConfigureAwait(false);
136136

137137
int exitCode = (results.Failed == 0) ? 0 : 1;
138138
return exitCode;
@@ -157,7 +157,7 @@ public static async Task<string> GenerateNuGetConfigIfNeededAsync(string additio
157157
{
158158
try
159159
{
160-
nugetConfig = await sourceBuild.GetNuGetConfigAsync(netCoreAppVersion);
160+
nugetConfig = await sourceBuild.GetNuGetConfigAsync(netCoreAppVersion).ConfigureAwait(false);
161161
}
162162
catch( HttpRequestException exception )
163163
{
@@ -173,14 +173,16 @@ public static async Task<string> GenerateNuGetConfigIfNeededAsync(string additio
173173
// if the nugetConfig has a <clear/> element that removes
174174
// it.
175175
urls.Add("https://api.nuget.org/v3/index.json");
176-
return await nuget.GenerateNuGetConfig(urls, nugetConfig);
176+
return await nuget.GenerateNuGetConfig(urls, nugetConfig).ConfigureAwait(false);
177177
}
178178
}
179179

180180
return null;
181181
}
182182

183+
#pragma warning disable CA1801 // Remove unused parameter
183184
public static IReadOnlySet<string> CreateTraits(Version runtimeVersion, Version sdkVersion, List<string> rids, bool isMonoRuntime, IEnumerable<string> additionalTraits)
185+
#pragma warning restore CA1801 // Remove unused parameter
184186
{
185187
var traits = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
186188

@@ -199,7 +201,9 @@ public static IReadOnlySet<string> CreateTraits(Version runtimeVersion, Version
199201
}
200202

201203
// Add 'arch=' trait.
204+
#pragma warning disable CA1308 // Normalize strings to uppercase
202205
string arch = RuntimeInformation.OSArchitecture.ToString().ToLowerInvariant();
206+
#pragma warning restore CA1308 // Normalize strings to uppercase
203207
traits.Add($"arch={arch}");
204208

205209
// Add 'runtime=' trait.
@@ -231,7 +235,7 @@ static async Task<int> Main(string[] args)
231235
rootCommand.AddOption(traitOption);
232236
rootCommand.AddOption(timeoutOption);
233237

234-
return await rootCommand.InvokeAsync(args);
238+
return await rootCommand.InvokeAsync(args).ConfigureAwait(false);
235239
}
236240
}
237-
}
241+
}

Turkey/SourceBuild.cs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,12 @@ public SourceBuild(HttpClient client)
1616
this._client = client;
1717
}
1818

19-
public string GetBranchContentUrl(Version version)
19+
public static System.Uri GetBranchContentUrl(Version version)
2020
{
2121
var branchName = "release/" + version.MajorMinor + ".1xx";
2222
var url = $"https://raw.githubusercontent.com/dotnet/installer/{branchName}/";
23-
return url;
23+
Uri uri = new(url);
24+
return uri;
2425
}
2526

2627
public async Task<string> GetProdConFeedAsync(Version version)
@@ -31,9 +32,10 @@ public async Task<string> GetProdConFeedAsync(Version version)
3132
}
3233

3334
var url = GetBranchContentUrl(version) + "ProdConFeed.txt";
34-
var feedUrl = await _client.GetStringAsync(url);
35-
36-
using(var response = await _client.GetAsync(feedUrl))
35+
Uri uri = new(url);
36+
var feedUrl = await _client.GetStringAsync(uri).ConfigureAwait(false);
37+
Uri feedUri = new(feedUrl);
38+
using(var response = await _client.GetAsync(feedUri).ConfigureAwait(false))
3739
{
3840
if (!response.IsSuccessStatusCode)
3941
{
@@ -46,11 +48,12 @@ public async Task<string> GetProdConFeedAsync(Version version)
4648
public async Task<string> GetNuGetConfigAsync(Version version)
4749
{
4850
string url = GetBranchContentUrl(version) + "NuGet.config";
51+
Uri uri = new(url);
4952

5053
string nugetConfig = null;
5154
try
5255
{
53-
nugetConfig = await _client.GetStringAsync(url);
56+
nugetConfig = await _client.GetStringAsync(uri).ConfigureAwait(false);
5457
}
5558
catch( HttpRequestException e )
5659
{

Turkey/Test.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ public class TestDescriptor
1818
public string Type { get; set; }
1919
public bool Cleanup { get; set; }
2020
public double TimeoutMultiplier { get; set; } = 1.0;
21-
public List<string> IgnoredRIDs { get; set; } = new();
22-
public List<string> SkipWhen { get; set; } = new();
21+
internal List<string> IgnoredRIDs = new();
22+
internal List<string> SkipWhen = new();
2323
}
2424

2525
// TODO is this a strongly-typed enum in C#?
@@ -58,10 +58,10 @@ public async Task<TestResult> RunAsync(Action<string> logger, CancellationToken
5858
{
5959
Console.WriteLine($"WARNING: overwriting {path}");
6060
}
61-
await File.WriteAllTextAsync(path, NuGetConfig);
61+
await File.WriteAllTextAsync(path, NuGetConfig).ConfigureAwait(false);
6262
}
6363

64-
var testResult = await InternalRunAsync(logger, cancelltionToken);
64+
var testResult = await InternalRunAsync(logger, cancelltionToken).ConfigureAwait(false);
6565

6666
if (!string.IsNullOrEmpty(NuGetConfig))
6767
{

0 commit comments

Comments
 (0)