Skip to content

Commit 0366f69

Browse files
committed
added test for applying /overrideconfig option from command line
Ensures that overriden config will be applied whenever there cached version exists and willn't save results in cache
1 parent ca604a1 commit 0366f69

File tree

3 files changed

+70
-13
lines changed

3 files changed

+70
-13
lines changed

src/GitVersionCore.Tests/ExecuteCoreTests.cs

Lines changed: 57 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
using System;
2-
using System.IO;
3-
using System.Text;
4-
using GitTools.Testing;
1+
using GitTools.Testing;
52
using GitVersion;
63
using GitVersion.Helpers;
74
using NUnit.Framework;
85
using Shouldly;
6+
using System;
7+
using System.IO;
8+
using System.Text;
99

1010
[TestFixture]
1111
public class ExecuteCoreTests
@@ -60,6 +60,59 @@ public void CacheFileExistsOnDisk()
6060
info.ShouldContain("Deserializing version variables from cache file", () => info);
6161
}
6262

63+
64+
[Test]
65+
public void CacheFileExistsOnDiskWhenOverrideConfigIsSpecifiedVersionShouldBeDynamicallyCalculatedWithoutSavingInCache()
66+
{
67+
const string versionCacheFileContent = @"
68+
Major: 4
69+
Minor: 10
70+
Patch: 3
71+
PreReleaseTag: test.19
72+
PreReleaseTagWithDash: -test.19
73+
PreReleaseLabel: test
74+
PreReleaseNumber: 19
75+
BuildMetaData:
76+
BuildMetaDataPadded:
77+
FullBuildMetaData: Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
78+
MajorMinorPatch: 4.10.3
79+
SemVer: 4.10.3-test.19
80+
LegacySemVer: 4.10.3-test19
81+
LegacySemVerPadded: 4.10.3-test0019
82+
AssemblySemVer: 4.10.3.0
83+
FullSemVer: 4.10.3-test.19
84+
InformationalVersion: 4.10.3-test.19+Branch.feature/test.Sha.dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
85+
BranchName: feature/test
86+
Sha: dd2a29aff0c948e1bdf3dabbe13e1576e70d5f9f
87+
NuGetVersionV2: 4.10.3-test0019
88+
NuGetVersion: 4.10.3-test0019
89+
CommitsSinceVersionSource: 19
90+
CommitsSinceVersionSourcePadded: 0019
91+
CommitDate: 2015-11-10
92+
";
93+
94+
var versionAndBranchFinder = new ExecuteCore(fileSystem);
95+
96+
var info = RepositoryScope(versionAndBranchFinder, (fixture, vv) =>
97+
{
98+
fileSystem.WriteAllText(vv.FileName, versionCacheFileContent);
99+
100+
var gitPreparer = new GitPreparer(null, null, null, false, fixture.RepositoryPath);
101+
var cacheDirectory = GitVersionCache.GetCacheDirectory(gitPreparer);
102+
103+
var cacheDirectoryTimestamp = fileSystem.GetLastDirectoryWrite(cacheDirectory);
104+
105+
vv = versionAndBranchFinder.ExecuteGitVersion(null, null, null, null, false, fixture.RepositoryPath, null, new Config() { TagPrefix = "prefix" });
106+
107+
vv.AssemblySemVer.ShouldBe("0.1.0.0");
108+
109+
var cachedDirectoryTimestampAfter = fileSystem.GetLastDirectoryWrite(cacheDirectory);
110+
cachedDirectoryTimestampAfter.ShouldBe(cacheDirectoryTimestamp, () => "Cache was updated when override config was set");
111+
});
112+
113+
info.ShouldContain("Override config from command line", () => info);
114+
}
115+
63116
[Test]
64117
public void CacheFileIsMissing()
65118
{

src/GitVersionCore/ExecuteCore.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,11 @@ public VersionVariables ExecuteGitVersion(string targetUrl, string dynamicReposi
5050

5151
if (overrideConfig != null)
5252
{
53-
var overridenVersionVariables = ExecuteInternal(targetBranch, commitId, gitPreparer, buildServer, overrideConfig: overrideConfig);
54-
return overridenVersionVariables;
53+
using (Logger.IndentLog("Override config from command line"))
54+
{
55+
var overridenVersionVariables = ExecuteInternal(targetBranch, commitId, gitPreparer, buildServer, overrideConfig: overrideConfig);
56+
return overridenVersionVariables;
57+
}
5558
}
5659

5760
var versionVariables = gitVersionCache.LoadVersionVariablesFromDiskCache(gitPreparer);

src/GitVersionCore/GitVersionCache.cs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,18 @@ public void WriteVariablesToDiskCache(GitPreparer gitPreparer, VersionVariables
4343
}
4444
}
4545

46-
private string PrepareCacheDirectory(GitPreparer gitPreparer)
46+
public static string GetCacheDirectory(GitPreparer gitPreparer)
4747
{
4848
var gitDir = gitPreparer.GetDotGitDirectory();
49+
var cacheDir = Path.Combine(gitDir, "gitversion_cache");
50+
return cacheDir;
51+
}
52+
53+
private string PrepareCacheDirectory(GitPreparer gitPreparer)
54+
{
55+
var cacheDir = GetCacheDirectory(gitPreparer);
4956

5057
// If the cacheDir already exists, CreateDirectory just won't do anything (it won't fail). @asbjornu
51-
var cacheDir = GetCacheDir(gitDir);
5258
fileSystem.CreateDirectory(cacheDir);
5359

5460
return cacheDir;
@@ -115,11 +121,6 @@ static string GetCacheFileName(string key, string cacheDir)
115121
return string.Concat(Path.Combine(cacheDir, cacheKey), ".yml");
116122
}
117123

118-
static string GetCacheDir(string gitDir)
119-
{
120-
return Path.Combine(gitDir, "gitversion_cache");
121-
}
122-
123124
static string GetHash(string textToHash)
124125
{
125126
using (var sha1 = SHA1.Create())

0 commit comments

Comments
 (0)