Skip to content

Commit 8509ba4

Browse files
authored
Better handling of --results-directory (#50081)
1 parent f3aae40 commit 8509ba4

File tree

5 files changed

+22
-2
lines changed

5 files changed

+22
-2
lines changed

src/Cli/dotnet/Commands/Test/MSBuildUtility.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,17 @@ public static BuildOptions GetBuildOptions(ParseResult parseResult, int degreeOf
6666
var msbuildArgs = parseResult.OptionValuesToBeForwarded(TestCommandParser.GetCommand())
6767
.Concat(binLogArgs);
6868

69+
string? resultsDirectory = parseResult.GetValue(TestingPlatformOptions.ResultsDirectoryOption);
70+
if (resultsDirectory is not null)
71+
{
72+
resultsDirectory = Path.Combine(Directory.GetCurrentDirectory(), resultsDirectory);
73+
}
74+
6975
PathOptions pathOptions = new(
7076
parseResult.GetValue(TestingPlatformOptions.ProjectOption),
7177
parseResult.GetValue(TestingPlatformOptions.SolutionOption),
72-
parseResult.GetValue(TestingPlatformOptions.DirectoryOption));
78+
parseResult.GetValue(TestingPlatformOptions.DirectoryOption),
79+
resultsDirectory);
7380

7481
return new BuildOptions(
7582
pathOptions,

src/Cli/dotnet/Commands/Test/Options.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace Microsoft.DotNet.Cli.Commands.Test;
55

66
internal record TestOptions(bool HasFilterMode, bool IsHelp);
77

8-
internal record PathOptions(string? ProjectPath, string? SolutionPath, string? DirectoryPath);
8+
internal record PathOptions(string? ProjectPath, string? SolutionPath, string? DirectoryPath, string? ResultsDirectoryPath);
99

1010
internal record BuildOptions(
1111
PathOptions PathOptions,

src/Cli/dotnet/Commands/Test/TestApplication.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,11 @@ private string GetArguments(TestOptions testOptions)
104104
builder.Append($" {TestingPlatformOptions.HelpOption.Name}");
105105
}
106106

107+
if (_buildOptions.PathOptions.ResultsDirectoryPath is { } resultsDirectoryPath)
108+
{
109+
builder.Append($" {TestingPlatformOptions.ResultsDirectoryOption.Name} {ArgumentEscaper.EscapeSingleArg(resultsDirectoryPath)}");
110+
}
111+
107112
foreach (var arg in _buildOptions.UnmatchedTokens)
108113
{
109114
builder.Append($" {ArgumentEscaper.EscapeSingleArg(arg)}");

src/Cli/dotnet/Commands/Test/TestCommandParser.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,7 @@ private static Command GetTestingPlatformCliCommand()
235235
command.Options.Add(TestingPlatformOptions.DirectoryOption);
236236
command.Options.Add(TestingPlatformOptions.TestModulesFilterOption);
237237
command.Options.Add(TestingPlatformOptions.TestModulesRootDirectoryOption);
238+
command.Options.Add(TestingPlatformOptions.ResultsDirectoryOption);
238239
command.Options.Add(TestingPlatformOptions.MaxParallelTestModulesOption);
239240
command.Options.Add(CommonOptions.ArchitectureOption);
240241
command.Options.Add(CommonOptions.PropertiesOption);

src/Cli/dotnet/Commands/Test/TestingPlatformOptions.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,13 @@ internal static class TestingPlatformOptions
4343
HelpName = CliCommandStrings.CmdRootPathName,
4444
};
4545

46+
public static readonly Option<string> ResultsDirectoryOption = new("--results-directory")
47+
{
48+
Description = CliCommandStrings.CmdResultsDirectoryDescription,
49+
HelpName = CliCommandStrings.CmdPathToResultsDirectory,
50+
Arity = ArgumentArity.ExactlyOne
51+
};
52+
4653
public static readonly Option<string> MaxParallelTestModulesOption = new("--max-parallel-test-modules")
4754
{
4855
Description = CliCommandStrings.CmdMaxParallelTestModulesDescription,

0 commit comments

Comments
 (0)