Skip to content

Commit c27ed7f

Browse files
committed
replace Logger with ILog (ConfigFileProvider)
Add IConfigFileLocator
1 parent 1ffcc96 commit c27ed7f

24 files changed

+233
-224
lines changed

src/GitVersionCore.Tests/ConfigProviderTests.cs

Lines changed: 33 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
using Shouldly;
99
using YamlDotNet.Serialization;
1010
using GitVersion.Configuration;
11-
using GitVersion.Helpers;
1211
using GitVersion.VersioningModes;
1312
using GitVersion.Extensions;
1413
using GitVersion.Common;
14+
using GitVersion.Log;
1515

1616
namespace GitVersionCore.Tests
1717
{
@@ -22,13 +22,14 @@ public class ConfigProviderTests : TestBase
2222

2323
string repoPath;
2424
IFileSystem fileSystem;
25-
ConfigFileLocator configFileLocator;
25+
IConfigFileLocator configFileLocator;
2626

2727
[SetUp]
2828
public void Setup()
2929
{
3030
fileSystem = new TestFileSystem();
31-
configFileLocator = new DefaultConfigFileLocator();
31+
var log = new NullLog();
32+
configFileLocator = new DefaultConfigFileLocator(fileSystem, log);
3233
repoPath = DefaultRepoPath;
3334

3435
ShouldlyConfiguration.ShouldMatchApprovedDefaults.LocateTestMethodUsingAttribute<TestAttribute>();
@@ -52,7 +53,7 @@ public void CanReadOldDocument()
5253
tag: rc
5354
";
5455
SetupConfigFileContent(text);
55-
var error = Should.Throw<OldConfigurationException>(() => ConfigurationProvider.Provide(repoPath, fileSystem, configFileLocator));
56+
var error = Should.Throw<OldConfigurationException>(() => ConfigurationProvider.Provide(repoPath, configFileLocator));
5657
error.Message.ShouldContainWithoutWhitespace(@"GitVersion configuration file contains old configuration, please fix the following errors:
5758
GitVersion branch configs no longer are keyed by regexes, update:
5859
dev(elop)?(ment)?$ -> develop
@@ -65,15 +66,15 @@ assemblyVersioningScheme has been replaced by assembly-versioning-scheme
6566
[Test]
6667
public void OverwritesDefaultsWithProvidedConfig()
6768
{
68-
var defaultConfig = ConfigurationProvider.Provide(repoPath, fileSystem, configFileLocator);
69+
var defaultConfig = ConfigurationProvider.Provide(repoPath, configFileLocator);
6970
const string text = @"
7071
next-version: 2.0.0
7172
branches:
7273
develop:
7374
mode: ContinuousDeployment
7475
tag: dev";
7576
SetupConfigFileContent(text);
76-
var config = ConfigurationProvider.Provide(repoPath, fileSystem, configFileLocator);
77+
var config = ConfigurationProvider.Provide(repoPath, configFileLocator);
7778

7879
config.NextVersion.ShouldBe("2.0.0");
7980
config.Branches["develop"].Increment.ShouldBe(defaultConfig.Branches["develop"].Increment);
@@ -86,7 +87,7 @@ public void AllBranchesModeWhenUsingMainline()
8687
{
8788
const string text = @"mode: Mainline";
8889
SetupConfigFileContent(text);
89-
var config = ConfigurationProvider.Provide(repoPath, fileSystem, configFileLocator);
90+
var config = ConfigurationProvider.Provide(repoPath, configFileLocator);
9091
var branches = config.Branches.Select(x => x.Value);
9192
branches.All(branch => branch.VersioningMode == VersioningMode.Mainline).ShouldBe(true);
9293
}
@@ -100,7 +101,7 @@ public void CanRemoveTag()
100101
release:
101102
tag: """"";
102103
SetupConfigFileContent(text);
103-
var config = ConfigurationProvider.Provide(repoPath, fileSystem, configFileLocator);
104+
var config = ConfigurationProvider.Provide(repoPath, configFileLocator);
104105

105106
config.NextVersion.ShouldBe("2.0.0");
106107
config.Branches["release"].Tag.ShouldBe(string.Empty);
@@ -115,7 +116,7 @@ public void RegexIsRequired()
115116
bug:
116117
tag: bugfix";
117118
SetupConfigFileContent(text);
118-
var ex = Should.Throw<GitVersionConfigurationException>(() => ConfigurationProvider.Provide(repoPath, fileSystem, configFileLocator));
119+
var ex = Should.Throw<GitVersionConfigurationException>(() => ConfigurationProvider.Provide(repoPath, configFileLocator));
119120
ex.Message.ShouldBe("Branch configuration 'bug' is missing required configuration 'regex'\n\n" +
120121
"See http://gitversion.readthedocs.io/en/latest/configuration/ for more info");
121122
}
@@ -130,7 +131,7 @@ public void SourceBranchIsRequired()
130131
regex: 'bug[/-]'
131132
tag: bugfix";
132133
SetupConfigFileContent(text);
133-
var ex = Should.Throw<GitVersionConfigurationException>(() => ConfigurationProvider.Provide(repoPath, fileSystem, configFileLocator));
134+
var ex = Should.Throw<GitVersionConfigurationException>(() => ConfigurationProvider.Provide(repoPath, configFileLocator));
134135
ex.Message.ShouldBe("Branch configuration 'bug' is missing required configuration 'source-branches'\n\n" +
135136
"See http://gitversion.readthedocs.io/en/latest/configuration/ for more info");
136137
}
@@ -146,7 +147,7 @@ public void CanProvideConfigForNewBranch()
146147
tag: bugfix
147148
source-branches: []";
148149
SetupConfigFileContent(text);
149-
var config = ConfigurationProvider.Provide(repoPath, fileSystem, configFileLocator);
150+
var config = ConfigurationProvider.Provide(repoPath, configFileLocator);
150151

151152
config.Branches["bug"].Regex.ShouldBe("bug[/-]");
152153
config.Branches["bug"].Tag.ShouldBe("bugfix");
@@ -157,7 +158,7 @@ public void NextVersionCanBeInteger()
157158
{
158159
const string text = "next-version: 2";
159160
SetupConfigFileContent(text);
160-
var config = ConfigurationProvider.Provide(repoPath, fileSystem, configFileLocator);
161+
var config = ConfigurationProvider.Provide(repoPath, configFileLocator);
161162

162163
config.NextVersion.ShouldBe("2.0");
163164
}
@@ -167,7 +168,7 @@ public void NextVersionCanHaveEnormousMinorVersion()
167168
{
168169
const string text = "next-version: 2.118998723";
169170
SetupConfigFileContent(text);
170-
var config = ConfigurationProvider.Provide(repoPath, fileSystem, configFileLocator);
171+
var config = ConfigurationProvider.Provide(repoPath, configFileLocator);
171172

172173
config.NextVersion.ShouldBe("2.118998723");
173174
}
@@ -177,7 +178,7 @@ public void NextVersionCanHavePatch()
177178
{
178179
const string text = "next-version: 2.12.654651698";
179180
SetupConfigFileContent(text);
180-
var config = ConfigurationProvider.Provide(repoPath, fileSystem, configFileLocator);
181+
var config = ConfigurationProvider.Provide(repoPath, configFileLocator);
181182

182183
config.NextVersion.ShouldBe("2.12.654651698");
183184
}
@@ -188,7 +189,7 @@ public void NextVersionCanHavePatch()
188189
[Description("Won't run on Mono due to source information not being available for ShouldMatchApproved.")]
189190
public void CanWriteOutEffectiveConfiguration()
190191
{
191-
var config = ConfigurationProvider.GetEffectiveConfigAsString(repoPath, fileSystem, configFileLocator);
192+
var config = ConfigurationProvider.GetEffectiveConfigAsString(repoPath, configFileLocator);
192193

193194
config.ShouldMatchApproved();
194195
}
@@ -203,7 +204,7 @@ public void CanUpdateAssemblyInformationalVersioningScheme()
203204

204205
SetupConfigFileContent(text);
205206

206-
var config = ConfigurationProvider.Provide(repoPath, fileSystem, configFileLocator);
207+
var config = ConfigurationProvider.Provide(repoPath, configFileLocator);
207208
config.AssemblyVersioningScheme.ShouldBe(AssemblyVersioningScheme.MajorMinor);
208209
config.AssemblyFileVersioningScheme.ShouldBe(AssemblyFileVersioningScheme.MajorMinorPatch);
209210
config.AssemblyInformationalFormat.ShouldBe("{NugetVersion}");
@@ -219,7 +220,7 @@ public void CanUpdateAssemblyInformationalVersioningSchemeWithMultipleVariables(
219220

220221
SetupConfigFileContent(text);
221222

222-
var config = ConfigurationProvider.Provide(repoPath, fileSystem, configFileLocator);
223+
var config = ConfigurationProvider.Provide(repoPath, configFileLocator);
223224
config.AssemblyVersioningScheme.ShouldBe(AssemblyVersioningScheme.MajorMinor);
224225
config.AssemblyFileVersioningScheme.ShouldBe(AssemblyFileVersioningScheme.MajorMinorPatch);
225226
config.AssemblyInformationalFormat.ShouldBe("{Major}.{Minor}.{Patch}");
@@ -238,7 +239,7 @@ public void CanUpdateAssemblyInformationalVersioningSchemeWithFullSemVer()
238239

239240
SetupConfigFileContent(text);
240241

241-
var config = ConfigurationProvider.Provide(repoPath, fileSystem, configFileLocator);
242+
var config = ConfigurationProvider.Provide(repoPath, configFileLocator);
242243
config.AssemblyVersioningScheme.ShouldBe(AssemblyVersioningScheme.MajorMinorPatch);
243244
config.AssemblyFileVersioningScheme.ShouldBe(AssemblyFileVersioningScheme.MajorMinorPatch);
244245
config.AssemblyInformationalFormat.ShouldBe("{FullSemVer}");
@@ -249,7 +250,7 @@ public void CanReadDefaultDocument()
249250
{
250251
const string text = "";
251252
SetupConfigFileContent(text);
252-
var config = ConfigurationProvider.Provide(repoPath, fileSystem, configFileLocator);
253+
var config = ConfigurationProvider.Provide(repoPath, configFileLocator);
253254
config.AssemblyVersioningScheme.ShouldBe(AssemblyVersioningScheme.MajorMinorPatch);
254255
config.AssemblyFileVersioningScheme.ShouldBe(AssemblyFileVersioningScheme.MajorMinorPatch);
255256
config.AssemblyInformationalFormat.ShouldBe(null);
@@ -276,15 +277,17 @@ public void NoWarnOnGitVersionYmlFile()
276277
{
277278
SetupConfigFileContent(string.Empty);
278279

279-
var s = string.Empty;
280+
var stringLogger = string.Empty;
281+
void Action(string info) => stringLogger = info;
280282

281-
void Action(string info) => s = info;
283+
var logAppender = new TestLogAppender(Action);
284+
var log = new Log(logAppender);
282285

283-
using (Logger.AddLoggersTemporarily(Action, Action, Action, Action))
284-
{
285-
ConfigurationProvider.Provide(repoPath, fileSystem, configFileLocator);
286-
}
287-
s.Length.ShouldBe(0);
286+
var defaultConfigFileLocator = new DefaultConfigFileLocator(fileSystem, log);
287+
288+
ConfigurationProvider.Provide(repoPath, defaultConfigFileLocator);
289+
290+
stringLogger.Length.ShouldBe(0);
288291
}
289292

290293
string SetupConfigFileContent(string text, string fileName = DefaultConfigFileLocator.DefaultFileName)
@@ -311,7 +314,7 @@ public void ShouldUseSpecifiedSourceBranchesForDevelop()
311314
source-branches: ['develop']
312315
tag: dev";
313316
SetupConfigFileContent(text);
314-
var config = ConfigurationProvider.Provide(repoPath, fileSystem, configFileLocator);
317+
var config = ConfigurationProvider.Provide(repoPath, configFileLocator);
315318

316319
config.Branches["develop"].SourceBranches.ShouldBe(new List<string> { "develop" });
317320
}
@@ -326,7 +329,7 @@ public void ShouldUseDefaultSourceBranchesWhenNotSpecifiedForDevelop()
326329
mode: ContinuousDeployment
327330
tag: dev";
328331
SetupConfigFileContent(text);
329-
var config = ConfigurationProvider.Provide(repoPath, fileSystem, configFileLocator);
332+
var config = ConfigurationProvider.Provide(repoPath, configFileLocator);
330333

331334
config.Branches["develop"].SourceBranches.ShouldBe(new List<string>());
332335
}
@@ -342,7 +345,7 @@ public void ShouldUseSpecifiedSourceBranchesForFeature()
342345
source-branches: ['develop', 'release']
343346
tag: dev";
344347
SetupConfigFileContent(text);
345-
var config = ConfigurationProvider.Provide(repoPath, fileSystem, configFileLocator);
348+
var config = ConfigurationProvider.Provide(repoPath, configFileLocator);
346349

347350
config.Branches["feature"].SourceBranches.ShouldBe(new List<string> { "develop", "release" });
348351
}
@@ -357,7 +360,7 @@ public void ShouldUseDefaultSourceBranchesWhenNotSpecifiedForFeature()
357360
mode: ContinuousDeployment
358361
tag: dev";
359362
SetupConfigFileContent(text);
360-
var config = ConfigurationProvider.Provide(repoPath, fileSystem, configFileLocator);
363+
var config = ConfigurationProvider.Provide(repoPath, configFileLocator);
361364

362365
config.Branches["feature"].SourceBranches.ShouldBe(
363366
new List<string> { "develop", "master", "release", "feature", "support", "hotfix" });

src/GitVersionCore.Tests/DefaultConfigFileLocatorTests.cs

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1+
using System;
12
using System.IO;
23
using NUnit.Framework;
34
using Shouldly;
45
using GitVersion.Configuration;
56
using GitVersion.Exceptions;
6-
using GitVersion.Helpers;
77
using GitVersion.Common;
8+
using GitVersion.Log;
89

910
namespace GitVersionCore.Tests
1011
{
@@ -17,13 +18,11 @@ public class DefaultConfigFileLocatorTests : TestBase
1718
string repoPath;
1819
string workingPath;
1920
IFileSystem fileSystem;
20-
DefaultConfigFileLocator configFileLocator;
2121

2222
[SetUp]
2323
public void Setup()
2424
{
2525
fileSystem = new TestFileSystem();
26-
configFileLocator = new DefaultConfigFileLocator();
2726
repoPath = DefaultRepoPath;
2827
workingPath = DefaultWorkingPath;
2928

@@ -36,16 +35,13 @@ public void WarnOnExistingGitVersionConfigYamlFile(string path)
3635
{
3736
SetupConfigFileContent(string.Empty, DefaultConfigFileLocator.ObsoleteFileName, path);
3837

39-
var logOutput = string.Empty;
40-
41-
void Action(string info) => logOutput = info;
42-
43-
using (Logger.AddLoggersTemporarily(Action, Action, Action, Action))
38+
var output = WithDefaultConfigFileLocator(configFileLocator =>
4439
{
45-
configFileLocator.Verify(workingPath, repoPath, fileSystem);
46-
}
40+
configFileLocator.Verify(workingPath, repoPath);
41+
});
42+
4743
var configFileDeprecatedWarning = $"{DefaultConfigFileLocator.ObsoleteFileName}' is deprecated, use '{DefaultConfigFileLocator.DefaultFileName}' instead";
48-
logOutput.Contains(configFileDeprecatedWarning).ShouldBe(true);
44+
output.Contains(configFileDeprecatedWarning).ShouldBe(true);
4945
}
5046

5147
[TestCase(DefaultRepoPath)]
@@ -55,17 +51,13 @@ public void WarnOnAmbiguousConfigFilesAtTheSameProjectRootDirectory(string path)
5551
SetupConfigFileContent(string.Empty, DefaultConfigFileLocator.ObsoleteFileName, path);
5652
SetupConfigFileContent(string.Empty, DefaultConfigFileLocator.DefaultFileName, path);
5753

58-
var logOutput = string.Empty;
59-
60-
void Action(string info) => logOutput = info;
61-
62-
using (Logger.AddLoggersTemporarily(Action, Action, Action, Action))
54+
var output = WithDefaultConfigFileLocator(configFileLocator =>
6355
{
64-
configFileLocator.Verify(workingPath, repoPath, fileSystem);
65-
}
56+
configFileLocator.Verify(workingPath, repoPath);
57+
});
6658

6759
var configFileDeprecatedWarning = $"Ambiguous config files at '{path}'";
68-
logOutput.Contains(configFileDeprecatedWarning).ShouldBe(true);
60+
output.Contains(configFileDeprecatedWarning).ShouldBe(true);
6961
}
7062

7163
[TestCase(DefaultConfigFileLocator.DefaultFileName, DefaultConfigFileLocator.DefaultFileName)]
@@ -77,7 +69,13 @@ public void ThrowsExceptionOnAmbiguousConfigFileLocation(string repoConfigFile,
7769
var repositoryConfigFilePath = SetupConfigFileContent(string.Empty, repoConfigFile, repoPath);
7870
var workingDirectoryConfigFilePath = SetupConfigFileContent(string.Empty, workingConfigFile, workingPath);
7971

80-
WarningException exception = Should.Throw<WarningException>(() => { configFileLocator.Verify(workingPath, repoPath, fileSystem); });
72+
WarningException exception = Should.Throw<WarningException>(() =>
73+
{
74+
WithDefaultConfigFileLocator(configFileLocator =>
75+
{
76+
configFileLocator.Verify(workingPath, repoPath);
77+
});
78+
});
8179

8280
var expecedMessage = $"Ambiguous config file selection from '{workingDirectoryConfigFilePath}' and '{repositoryConfigFilePath}'";
8381
exception.Message.ShouldBe(expecedMessage);
@@ -88,15 +86,12 @@ public void NoWarnOnGitVersionYmlFile()
8886
{
8987
SetupConfigFileContent(string.Empty);
9088

91-
var s = string.Empty;
92-
93-
void Action(string info) => s = info;
94-
95-
using (Logger.AddLoggersTemporarily(Action, Action, Action, Action))
89+
var output = WithDefaultConfigFileLocator(configFileLocator =>
9690
{
97-
ConfigurationProvider.Provide(repoPath, fileSystem, configFileLocator);
98-
}
99-
s.Length.ShouldBe(0);
91+
ConfigurationProvider.Provide(repoPath, configFileLocator);
92+
});
93+
94+
output.Length.ShouldBe(0);
10095
}
10196

10297
string SetupConfigFileContent(string text, string fileName = DefaultConfigFileLocator.DefaultFileName)
@@ -130,5 +125,19 @@ public void WarnOnObsoleteIsDevelopBranchConfigurationSetting()
130125
const string expectedMessage = @"'is-develop' is deprecated, use 'tracks-release-branches' instead.";
131126
exception.Message.ShouldContain(expectedMessage);
132127
}
128+
129+
private string WithDefaultConfigFileLocator(Action<IConfigFileLocator> action)
130+
{
131+
var stringLogger = string.Empty;
132+
void Action(string info) => stringLogger = info;
133+
134+
var logAppender = new TestLogAppender(Action);
135+
var log = new Log(logAppender);
136+
137+
var configFileLocator = new DefaultConfigFileLocator(fileSystem, log);
138+
action(configFileLocator);
139+
140+
return stringLogger;
141+
}
133142
}
134143
}

src/GitVersionCore.Tests/ExecuteCoreTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public void CacheKeySameAfterReNormalizing()
4343
var targetUrl = "https://github.com/GitTools/GitVersion.git";
4444
var targetBranch = "refs/head/master";
4545
var gitPreparer = new GitPreparer(log, targetUrl, null, new Authentication(), false, fixture.RepositoryPath);
46-
var configFileLocator = new DefaultConfigFileLocator();
46+
var configFileLocator = new DefaultConfigFileLocator(fileSystem, log);
4747
gitPreparer.Initialise(true, targetBranch);
4848
var cacheKey1 = GitVersionCacheKeyFactory.Create(fileSystem, log, gitPreparer, null, configFileLocator);
4949
gitPreparer.Initialise(true, targetBranch);
@@ -71,7 +71,7 @@ public void CacheKeyForWorktree()
7171

7272
var targetUrl = "https://github.com/GitTools/GitVersion.git";
7373
var gitPreparer = new GitPreparer(log, targetUrl, null, new Authentication(), false, worktreePath);
74-
var configFileLocator = new DefaultConfigFileLocator();
74+
var configFileLocator = new DefaultConfigFileLocator(fileSystem, log);
7575
var cacheKey = GitVersionCacheKeyFactory.Create(fileSystem, log, gitPreparer, null, configFileLocator);
7676
cacheKey.Value.ShouldNotBeEmpty();
7777
}

src/GitVersionCore.Tests/Init/InitScenarios.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ public void Setup()
2222
public void CanSetNextVersion()
2323
{
2424
var log = new NullLog();
25-
var testFileSystem = new TestFileSystem();
25+
var fileSystem = new TestFileSystem();
2626
var testConsole = new TestConsole("3", "2.0.0", "0");
27-
var configFileLocator = new DefaultConfigFileLocator();
27+
var configFileLocator = new DefaultConfigFileLocator(fileSystem, log);
2828
var workingDirectory = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "c:\\proj" : "/proj";
29-
ConfigurationProvider.Init(workingDirectory, testFileSystem, testConsole, log, configFileLocator);
29+
ConfigurationProvider.Init(workingDirectory, fileSystem, testConsole, log, configFileLocator);
3030

31-
testFileSystem.ReadAllText(Path.Combine(workingDirectory, "GitVersion.yml")).ShouldMatchApproved();
31+
fileSystem.ReadAllText(Path.Combine(workingDirectory, "GitVersion.yml")).ShouldMatchApproved();
3232
}
3333
}
3434
}

0 commit comments

Comments
 (0)