Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 180311f

Browse files
committed
Include guid in build artifacts directory when --keepFiles is specified.
1 parent b035d90 commit 180311f

File tree

6 files changed

+18
-13
lines changed

6 files changed

+18
-13
lines changed

src/BenchmarkDotNet/Running/BuildPartition.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@ public BuildPartition(BenchmarkBuildInfo[] benchmarks, IResolver resolver)
1919
Resolver = resolver;
2020
RepresentativeBenchmarkCase = benchmarks[0].BenchmarkCase;
2121
Benchmarks = benchmarks;
22-
ProgramName = benchmarks[0].Config.Options.IsSet(ConfigOptions.KeepBenchmarkFiles) ? RepresentativeBenchmarkCase.Job.FolderInfo : Guid.NewGuid().ToString();
22+
var keepBenchmarkFiles = benchmarks[0].Config.Options.IsSet(ConfigOptions.KeepBenchmarkFiles);
23+
var guid = Guid.NewGuid().ToString();
24+
ProgramName = keepBenchmarkFiles ? RepresentativeBenchmarkCase.Job.FolderInfo : guid;
25+
ProgramDirectory = keepBenchmarkFiles ? Path.Combine(RepresentativeBenchmarkCase.Job.FolderInfo, guid) : guid;
2326
LogBuildOutput = benchmarks[0].Config.Options.IsSet(ConfigOptions.LogBuildOutput);
2427
GenerateMSBuildBinLog = benchmarks[0].Config.Options.IsSet(ConfigOptions.GenerateMSBuildBinLog);
2528
}
@@ -28,6 +31,8 @@ public BuildPartition(BenchmarkBuildInfo[] benchmarks, IResolver resolver)
2831

2932
public string ProgramName { get; }
3033

34+
public string ProgramDirectory { get; }
35+
3136
/// <summary>
3237
/// the benchmarks are grouped by the build settings
3338
/// so you can use this benchmark to get the runtime settings

src/BenchmarkDotNet/Toolchains/DotNetCli/DotNetCliGenerator.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,19 +36,19 @@ protected DotNetCliGenerator(string targetFrameworkMoniker, string cliPath, stri
3636
/// we are limited by xprojs (by default compiles all .cs files in all subfolders, Program.cs could be doubled and fail the build)
3737
/// and also by NuGet internal implementation like looking for global.json file in parent folders
3838
/// </summary>
39-
protected override string GetBuildArtifactsDirectoryPath(BuildPartition buildPartition, string programName)
39+
protected override string GetBuildArtifactsDirectoryPath(BuildPartition buildPartition, string programDirectory)
4040
{
4141
if (GetSolutionRootDirectory(out var directoryInfo))
4242
{
43-
return Path.Combine(directoryInfo.FullName, programName);
43+
return Path.Combine(directoryInfo.FullName, programDirectory);
4444
}
4545

4646
// we did not find global.json or any Visual Studio solution file?
4747
// let's return it in the old way and hope that it works ;)
4848
var parent = new DirectoryInfo(Directory.GetCurrentDirectory()).Parent;
4949
if (parent == null)
5050
throw new DirectoryNotFoundException("Parent directory for current directory");
51-
return Path.Combine(parent.FullName, programName);
51+
return Path.Combine(parent.FullName, programDirectory);
5252
}
5353

5454
internal static bool GetSolutionRootDirectory(out DirectoryInfo directoryInfo)

src/BenchmarkDotNet/Toolchains/GeneratorBase.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public GenerateResult GenerateProject(BuildPartition buildPartition, ILogger log
4040
/// <summary>
4141
/// returns a path to the folder where auto-generated project and code are going to be placed
4242
/// </summary>
43-
[PublicAPI] protected abstract string GetBuildArtifactsDirectoryPath(BuildPartition assemblyLocation, string programName);
43+
[PublicAPI] protected abstract string GetBuildArtifactsDirectoryPath(BuildPartition assemblyLocation, string programDirectory);
4444

4545
/// <summary>
4646
/// returns a path where executable should be found after the build
@@ -118,10 +118,10 @@ private ArtifactsPaths GetArtifactsPaths(BuildPartition buildPartition, string r
118118
// its not ".cs" in order to avoid VS from displaying and compiling it with xprojs/csprojs that include all *.cs by default
119119
const string codeFileExtension = ".notcs";
120120

121-
string programName = buildPartition.ProgramName;
122-
string buildArtifactsDirectoryPath = GetBuildArtifactsDirectoryPath(buildPartition, programName);
121+
string buildArtifactsDirectoryPath = GetBuildArtifactsDirectoryPath(buildPartition, buildPartition.ProgramDirectory);
123122
string binariesDirectoryPath = GetBinariesDirectoryPath(buildArtifactsDirectoryPath, buildPartition.BuildConfiguration);
124123

124+
string programName = buildPartition.ProgramName;
125125
string executablePath = GetExecutablePath(binariesDirectoryPath, programName);
126126

127127
return new ArtifactsPaths(

src/BenchmarkDotNet/Toolchains/NativeAot/Generator.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,10 @@ internal Generator(string ilCompilerVersion,
5757

5858
protected override string GetExecutableExtension() => RuntimeInformation.ExecutableExtension;
5959

60-
protected override string GetBuildArtifactsDirectoryPath(BuildPartition buildPartition, string programName)
60+
protected override string GetBuildArtifactsDirectoryPath(BuildPartition buildPartition, string programDirectory)
6161
=> useTempFolderForRestore
62-
? Path.Combine(Path.GetTempPath(), programName) // store everything in temp to avoid collisions with IDE
63-
: base.GetBuildArtifactsDirectoryPath(buildPartition, programName);
62+
? Path.Combine(Path.GetTempPath(), programDirectory) // store everything in temp to avoid collisions with IDE
63+
: base.GetBuildArtifactsDirectoryPath(buildPartition, programDirectory);
6464

6565
protected override string GetBinariesDirectoryPath(string buildArtifactsDirectoryPath, string configuration)
6666
=> Path.Combine(buildArtifactsDirectoryPath, "bin", configuration, TargetFrameworkMoniker, runtimeIdentifier, "publish");

src/BenchmarkDotNet/Toolchains/Roslyn/Generator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace BenchmarkDotNet.Toolchains.Roslyn
1212
[PublicAPI]
1313
public class Generator : GeneratorBase
1414
{
15-
protected override string GetBuildArtifactsDirectoryPath(BuildPartition buildPartition, string programName)
15+
protected override string GetBuildArtifactsDirectoryPath(BuildPartition buildPartition, string programDirectory)
1616
=> Path.GetDirectoryName(buildPartition.AssemblyLocation);
1717

1818
[PublicAPI]

tests/BenchmarkDotNet.Tests/CsProjGeneratorTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,9 +208,9 @@ public void TestAssemblyFilePathIsUsedWhenTheAssemblyLocationIsNotEmpty()
208208

209209
private class SteamLoadedBuildPartition : CsProjGenerator
210210
{
211-
internal string ResolvePathForBinaries(BuildPartition buildPartition, string programName)
211+
internal string ResolvePathForBinaries(BuildPartition buildPartition, string programDirectory)
212212
{
213-
return base.GetBuildArtifactsDirectoryPath(buildPartition, programName);
213+
return base.GetBuildArtifactsDirectoryPath(buildPartition, programDirectory);
214214
}
215215

216216
public SteamLoadedBuildPartition(string targetFrameworkMoniker, string cliPath, string packagesPath, string runtimeFrameworkVersion, bool isNetCore)

0 commit comments

Comments
 (0)