Skip to content

Commit de3b943

Browse files
committed
made AssemblyInfoUpdater injectable
1 parent a576b60 commit de3b943

File tree

10 files changed

+125
-127
lines changed

10 files changed

+125
-127
lines changed

src/GitVersionCore.Tests/AssemblyInfoFileUpdaterTests.cs

Lines changed: 41 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.IO;
4+
using System.Linq;
45
using GitVersion;
56
using GitVersion.Extensions;
67
using GitVersion.Extensions.VersionAssemblyInfoResources;
@@ -47,8 +48,8 @@ public void ShouldCreateAssemblyInfoFileWhenNotExistsAndEnsureAssemblyInfo(strin
4748
var fullPath = Path.Combine(workingDir, assemblyInfoFile);
4849
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
4950

50-
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(assemblyInfoFile, workingDir, variables, fileSystem, log, true);
51-
assemblyInfoFileUpdater.Update();
51+
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fileSystem);
52+
assemblyInfoFileUpdater.Update(variables, true, workingDir, assemblyInfoFile);
5253

5354
fileSystem.ReadAllText(fullPath).ShouldMatchApproved(c => c.SubFolder(Path.Combine("Approved", fileExtension)));
5455
}
@@ -65,8 +66,8 @@ public void ShouldCreateAssemblyInfoFileAtPathWhenNotExistsAndEnsureAssemblyInfo
6566
var fullPath = Path.Combine(workingDir, assemblyInfoFile);
6667
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
6768

68-
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(assemblyInfoFile, workingDir, variables, fileSystem, log, true);
69-
assemblyInfoFileUpdater.Update();
69+
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fileSystem);
70+
assemblyInfoFileUpdater.Update(variables, true, workingDir, assemblyInfoFile);
7071

7172
fileSystem.ReadAllText(fullPath).ShouldMatchApproved(c => c.SubFolder(Path.Combine("Approved", fileExtension)));
7273
}
@@ -86,8 +87,8 @@ public void ShouldCreateAssemblyInfoFilesAtPathWhenNotExistsAndEnsureAssemblyInf
8687
};
8788
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
8889

89-
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(assemblyInfoFiles, workingDir, variables, fileSystem, log, true);
90-
assemblyInfoFileUpdater.Update();
90+
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fileSystem);
91+
assemblyInfoFileUpdater.Update(variables, true, workingDir, assemblyInfoFiles.ToArray());
9192

9293
foreach (var item in assemblyInfoFiles)
9394
{
@@ -106,8 +107,8 @@ public void ShouldNotCreateAssemblyInfoFileWhenNotExistsAndNotEnsureAssemblyInfo
106107
var fullPath = Path.Combine(workingDir, assemblyInfoFile);
107108
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
108109

109-
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(assemblyInfoFile, workingDir, variables, fileSystem, log, false);
110-
assemblyInfoFileUpdater.Update();
110+
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fileSystem);
111+
assemblyInfoFileUpdater.Update(variables, false, workingDir, assemblyInfoFile);
111112

112113
fileSystem.Exists(fullPath).ShouldBeFalse();
113114
}
@@ -121,8 +122,8 @@ public void ShouldNotCreateAssemblyInfoFileForUnknownSourceCodeAndEnsureAssembly
121122
var fullPath = Path.Combine(workingDir, assemblyInfoFile);
122123
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
123124

124-
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(assemblyInfoFile, workingDir, variables, fileSystem, log, true);
125-
assemblyInfoFileUpdater.Update();
125+
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fileSystem);
126+
assemblyInfoFileUpdater.Update(variables, true, workingDir, assemblyInfoFile);
126127

127128
fileSystem.Received(0).WriteAllText(fullPath, Arg.Any<string>());
128129
}
@@ -135,8 +136,8 @@ public void ShouldStartSearchFromWorkingDirectory()
135136
var assemblyInfoFiles = new HashSet<string>();
136137
var variables = variableProvider.GetVariablesFor(SemanticVersion.Parse("1.0.0", "v"), new TestEffectiveConfiguration(), false);
137138

138-
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(assemblyInfoFiles, workingDir, variables, fileSystem, log, false);
139-
assemblyInfoFileUpdater.Update();
139+
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fileSystem);
140+
assemblyInfoFileUpdater.Update(variables, false, workingDir, assemblyInfoFiles.ToArray());
140141

141142
fileSystem.Received().DirectoryGetFiles(Arg.Is(workingDir), Arg.Any<string>(), Arg.Any<SearchOption>());
142143
}
@@ -152,8 +153,8 @@ public void ShouldReplaceAssemblyVersion(string fileExtension, string assemblyFi
152153

153154
VerifyAssemblyInfoFile(assemblyFileContent, fileName, AssemblyVersioningScheme.MajorMinor, (fs, variables) =>
154155
{
155-
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(assemblyInfoFile, workingDir, variables, fs, log, false);
156-
assemblyInfoFileUpdater.Update();
156+
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fs);
157+
assemblyInfoFileUpdater.Update(variables, false, workingDir, assemblyInfoFile);
157158

158159
fs.Received().WriteAllText(fileName, Arg.Is<string>(s =>
159160
s.Contains(@"AssemblyVersion(""2.3.0.0"")") &&
@@ -175,8 +176,8 @@ public void ShouldNotReplaceAssemblyVersionWhenVersionSchemeIsNone(string fileEx
175176

176177
VerifyAssemblyInfoFile(assemblyFileContent, fileName, AssemblyVersioningScheme.None, verify: (fs, variables) =>
177178
{
178-
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(assemblyInfoFile, workingDir, variables, fs, log, false);
179-
assemblyInfoFileUpdater.Update();
179+
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fs);
180+
assemblyInfoFileUpdater.Update(variables, false, workingDir, assemblyInfoFile);
180181

181182
assemblyFileContent = fs.ReadAllText(fileName);
182183
assemblyFileContent.ShouldMatchApproved(c => c.SubFolder(Path.Combine("Approved", fileExtension)));
@@ -194,8 +195,8 @@ public void ShouldReplaceAssemblyVersionInRelativePath(string fileExtension, str
194195

195196
VerifyAssemblyInfoFile(assemblyFileContent, fileName, AssemblyVersioningScheme.MajorMinor, (fs, variables) =>
196197
{
197-
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(assemblyInfoFile, workingDir, variables, fs, log, false);
198-
assemblyInfoFileUpdater.Update();
198+
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fs);
199+
assemblyInfoFileUpdater.Update(variables, false, workingDir, assemblyInfoFile);
199200

200201
fs.Received().WriteAllText(fileName, Arg.Is<string>(s =>
201202
s.Contains(@"AssemblyVersion(""2.3.0.0"")") &&
@@ -215,8 +216,8 @@ public void ShouldReplaceAssemblyVersionInRelativePathWithWhiteSpace(string file
215216

216217
VerifyAssemblyInfoFile(assemblyFileContent, fileName, AssemblyVersioningScheme.MajorMinor, (fs, variables) =>
217218
{
218-
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(assemblyInfoFile, workingDir, variables, fs, log, false);
219-
assemblyInfoFileUpdater.Update();
219+
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fs);
220+
assemblyInfoFileUpdater.Update(variables, false, workingDir, assemblyInfoFile);
220221

221222
fs.Received().WriteAllText(fileName, Arg.Is<string>(s =>
222223
s.Contains(@"AssemblyVersion(""2.3.0.0"")") &&
@@ -236,8 +237,8 @@ public void ShouldReplaceAssemblyVersionWithStar(string fileExtension, string as
236237

237238
VerifyAssemblyInfoFile(assemblyFileContent, fileName, AssemblyVersioningScheme.MajorMinor, (fs, variables) =>
238239
{
239-
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(assemblyInfoFile, workingDir, variables, fs, log, false);
240-
assemblyInfoFileUpdater.Update();
240+
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fs);
241+
assemblyInfoFileUpdater.Update(variables, false, workingDir, assemblyInfoFile);
241242

242243
fs.Received().WriteAllText(fileName, Arg.Is<string>(s =>
243244
s.Contains(@"AssemblyVersion(""2.3.0.0"")") &&
@@ -257,8 +258,8 @@ public void ShouldReplaceAssemblyVersionWithAtttributeSuffix(string fileExtensio
257258

258259
VerifyAssemblyInfoFile(assemblyFileContent, fileName, verify: (fs, variables) =>
259260
{
260-
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(assemblyInfoFile, workingDir, variables, fs, log, false);
261-
assemblyInfoFileUpdater.Update();
261+
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fs);
262+
assemblyInfoFileUpdater.Update(variables, false, workingDir, assemblyInfoFile);
262263

263264
fs.Received().WriteAllText(fileName, Arg.Is<string>(s =>
264265
!s.Contains(@"AssemblyVersionAttribute(""1.0.0.0"")") &&
@@ -281,8 +282,8 @@ public void ShouldAddAssemblyVersionIfMissingFromInfoFile(string fileExtension)
281282

282283
VerifyAssemblyInfoFile("", fileName, AssemblyVersioningScheme.MajorMinor, (fs, variables) =>
283284
{
284-
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(assemblyInfoFile, workingDir, variables, fs, log, false);
285-
assemblyInfoFileUpdater.Update();
285+
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fs);
286+
assemblyInfoFileUpdater.Update(variables, false, workingDir, assemblyInfoFile);
286287

287288
fs.Received().WriteAllText(fileName, Arg.Is<string>(s =>
288289
s.Contains(@"AssemblyVersion(""2.3.0.0"")") &&
@@ -302,8 +303,8 @@ public void ShouldReplaceAlreadySubstitutedValues(string fileExtension, string a
302303

303304
VerifyAssemblyInfoFile(assemblyFileContent, fileName, AssemblyVersioningScheme.MajorMinor, (fs, variables) =>
304305
{
305-
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(assemblyInfoFile, workingDir, variables, fs, log, false);
306-
assemblyInfoFileUpdater.Update();
306+
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fs);
307+
assemblyInfoFileUpdater.Update(variables, false, workingDir, assemblyInfoFile);
307308

308309
fs.Received().WriteAllText(fileName, Arg.Is<string>(s =>
309310
s.Contains(@"AssemblyVersion(""2.3.0.0"")") &&
@@ -323,8 +324,8 @@ public void ShouldReplaceAssemblyVersionWhenCreatingAssemblyVersionFileAndEnsure
323324

324325
VerifyAssemblyInfoFile(assemblyFileContent, fileName, verify: (fs, variables) =>
325326
{
326-
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(assemblyInfoFile, workingDir, variables, fs, log, false);
327-
assemblyInfoFileUpdater.Update();
327+
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fs);
328+
assemblyInfoFileUpdater.Update(variables, false, workingDir, assemblyInfoFile);
328329

329330
fs.Received().WriteAllText(fileName, Arg.Is<string>(s =>
330331
s.Contains(@"AssemblyVersion(""2.3.1.0"")") &&
@@ -344,8 +345,8 @@ public void ShouldReplaceAssemblyVersionInRelativePathWithVariables(string fileE
344345

345346
VerifyAssemblyInfoFile(assemblyFileContent, fileName, AssemblyVersioningScheme.MajorMinor, (fs, variables) =>
346347
{
347-
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(assemblyInfoFile, workingDir, variables, fs, log, false);
348-
assemblyInfoFileUpdater.Update();
348+
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fs);
349+
assemblyInfoFileUpdater.Update(variables, false, workingDir, assemblyInfoFile);
349350

350351
fs.Received().WriteAllText(fileName, Arg.Is<string>(s =>
351352
s.Contains(@"AssemblyVersion(""2.3.0.0"")") &&
@@ -365,8 +366,8 @@ public void ShouldReplaceAssemblyVersionInRelativePathWithVariablesAndWhiteSpace
365366

366367
VerifyAssemblyInfoFile(assemblyFileContent, fileName, AssemblyVersioningScheme.MajorMinor, (fs, variables) =>
367368
{
368-
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(assemblyInfoFile, workingDir, variables, fs, log, false);
369-
assemblyInfoFileUpdater.Update();
369+
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fs);
370+
assemblyInfoFileUpdater.Update(variables, false, workingDir, assemblyInfoFile);
370371

371372
fs.Received().WriteAllText(fileName, Arg.Is<string>(s =>
372373
s.Contains(@"AssemblyVersion(""2.3.0.0"")") &&
@@ -388,8 +389,8 @@ public void ShouldAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFile
388389

389390
VerifyAssemblyInfoFile(assemblyFileContent, fileName, verify: (fs, variables) =>
390391
{
391-
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(assemblyInfoFile, workingDir, variables, fs, log, false);
392-
assemblyInfoFileUpdater.Update();
392+
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fs);
393+
assemblyInfoFileUpdater.Update(variables, false, workingDir, assemblyInfoFile);
393394

394395
assemblyFileContent = fs.ReadAllText(fileName);
395396
assemblyFileContent.ShouldMatchApproved(c => c.SubFolder(Path.Combine("Approved", fileExtension)));
@@ -409,8 +410,8 @@ public void Issue1183ShouldAddFSharpAssemblyInformationalVersionBesideOtherAttri
409410

410411
VerifyAssemblyInfoFile(assemblyFileContent, fileName, verify: (fs, variables) =>
411412
{
412-
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(assemblyInfoFile, workingDir, variables, fs, log, false);
413-
assemblyInfoFileUpdater.Update();
413+
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fs);
414+
assemblyInfoFileUpdater.Update(variables, false, workingDir, assemblyInfoFile);
414415

415416
assemblyFileContent = fs.ReadAllText(fileName);
416417
assemblyFileContent.ShouldMatchApproved(c => c.SubFolder(Path.Combine("Approved", fileExtension)));
@@ -430,8 +431,8 @@ public void ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionF
430431

431432
VerifyAssemblyInfoFile(assemblyFileContent, fileName, AssemblyVersioningScheme.None, verify: (fs, variables) =>
432433
{
433-
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(assemblyInfoFile, workingDir, variables, fs, log, false);
434-
assemblyInfoFileUpdater.Update();
434+
using var assemblyInfoFileUpdater = new AssemblyInfoFileUpdater(log, fs);
435+
assemblyInfoFileUpdater.Update(variables, false, workingDir, assemblyInfoFile);
435436

436437
assemblyFileContent = fs.ReadAllText(fileName);
437438
assemblyFileContent.ShouldMatchApproved(c => c.SubFolder(Path.Combine("Approved", fileExtension)));

src/GitVersionCore/Common/IGitVersionTool.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System;
2-
using GitVersion.Extensions.GitVersionInformationResources;
32
using GitVersion.OutputVariables;
43

54
namespace GitVersion

src/GitVersionCore/Core/GitVersionTool.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Linq;
23
using GitVersion.Extensions;
34
using GitVersion.Extensions.GitVersionInformationResources;
45
using GitVersion.Extensions.VersionAssemblyInfoResources;
@@ -14,26 +15,25 @@ namespace GitVersion
1415
public class GitVersionTool : IGitVersionTool
1516
{
1617
private readonly ILog log;
17-
private readonly IFileSystem fileSystem;
1818
private readonly IGitVersionCache gitVersionCache;
1919
private readonly INextVersionCalculator nextVersionCalculator;
2020
private readonly IVariableProvider variableProvider;
2121
private readonly IGitVersionCacheKeyFactory cacheKeyFactory;
2222
private readonly IWixVersionFileUpdater wixVersionFileUpdater;
2323
private readonly IGitVersionInformationGenerator gitVersionInformationGenerator;
24+
private readonly IAssemblyInfoFileUpdater assemblyInfoFileUpdater;
2425

2526
private readonly IOptions<Arguments> options;
2627
private readonly GitVersionContext context;
2728

2829
private readonly IBuildServer buildServer;
2930

30-
public GitVersionTool(ILog log, IFileSystem fileSystem, IGitVersionCache gitVersionCache, INextVersionCalculator nextVersionCalculator, IVariableProvider variableProvider,
31+
public GitVersionTool(ILog log, IGitVersionCache gitVersionCache, INextVersionCalculator nextVersionCalculator, IVariableProvider variableProvider,
3132
IGitVersionCacheKeyFactory cacheKeyFactory, IBuildServerResolver buildServerResolver,
32-
IWixVersionFileUpdater wixVersionFileUpdater, IGitVersionInformationGenerator gitVersionInformationGenerator,
33+
IWixVersionFileUpdater wixVersionFileUpdater, IGitVersionInformationGenerator gitVersionInformationGenerator, IAssemblyInfoFileUpdater assemblyInfoFileUpdater,
3334
IOptions<Arguments> options, IOptions<GitVersionContext> versionContext)
3435
{
3536
this.log = log ?? throw new ArgumentNullException(nameof(log));
36-
this.fileSystem = fileSystem ?? throw new ArgumentNullException(nameof(fileSystem));
3737
this.gitVersionCache = gitVersionCache ?? throw new ArgumentNullException(nameof(gitVersionCache));
3838
this.nextVersionCalculator = nextVersionCalculator ?? throw new ArgumentNullException(nameof(nextVersionCalculator));
3939
this.variableProvider = variableProvider ?? throw new ArgumentNullException(nameof(variableProvider));
@@ -42,6 +42,7 @@ public GitVersionTool(ILog log, IFileSystem fileSystem, IGitVersionCache gitVers
4242

4343
this.wixVersionFileUpdater = wixVersionFileUpdater ?? throw new ArgumentNullException(nameof(wixVersionFileUpdater));
4444
this.gitVersionInformationGenerator = gitVersionInformationGenerator ?? throw new ArgumentNullException(nameof(gitVersionInformationGenerator));
45+
this.assemblyInfoFileUpdater = assemblyInfoFileUpdater ?? throw new ArgumentNullException(nameof(gitVersionInformationGenerator));
4546

4647
context = versionContext.Value;
4748
buildServer = buildServerResolver.Resolve();
@@ -104,9 +105,11 @@ public void UpdateAssemblyInfo(VersionVariables variables)
104105

105106
if (arguments.UpdateAssemblyInfo)
106107
{
107-
using var assemblyInfoUpdater = new AssemblyInfoFileUpdater(arguments.UpdateAssemblyInfoFileName, arguments.TargetPath, variables, fileSystem, log, arguments.EnsureAssemblyInfo);
108-
assemblyInfoUpdater.Update();
109-
assemblyInfoUpdater.CommitChanges();
108+
using (assemblyInfoFileUpdater)
109+
{
110+
assemblyInfoFileUpdater.Update(variables, arguments.EnsureAssemblyInfo, arguments.TargetPath, arguments.UpdateAssemblyInfoFileName.ToArray());
111+
assemblyInfoFileUpdater.CommitChanges();
112+
}
110113
}
111114
}
112115

src/GitVersionCore/Extensions/GitVersionInformationResources/GitVersionInformationGenerator.cs

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,6 @@
55

66
namespace GitVersion.Extensions.GitVersionInformationResources
77
{
8-
public sealed class FileWriteInfo
9-
{
10-
public FileWriteInfo(string workingDirectory, string fileName, string fileExtension)
11-
{
12-
WorkingDirectory = workingDirectory;
13-
FileName = fileName;
14-
FileExtension = fileExtension;
15-
}
16-
17-
public string WorkingDirectory { get; }
18-
public string FileName { get; }
19-
public string FileExtension { get; }
20-
}
21-
22-
238
public interface IGitVersionInformationGenerator
249
{
2510
void Generate(VersionVariables variables, FileWriteInfo writeInfo);

0 commit comments

Comments
 (0)