Skip to content

Commit a576b60

Browse files
committed
made WixVersionFileUpdater, GitVersionInformationGenerator injectable
1 parent 573a8fb commit a576b60

File tree

5 files changed

+50
-26
lines changed

5 files changed

+50
-26
lines changed

src/GitVersionCore.Tests/WixFileTests.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,14 @@ public void UpdateWixVersionFile()
5656

5757
var fileSystem = sp.GetService<IFileSystem>();
5858
var variableProvider = sp.GetService<IVariableProvider>();
59-
var vars = variableProvider.GetVariablesFor(semVer, config, false);
59+
var versionVariables = variableProvider.GetVariablesFor(semVer, config, false);
6060

61-
using var wixVersionFileUpdater = new WixVersionFileUpdater(workingDir, vars, fileSystem, log);
62-
wixVersionFileUpdater.Update();
63-
fileSystem.ReadAllText(wixVersionFileUpdater.WixVersionFile).
64-
ShouldMatchApproved(c => c.SubFolder(Path.Combine("Approved")));
61+
using var wixVersionFileUpdater = sp.GetService<IWixVersionFileUpdater>();
62+
63+
var file = wixVersionFileUpdater.Update(versionVariables, workingDir);
64+
fileSystem
65+
.ReadAllText(file)
66+
.ShouldMatchApproved(c => c.SubFolder(Path.Combine("Approved")));
6567
}
6668
}
6769
}

src/GitVersionCore/Core/GitVersionTool.cs

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,35 @@ namespace GitVersion
1414
public class GitVersionTool : IGitVersionTool
1515
{
1616
private readonly ILog log;
17+
private readonly IFileSystem fileSystem;
1718
private readonly IGitVersionCache gitVersionCache;
1819
private readonly INextVersionCalculator nextVersionCalculator;
1920
private readonly IVariableProvider variableProvider;
2021
private readonly IGitVersionCacheKeyFactory cacheKeyFactory;
21-
private readonly IFileSystem fileSystem;
22+
private readonly IWixVersionFileUpdater wixVersionFileUpdater;
23+
private readonly IGitVersionInformationGenerator gitVersionInformationGenerator;
24+
2225
private readonly IOptions<Arguments> options;
2326
private readonly GitVersionContext context;
27+
2428
private readonly IBuildServer buildServer;
2529

26-
public GitVersionTool(ILog log, IGitVersionCache gitVersionCache, INextVersionCalculator nextVersionCalculator, IVariableProvider variableProvider,
27-
IGitVersionCacheKeyFactory cacheKeyFactory, IBuildServerResolver buildServerResolver, IFileSystem fileSystem,
30+
public GitVersionTool(ILog log, IFileSystem fileSystem, IGitVersionCache gitVersionCache, INextVersionCalculator nextVersionCalculator, IVariableProvider variableProvider,
31+
IGitVersionCacheKeyFactory cacheKeyFactory, IBuildServerResolver buildServerResolver,
32+
IWixVersionFileUpdater wixVersionFileUpdater, IGitVersionInformationGenerator gitVersionInformationGenerator,
2833
IOptions<Arguments> options, IOptions<GitVersionContext> versionContext)
2934
{
3035
this.log = log ?? throw new ArgumentNullException(nameof(log));
36+
this.fileSystem = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem));
3137
this.gitVersionCache = gitVersionCache ?? throw new ArgumentNullException(nameof(gitVersionCache));
3238
this.nextVersionCalculator = nextVersionCalculator ?? throw new ArgumentNullException(nameof(nextVersionCalculator));
3339
this.variableProvider = variableProvider ?? throw new ArgumentNullException(nameof(variableProvider));
3440
this.options = options ?? throw new ArgumentNullException(nameof(options));
3541
this.cacheKeyFactory = cacheKeyFactory ?? throw new ArgumentNullException(nameof(cacheKeyFactory));
36-
this.fileSystem = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem));
42+
43+
this.wixVersionFileUpdater = wixVersionFileUpdater ?? throw new ArgumentNullException(nameof(wixVersionFileUpdater));
44+
this.gitVersionInformationGenerator = gitVersionInformationGenerator ?? throw new ArgumentNullException(nameof(gitVersionInformationGenerator));
45+
3746
context = versionContext.Value;
3847
buildServer = buildServerResolver.Resolve();
3948
}
@@ -107,15 +116,16 @@ public void UpdateWixVersionFile(VersionVariables variables)
107116

108117
if (arguments.UpdateWixVersionFile)
109118
{
110-
using var wixVersionFileUpdater = new WixVersionFileUpdater(arguments.TargetPath, variables, fileSystem, log);
111-
wixVersionFileUpdater.Update();
119+
using (wixVersionFileUpdater)
120+
{
121+
wixVersionFileUpdater.Update(variables, arguments.TargetPath);
122+
}
112123
}
113124
}
114125

115126
public void GenerateGitVersionInformation(VersionVariables variables, FileWriteInfo fileWriteInfo)
116127
{
117-
var generator = new GitVersionInformationGenerator(fileSystem);
118-
generator.Generate(variables, fileWriteInfo);
128+
gitVersionInformationGenerator.Generate(variables, fileWriteInfo);
119129
}
120130

121131
private VersionVariables ExecuteInternal()

src/GitVersionCore/Extensions/GitVersionInformationResources/GitVersionInformationGenerator.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,12 @@ public FileWriteInfo(string workingDirectory, string fileName, string fileExtens
2020
}
2121

2222

23-
public class GitVersionInformationGenerator
23+
public interface IGitVersionInformationGenerator
24+
{
25+
void Generate(VersionVariables variables, FileWriteInfo writeInfo);
26+
}
27+
28+
public class GitVersionInformationGenerator : IGitVersionInformationGenerator
2429
{
2530
private readonly IFileSystem fileSystem;
2631
private readonly TemplateManager templateManager;

src/GitVersionCore/Extensions/WixVersionFileUpdater.cs

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,38 +7,43 @@
77

88
namespace GitVersion.Extensions
99
{
10-
public class WixVersionFileUpdater : IDisposable
10+
public interface IWixVersionFileUpdater : IDisposable
11+
{
12+
string Update(VersionVariables variables, string workingDirectory);
13+
}
14+
15+
public class WixVersionFileUpdater : IWixVersionFileUpdater
1116
{
12-
private readonly VersionVariables variables;
1317
private readonly IFileSystem fileSystem;
1418
private readonly ILog log;
15-
public string WixVersionFile { get; }
19+
private string wixVersionFile;
1620
public const string WixVersionFileName = "GitVersion_WixVersion.wxi";
1721

18-
public WixVersionFileUpdater(string workingDirectory, VersionVariables variables, IFileSystem fileSystem, ILog log)
22+
public WixVersionFileUpdater(IFileSystem fileSystem, ILog log)
1923
{
20-
this.variables = variables;
2124
this.fileSystem = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem));
2225
this.log = log ?? throw new ArgumentNullException(nameof(log));
23-
WixVersionFile = Path.Combine(workingDirectory, WixVersionFileName);
2426
}
2527

26-
public void Update()
28+
public string Update(VersionVariables variables, string workingDirectory)
2729
{
30+
wixVersionFile = Path.Combine(workingDirectory, WixVersionFileName);
2831
log.Info("Updating GitVersion_WixVersion.wxi");
2932

3033
var doc = new XmlDocument();
31-
doc.LoadXml(GetWixFormatFromVersionVariables());
34+
doc.LoadXml(GetWixFormatFromVersionVariables(variables));
3235

3336
var xmlDecl = doc.CreateXmlDeclaration("1.0", "utf-8", null);
3437
var root = doc.DocumentElement;
3538
doc.InsertBefore(xmlDecl, root);
3639

37-
using var fs = fileSystem.OpenWrite(WixVersionFile);
40+
using var fs = fileSystem.OpenWrite(wixVersionFile);
3841
doc.Save(fs);
42+
43+
return wixVersionFile;
3944
}
4045

41-
private string GetWixFormatFromVersionVariables()
46+
private static string GetWixFormatFromVersionVariables(VersionVariables variables)
4247
{
4348
var builder = new StringBuilder();
4449
builder.Append("<Include xmlns=\"http://schemas.microsoft.com/wix/2006/wi\">\n");
@@ -54,7 +59,7 @@ private string GetWixFormatFromVersionVariables()
5459

5560
public void Dispose()
5661
{
57-
log.Info($"Done writing {WixVersionFile}");
62+
log.Info($"Done writing {wixVersionFile}");
5863
}
5964
}
6065
}

src/GitVersionCore/GitVersionCoreModule.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using GitVersion.Configuration;
44
using GitVersion.Configuration.Init;
55
using GitVersion.Extensions;
6+
using GitVersion.Extensions.GitVersionInformationResources;
67
using GitVersion.Logging;
78
using GitVersion.VersionCalculation;
89
using GitVersion.VersionCalculation.Cache;
@@ -41,7 +42,8 @@ public void RegisterTypes(IServiceCollection services)
4142
services.AddSingleton<IGitPreparer, GitPreparer>();
4243
services.AddSingleton<IGitRepoMetadataProvider, GitRepoMetadataProvider>();
4344

44-
services.AddSingleton<IGitRepoMetadataProvider, GitRepoMetadataProvider>();
45+
services.AddSingleton<IGitVersionInformationGenerator, GitVersionInformationGenerator>();
46+
services.AddSingleton<IWixVersionFileUpdater, WixVersionFileUpdater>();
4547

4648
services.AddSingleton(sp => sp.GetService<IConfigFileLocatorFactory>().Create());
4749

0 commit comments

Comments
 (0)