From dcb9ac9dd7f7a873f86bc167f9a1a44c2bfbf826 Mon Sep 17 00:00:00 2001 From: Andrew Arnott Date: Mon, 27 May 2019 12:45:51 -0600 Subject: [PATCH 1/2] Remove namespace around test classes --- .../AssemblyInfoTest.cs | 35 ++- .../BuildIntegrationTests.cs | 1 - .../GitExtensionsTests.cs | 1 - .../ReleaseManagerTests.cs | 1 - .../RepoTestBase.cs | 214 +++++++++--------- .../TestUtilities.cs | 151 ++++++------ .../VersionFileTests.cs | 1 - .../VersionOracleTests.cs | 1 - 8 files changed, 196 insertions(+), 209 deletions(-) diff --git a/src/NerdBank.GitVersioning.Tests/AssemblyInfoTest.cs b/src/NerdBank.GitVersioning.Tests/AssemblyInfoTest.cs index 150c4769..8952b556 100644 --- a/src/NerdBank.GitVersioning.Tests/AssemblyInfoTest.cs +++ b/src/NerdBank.GitVersioning.Tests/AssemblyInfoTest.cs @@ -6,27 +6,25 @@ using Nerdbank.GitVersioning.Tasks; using Xunit; -namespace NerdBank.GitVersioning.Tests +public class AssemblyInfoTest { - public class AssemblyInfoTest + public AssemblyInfoTest() { - public AssemblyInfoTest() - { - MSBuildExtensions.LoadMSBuild(); - } + MSBuildExtensions.LoadMSBuild(); + } + + [Fact] + public void FSharpGenerator() + { + var info = new AssemblyVersionInfo(); + info.AssemblyCompany = "company"; + info.AssemblyFileVersion = "1.3.1.0"; + info.AssemblyVersion = "1.3.0.0"; + info.CodeLanguage = "f#"; - [Fact] - public void FSharpGenerator() - { - var info = new AssemblyVersionInfo(); - info.AssemblyCompany = "company"; - info.AssemblyFileVersion = "1.3.1.0"; - info.AssemblyVersion = "1.3.0.0"; - info.CodeLanguage = "f#"; - - var built = info.BuildCode(); + var built = info.BuildCode(); - var expected = @"//------------------------------------------------------------------------------ + var expected = @"//------------------------------------------------------------------------------ // // This code was generated by a tool. // Runtime Version:4.0.30319.42000 @@ -49,7 +47,6 @@ type internal ThisAssembly() = static member internal RootNamespace = """" do() "; - Assert.Equal(expected, built); - } + Assert.Equal(expected, built); } } diff --git a/src/NerdBank.GitVersioning.Tests/BuildIntegrationTests.cs b/src/NerdBank.GitVersioning.Tests/BuildIntegrationTests.cs index ab959f97..54a036e8 100644 --- a/src/NerdBank.GitVersioning.Tests/BuildIntegrationTests.cs +++ b/src/NerdBank.GitVersioning.Tests/BuildIntegrationTests.cs @@ -18,7 +18,6 @@ using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using Nerdbank.GitVersioning; -using Nerdbank.GitVersioning.Tests; using Validation; using Xunit; using Xunit.Abstractions; diff --git a/src/NerdBank.GitVersioning.Tests/GitExtensionsTests.cs b/src/NerdBank.GitVersioning.Tests/GitExtensionsTests.cs index f0d265d3..a57a633b 100644 --- a/src/NerdBank.GitVersioning.Tests/GitExtensionsTests.cs +++ b/src/NerdBank.GitVersioning.Tests/GitExtensionsTests.cs @@ -6,7 +6,6 @@ using System.Threading.Tasks; using LibGit2Sharp; using Nerdbank.GitVersioning; -using Nerdbank.GitVersioning.Tests; using Validation; using Xunit; using Xunit.Abstractions; diff --git a/src/NerdBank.GitVersioning.Tests/ReleaseManagerTests.cs b/src/NerdBank.GitVersioning.Tests/ReleaseManagerTests.cs index 3b795f0f..6ecf5272 100644 --- a/src/NerdBank.GitVersioning.Tests/ReleaseManagerTests.cs +++ b/src/NerdBank.GitVersioning.Tests/ReleaseManagerTests.cs @@ -3,7 +3,6 @@ using System.Linq; using LibGit2Sharp; using Nerdbank.GitVersioning; -using Nerdbank.GitVersioning.Tests; using Xunit; using Xunit.Abstractions; diff --git a/src/NerdBank.GitVersioning.Tests/RepoTestBase.cs b/src/NerdBank.GitVersioning.Tests/RepoTestBase.cs index ca571476..b3f82813 100644 --- a/src/NerdBank.GitVersioning.Tests/RepoTestBase.cs +++ b/src/NerdBank.GitVersioning.Tests/RepoTestBase.cs @@ -1,152 +1,150 @@ -namespace Nerdbank.GitVersioning.Tests +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using LibGit2Sharp; +using Nerdbank.GitVersioning; +using Validation; +using Xunit.Abstractions; + +public abstract class RepoTestBase : IDisposable { - using System; - using System.Collections.Generic; - using System.Diagnostics; - using System.IO; - using System.Linq; - using System.Text; - using System.Threading.Tasks; - using LibGit2Sharp; - using Validation; - using Xunit.Abstractions; - - public abstract class RepoTestBase : IDisposable - { - private readonly List repoDirectories = new List(); + private readonly List repoDirectories = new List(); - public RepoTestBase(ITestOutputHelper logger) - { - Requires.NotNull(logger, nameof(logger)); + public RepoTestBase(ITestOutputHelper logger) + { + Requires.NotNull(logger, nameof(logger)); - this.Logger = logger; - this.RepoPath = this.CreateDirectoryForNewRepo(); - } + this.Logger = logger; + this.RepoPath = this.CreateDirectoryForNewRepo(); + } - protected ITestOutputHelper Logger { get; } + protected ITestOutputHelper Logger { get; } - protected Repository Repo { get; set; } + protected Repository Repo { get; set; } - protected string RepoPath { get; set; } + protected string RepoPath { get; set; } - protected Signature Signer => new Signature("a", "a@a.com", new DateTimeOffset(2015, 8, 2, 0, 0, 0, TimeSpan.Zero)); + protected Signature Signer => new Signature("a", "a@a.com", new DateTimeOffset(2015, 8, 2, 0, 0, 0, TimeSpan.Zero)); - public void Dispose() - { - this.Dispose(true); - GC.SuppressFinalize(this); - } + public void Dispose() + { + this.Dispose(true); + GC.SuppressFinalize(this); + } - protected string CreateDirectoryForNewRepo() + protected string CreateDirectoryForNewRepo() + { + string repoPath; + do { - string repoPath; - do - { - repoPath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); - } while (Directory.Exists(repoPath)); - Directory.CreateDirectory(repoPath); + repoPath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); + } while (Directory.Exists(repoPath)); + Directory.CreateDirectory(repoPath); - this.repoDirectories.Add(repoPath); - return repoPath; - } + this.repoDirectories.Add(repoPath); + return repoPath; + } - protected virtual void Dispose(bool disposing) + protected virtual void Dispose(bool disposing) + { + if (disposing) { - if (disposing) + this.Repo?.Dispose(); + foreach (string dir in this.repoDirectories) { - this.Repo?.Dispose(); - foreach (string dir in this.repoDirectories) + try + { + TestUtilities.DeleteDirectory(dir); + } + catch (IOException) { - try - { - TestUtilities.DeleteDirectory(dir); - } - catch (IOException) - { - // This happens in AppVeyor a lot. - } + // This happens in AppVeyor a lot. } } } + } - protected void InitializeSourceControl() + protected void InitializeSourceControl() + { + Repository.Init(this.RepoPath); + this.Repo = new Repository(this.RepoPath); + foreach (var file in this.Repo.RetrieveStatus().Untracked) { - Repository.Init(this.RepoPath); - this.Repo = new Repository(this.RepoPath); - foreach (var file in this.Repo.RetrieveStatus().Untracked) - { - Commands.Stage(this.Repo, file.FilePath); - } - - if (this.Repo.Index.Count > 0) - { - this.Repo.Commit("initial commit", this.Signer, this.Signer); - } + Commands.Stage(this.Repo, file.FilePath); } - protected void AddCommits(int count = 1) + if (this.Repo.Index.Count > 0) { - Verify.Operation(this.Repo != null, "Repo has not been created yet."); - for (int i = 1; i <= count; i++) - { - this.Repo.Commit($"filler commit {i}", this.Signer, this.Signer, new CommitOptions { AllowEmptyCommit = true }); - } + this.Repo.Commit("initial commit", this.Signer, this.Signer); } + } - protected Commit WriteVersionTxtFile(string version = "1.2", string prerelease = "", string relativeDirectory = null) + protected void AddCommits(int count = 1) + { + Verify.Operation(this.Repo != null, "Repo has not been created yet."); + for (int i = 1; i <= count; i++) { - if (relativeDirectory == null) - { - relativeDirectory = string.Empty; - } - - string versionFilePath = Path.Combine(this.RepoPath, relativeDirectory, "version.txt"); - File.WriteAllText(versionFilePath, $"{version}\r\n{prerelease}"); - return this.CommitVersionFile(versionFilePath, $"{version}{prerelease}"); + this.Repo.Commit($"filler commit {i}", this.Signer, this.Signer, new CommitOptions { AllowEmptyCommit = true }); } + } - protected Commit WriteVersionFile(string version = "1.2", string prerelease = "", string relativeDirectory = null) + protected Commit WriteVersionTxtFile(string version = "1.2", string prerelease = "", string relativeDirectory = null) + { + if (relativeDirectory == null) { - var versionData = VersionOptions.FromVersion(new System.Version(version), prerelease); - return this.WriteVersionFile(versionData, relativeDirectory); + relativeDirectory = string.Empty; } - protected Commit WriteVersionFile(VersionOptions versionData, string relativeDirectory = null) - { - Requires.NotNull(versionData, nameof(versionData)); + string versionFilePath = Path.Combine(this.RepoPath, relativeDirectory, "version.txt"); + File.WriteAllText(versionFilePath, $"{version}\r\n{prerelease}"); + return this.CommitVersionFile(versionFilePath, $"{version}{prerelease}"); + } - if (relativeDirectory == null) - { - relativeDirectory = string.Empty; - } + protected Commit WriteVersionFile(string version = "1.2", string prerelease = "", string relativeDirectory = null) + { + var versionData = VersionOptions.FromVersion(new System.Version(version), prerelease); + return this.WriteVersionFile(versionData, relativeDirectory); + } - string versionFilePath = VersionFile.SetVersion(Path.Combine(this.RepoPath, relativeDirectory), versionData); - return this.CommitVersionFile(versionFilePath, versionData.Version?.ToString()); - } + protected Commit WriteVersionFile(VersionOptions versionData, string relativeDirectory = null) + { + Requires.NotNull(versionData, nameof(versionData)); - protected Commit CommitVersionFile(string versionFilePath, string version) + if (relativeDirectory == null) { - Requires.NotNullOrEmpty(versionFilePath, nameof(versionFilePath)); - Requires.NotNullOrEmpty(versionFilePath, nameof(versionFilePath)); + relativeDirectory = string.Empty; + } + + string versionFilePath = VersionFile.SetVersion(Path.Combine(this.RepoPath, relativeDirectory), versionData); + return this.CommitVersionFile(versionFilePath, versionData.Version?.ToString()); + } + + protected Commit CommitVersionFile(string versionFilePath, string version) + { + Requires.NotNullOrEmpty(versionFilePath, nameof(versionFilePath)); + Requires.NotNullOrEmpty(versionFilePath, nameof(versionFilePath)); - if (this.Repo != null) + if (this.Repo != null) + { + Assumes.True(versionFilePath.StartsWith(this.RepoPath, StringComparison.OrdinalIgnoreCase)); + var relativeFilePath = versionFilePath.Substring(this.RepoPath.Length).TrimStart(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); + Commands.Stage(this.Repo, relativeFilePath); + if (Path.GetExtension(relativeFilePath) == ".json") { - Assumes.True(versionFilePath.StartsWith(this.RepoPath, StringComparison.OrdinalIgnoreCase)); - var relativeFilePath = versionFilePath.Substring(this.RepoPath.Length).TrimStart(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); - Commands.Stage(this.Repo, relativeFilePath); - if (Path.GetExtension(relativeFilePath) == ".json") + string txtFilePath = relativeFilePath.Substring(0, relativeFilePath.Length - 4) + "txt"; + if (!File.Exists(Path.Combine(this.RepoPath, txtFilePath)) && this.Repo.Index[txtFilePath] != null) { - string txtFilePath = relativeFilePath.Substring(0, relativeFilePath.Length - 4) + "txt"; - if (!File.Exists(Path.Combine(this.RepoPath, txtFilePath)) && this.Repo.Index[txtFilePath] != null) - { - this.Repo.Index.Remove(txtFilePath); - } + this.Repo.Index.Remove(txtFilePath); } - - return this.Repo.Commit($"Add/write {relativeFilePath} set to {version ?? "Inherited"}", this.Signer, this.Signer, new CommitOptions { AllowEmptyCommit = true }); } - return null; + return this.Repo.Commit($"Add/write {relativeFilePath} set to {version ?? "Inherited"}", this.Signer, this.Signer, new CommitOptions { AllowEmptyCommit = true }); } + + return null; } } diff --git a/src/NerdBank.GitVersioning.Tests/TestUtilities.cs b/src/NerdBank.GitVersioning.Tests/TestUtilities.cs index fb230ca4..b0244c2e 100644 --- a/src/NerdBank.GitVersioning.Tests/TestUtilities.cs +++ b/src/NerdBank.GitVersioning.Tests/TestUtilities.cs @@ -1,109 +1,106 @@ using SevenZipNET; using Validation; -namespace Nerdbank.GitVersioning.Tests -{ - using System; - using System.Collections.Generic; - using System.Diagnostics; - using System.IO; - using System.Linq; - using System.Reflection; - using System.Text; - using System.Threading.Tasks; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +/// +/// Test utility methods. +/// +internal static class TestUtilities +{ /// - /// Test utility methods. + /// Recursively delete a directory, even after a git commit has been authored within it. /// - internal static class TestUtilities + /// The path to delete. + internal static void DeleteDirectory(string path) { - /// - /// Recursively delete a directory, even after a git commit has been authored within it. - /// - /// The path to delete. - internal static void DeleteDirectory(string path) - { - Requires.NotNullOrEmpty(path, nameof(path)); - Requires.Argument(Path.IsPathRooted(path), nameof(path), "Must be rooted."); + Requires.NotNullOrEmpty(path, nameof(path)); + Requires.Argument(Path.IsPathRooted(path), nameof(path), "Must be rooted."); - try - { - Directory.Delete(path, true); - } - catch (UnauthorizedAccessException) - { - // Unknown why this fails so often. - // Somehow making commits with libgit2sharp locks files - // such that we can't delete them (but Windows Explorer can). - var psi = new ProcessStartInfo("cmd.exe", $"/c rd /s /q \"{path}\""); - psi.WorkingDirectory = Path.GetTempPath(); - psi.WindowStyle = ProcessWindowStyle.Hidden; - var process = Process.Start(psi); - process.WaitForExit(); - } + try + { + Directory.Delete(path, true); } - - internal static void ExtractEmbeddedResource(string resourcePath, string extractedFilePath) + catch (UnauthorizedAccessException) { - Requires.NotNullOrEmpty(resourcePath, nameof(resourcePath)); - Requires.NotNullOrEmpty(extractedFilePath, nameof(extractedFilePath)); + // Unknown why this fails so often. + // Somehow making commits with libgit2sharp locks files + // such that we can't delete them (but Windows Explorer can). + var psi = new ProcessStartInfo("cmd.exe", $"/c rd /s /q \"{path}\""); + psi.WorkingDirectory = Path.GetTempPath(); + psi.WindowStyle = ProcessWindowStyle.Hidden; + var process = Process.Start(psi); + process.WaitForExit(); + } + } + + internal static void ExtractEmbeddedResource(string resourcePath, string extractedFilePath) + { + Requires.NotNullOrEmpty(resourcePath, nameof(resourcePath)); + Requires.NotNullOrEmpty(extractedFilePath, nameof(extractedFilePath)); - using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream($"{ThisAssembly.RootNamespace}.{resourcePath.Replace('\\', '.')}")) + using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream($"{ThisAssembly.RootNamespace}.{resourcePath.Replace('\\', '.')}")) + { + Requires.Argument(stream != null, nameof(resourcePath), "Resource not found."); + using (var extractedFile = File.OpenWrite(extractedFilePath)) { - Requires.Argument(stream != null, nameof(resourcePath), "Resource not found."); - using (var extractedFile = File.OpenWrite(extractedFilePath)) - { - stream.CopyTo(extractedFile); - } + stream.CopyTo(extractedFile); } } + } - internal static ExpandedRepo ExtractRepoArchive(string repoArchiveName) - { - string archiveFilePath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); - string expandedFolderPath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); + internal static ExpandedRepo ExtractRepoArchive(string repoArchiveName) + { + string archiveFilePath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); + string expandedFolderPath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); - ExtractEmbeddedResource($"repos.{repoArchiveName}.7z", archiveFilePath); - try + ExtractEmbeddedResource($"repos.{repoArchiveName}.7z", archiveFilePath); + try + { + for (int retryCount = 0; ; retryCount++) { - for (int retryCount = 0; ; retryCount++) + try { - try - { - var extractor = new SevenZipExtractor(archiveFilePath); - extractor.ExtractAll(expandedFolderPath); - return new ExpandedRepo(expandedFolderPath); - } - catch (System.ComponentModel.Win32Exception) when (retryCount < 2) - { - } + var extractor = new SevenZipExtractor(archiveFilePath); + extractor.ExtractAll(expandedFolderPath); + return new ExpandedRepo(expandedFolderPath); } - } - finally - { - if (File.Exists(archiveFilePath)) + catch (System.ComponentModel.Win32Exception) when (retryCount < 2) { - File.Delete(archiveFilePath); } } } - - internal class ExpandedRepo : IDisposable + finally { - internal ExpandedRepo(string repoPath) + if (File.Exists(archiveFilePath)) { - Requires.NotNullOrEmpty(repoPath, nameof(repoPath)); - this.RepoPath = repoPath; + File.Delete(archiveFilePath); } + } + } + + internal class ExpandedRepo : IDisposable + { + internal ExpandedRepo(string repoPath) + { + Requires.NotNullOrEmpty(repoPath, nameof(repoPath)); + this.RepoPath = repoPath; + } - public string RepoPath { get; private set; } + public string RepoPath { get; private set; } - public void Dispose() + public void Dispose() + { + if (Directory.Exists(this.RepoPath)) { - if (Directory.Exists(this.RepoPath)) - { - DeleteDirectory(this.RepoPath); - } + DeleteDirectory(this.RepoPath); } } } diff --git a/src/NerdBank.GitVersioning.Tests/VersionFileTests.cs b/src/NerdBank.GitVersioning.Tests/VersionFileTests.cs index d63ab802..427f8175 100644 --- a/src/NerdBank.GitVersioning.Tests/VersionFileTests.cs +++ b/src/NerdBank.GitVersioning.Tests/VersionFileTests.cs @@ -6,7 +6,6 @@ using System.Threading.Tasks; using LibGit2Sharp; using Nerdbank.GitVersioning; -using Nerdbank.GitVersioning.Tests; using Newtonsoft.Json; using Xunit; using Xunit.Abstractions; diff --git a/src/NerdBank.GitVersioning.Tests/VersionOracleTests.cs b/src/NerdBank.GitVersioning.Tests/VersionOracleTests.cs index c68f5cef..7302b62e 100644 --- a/src/NerdBank.GitVersioning.Tests/VersionOracleTests.cs +++ b/src/NerdBank.GitVersioning.Tests/VersionOracleTests.cs @@ -4,7 +4,6 @@ using System.Text.RegularExpressions; using LibGit2Sharp; using Nerdbank.GitVersioning; -using Nerdbank.GitVersioning.Tests; using Xunit; using Xunit.Abstractions; From 93990511d213fb272793ce32b7210becc8250c6d Mon Sep 17 00:00:00 2001 From: Andrew Arnott Date: Mon, 27 May 2019 12:48:14 -0600 Subject: [PATCH 2/2] Revert PR #334 With this PR applied, I can no longer debug unit tests (at least in the BuildIntegrationTests class) because the MSBuildExtensions.LoadMSBuild() method would throw because MSBuild assemblies had already loaded. --- .../AssemblyInfoTest.cs | 5 ----- .../BuildIntegrationTests.cs | 2 -- .../MSBuildExtensions.cs | 16 ---------------- .../NerdBank.GitVersioning.Tests.csproj | 8 +++++--- 4 files changed, 5 insertions(+), 26 deletions(-) diff --git a/src/NerdBank.GitVersioning.Tests/AssemblyInfoTest.cs b/src/NerdBank.GitVersioning.Tests/AssemblyInfoTest.cs index 8952b556..047e6a5e 100644 --- a/src/NerdBank.GitVersioning.Tests/AssemblyInfoTest.cs +++ b/src/NerdBank.GitVersioning.Tests/AssemblyInfoTest.cs @@ -8,11 +8,6 @@ public class AssemblyInfoTest { - public AssemblyInfoTest() - { - MSBuildExtensions.LoadMSBuild(); - } - [Fact] public void FSharpGenerator() { diff --git a/src/NerdBank.GitVersioning.Tests/BuildIntegrationTests.cs b/src/NerdBank.GitVersioning.Tests/BuildIntegrationTests.cs index 54a036e8..c7208ac2 100644 --- a/src/NerdBank.GitVersioning.Tests/BuildIntegrationTests.cs +++ b/src/NerdBank.GitVersioning.Tests/BuildIntegrationTests.cs @@ -48,8 +48,6 @@ public class BuildIntegrationTests : RepoTestBase public BuildIntegrationTests(ITestOutputHelper logger) : base(logger) { - MSBuildExtensions.LoadMSBuild(); - int seed = (int)DateTime.Now.Ticks; this.random = new Random(seed); this.Logger.WriteLine("Random seed: {0}", seed); diff --git a/src/NerdBank.GitVersioning.Tests/MSBuildExtensions.cs b/src/NerdBank.GitVersioning.Tests/MSBuildExtensions.cs index 5edbbd07..e0d1330e 100644 --- a/src/NerdBank.GitVersioning.Tests/MSBuildExtensions.cs +++ b/src/NerdBank.GitVersioning.Tests/MSBuildExtensions.cs @@ -7,28 +7,12 @@ using Microsoft.Build.Evaluation; using Microsoft.Build.Execution; using Microsoft.Build.Framework; -using Microsoft.Build.Locator; using Microsoft.Build.Logging; using Validation; using Xunit.Abstractions; internal static class MSBuildExtensions { - private static readonly object loadLock = new object(); - private static bool loaded; - - internal static void LoadMSBuild() - { - lock (loadLock) - { - if (!loaded) - { - MSBuildLocator.RegisterDefaults(); - loaded = true; - } - } - } - internal static async Task BuildAsync(this BuildManager buildManager, ITestOutputHelper logger, ProjectCollection projectCollection, ProjectRootElement project, string target, IDictionary globalProperties = null, LoggerVerbosity logVerbosity = LoggerVerbosity.Detailed, ILogger[] additionalLoggers = null) { Requires.NotNull(buildManager, nameof(buildManager)); diff --git a/src/NerdBank.GitVersioning.Tests/NerdBank.GitVersioning.Tests.csproj b/src/NerdBank.GitVersioning.Tests/NerdBank.GitVersioning.Tests.csproj index 91cab44d..8978cbc8 100644 --- a/src/NerdBank.GitVersioning.Tests/NerdBank.GitVersioning.Tests.csproj +++ b/src/NerdBank.GitVersioning.Tests/NerdBank.GitVersioning.Tests.csproj @@ -31,9 +31,7 @@ - - - + @@ -45,7 +43,11 @@ + + + +