From 35832d483e05a00dbf31a4cdc46abe53d00be3a4 Mon Sep 17 00:00:00 2001 From: Henning Moe Date: Tue, 24 Mar 2015 08:19:59 +0100 Subject: [PATCH 1/2] Check for null when looking for a git directory and show an appropriate error. Fixes issue #406. --- GitVersionTask/WriteVersionInfoToBuildLog.cs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/GitVersionTask/WriteVersionInfoToBuildLog.cs b/GitVersionTask/WriteVersionInfoToBuildLog.cs index 12ffa26d97..e33341a5ed 100644 --- a/GitVersionTask/WriteVersionInfoToBuildLog.cs +++ b/GitVersionTask/WriteVersionInfoToBuildLog.cs @@ -1,11 +1,12 @@ namespace GitVersionTask { - using System; - using System.Collections.Generic; using GitVersion; using GitVersion.Helpers; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; + using System; + using System.Collections.Generic; + using System.IO; using Logger = GitVersion.Logger; public class WriteVersionInfoToBuildLog : Task @@ -51,6 +52,10 @@ public void InnerExecute() { Tuple result; var gitDirectory = GitDirFinder.TreeWalkForGitDir(SolutionDirectory); + + if (gitDirectory == null) + throw new DirectoryNotFoundException(string.Format("Unable to locate a git repository in \"{0}\". Make sure that the solution is located in a git controlled folder. If you are using continous integration make sure that the sources are checked out on the build agent.", SolutionDirectory)); + var configuration = ConfigurationProvider.Provide(gitDirectory, fileSystem); if (!VersionAndBranchFinder.TryGetVersion(SolutionDirectory, out result, configuration)) { @@ -66,8 +71,8 @@ public void InnerExecute() var versioningMode = config.VersioningMode; var variablesFor = VariableProvider.GetVariablesFor( - cachedVersion.SemanticVersion, assemblyVersioningScheme, versioningMode, - config.ContinuousDeploymentFallbackTag, + cachedVersion.SemanticVersion, assemblyVersioningScheme, versioningMode, + config.ContinuousDeploymentFallbackTag, gitVersionContext.IsCurrentCommitTagged); WriteIntegrationParameters(cachedVersion, BuildServerList.GetApplicableBuildServers(authentication), variablesFor); } From a0f8e397ad38e9b2f5b211b18dfe8b250d990bb0 Mon Sep 17 00:00:00 2001 From: Henning Moe Date: Tue, 24 Mar 2015 09:25:16 +0100 Subject: [PATCH 2/2] Add integration test for #406. --- .../GitVersionTask.Tests.csproj | 1 + .../WriteVersionInfoToBuildLogTests.cs | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 GitVersionTask.Tests/WriteVersionInfoToBuildLogTests.cs diff --git a/GitVersionTask.Tests/GitVersionTask.Tests.csproj b/GitVersionTask.Tests/GitVersionTask.Tests.csproj index c44485ef17..4d5bc3e9d6 100644 --- a/GitVersionTask.Tests/GitVersionTask.Tests.csproj +++ b/GitVersionTask.Tests/GitVersionTask.Tests.csproj @@ -112,6 +112,7 @@ + diff --git a/GitVersionTask.Tests/WriteVersionInfoToBuildLogTests.cs b/GitVersionTask.Tests/WriteVersionInfoToBuildLogTests.cs new file mode 100644 index 0000000000..95ef72809e --- /dev/null +++ b/GitVersionTask.Tests/WriteVersionInfoToBuildLogTests.cs @@ -0,0 +1,22 @@ + +namespace GitVersionTask.Tests +{ + using System.IO; + using NUnit.Framework; + + [TestFixture] + public class WriteVersionInfoToBuildLogTests + { + [Test] + public void UsingInvalidGitDirectory_ThrowsDirectoryNotFoundException() + { + var task = new WriteVersionInfoToBuildLog + { + BuildEngine = new MockBuildEngine(), + SolutionDirectory = Path.GetTempPath() + }; + + Assert.That(task.InnerExecute, Throws.InstanceOf()); + } + } +}