Skip to content

Commit 3117804

Browse files
author
Yannis Guedel
committed
Fixed assemblyinfo patching with stars
When an AssemblyInfo contained a version like 1.0.0.* it wasn't recognized by GitVersion. Only 1.0.0.0 or 1.0.0* worked.
1 parent fa4b32d commit 3117804

File tree

2 files changed

+84
-3
lines changed

2 files changed

+84
-3
lines changed

GitVersionExe.Tests/AssemblyInfoFileUpdateTests.cs

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
namespace GitVersionExe.Tests
22
{
3+
using System;
34
using System.Collections.Generic;
45
using System.IO;
56
using GitVersion;
@@ -9,6 +10,10 @@
910
[TestFixture]
1011
public class AssemblyInfoFileUpdateTests
1112
{
13+
readonly string assemblyInfoFile = @"AssemblyVersion(""1.0.0.0"");
14+
AssemblyInformationalVersion(""1.0.0.0"");
15+
AssemblyFileVersion(""1.0.0.0"");";
16+
1217
[Test]
1318
public void ShouldStartSearchFromWorkingDirectory()
1419
{
@@ -19,5 +24,81 @@ public void ShouldStartSearchFromWorkingDirectory()
1924
fileSystem.Received().DirectoryGetFiles(Arg.Is(workingDir), Arg.Any<string>(), Arg.Any<SearchOption>());
2025
}
2126
}
27+
28+
[Test]
29+
public void ShouldReplaceAssemblyVersion()
30+
{
31+
var fileSystem = Substitute.For<IFileSystem>();
32+
var version = new SemanticVersion()
33+
{
34+
BuildMetaData = new SemanticVersionBuildMetaData(3, "foo", "hash", DateTimeOffset.Now),
35+
Major = 2,
36+
Minor = 3,
37+
Patch = 1
38+
};
39+
40+
const string workingDir = "C:\\Testing";
41+
const string assemblyInfoFile = @"AssemblyVersion(""1.0.0.0"");
42+
AssemblyInformationalVersion(""1.0.0.0"");
43+
AssemblyFileVersion(""1.0.0.0"");";
44+
45+
fileSystem.Exists("C:\\Testing\\AssemblyInfo.cs").Returns(true);
46+
fileSystem.ReadAllText("C:\\Testing\\AssemblyInfo.cs").Returns(assemblyInfoFile);
47+
var config = new Config()
48+
{
49+
AssemblyVersioningScheme = AssemblyVersioningScheme.MajorMinorPatch
50+
};
51+
var variable = VariableProvider.GetVariablesFor(version, config);
52+
var args = new Arguments
53+
{
54+
UpdateAssemblyInfo = true,
55+
UpdateAssemblyInfoFileName = "AssemblyInfo.cs"
56+
};
57+
using (new AssemblyInfoFileUpdate(args, workingDir, variable, fileSystem))
58+
{
59+
var expected = @"AssemblyVersion(""2.3.0.0"");
60+
AssemblyInformationalVersion(""2.3.1+3.Branch.foo.Sha.hash"");
61+
AssemblyFileVersion(""2.3.1.0"");";
62+
fileSystem.Received().WriteAllText("C:\\Testing\\AssemblyInfo.cs", expected);
63+
}
64+
}
65+
66+
[Test]
67+
public void ShouldReplaceAssemblyVersionWithStar()
68+
{
69+
var fileSystem = Substitute.For<IFileSystem>();
70+
var version = new SemanticVersion()
71+
{
72+
BuildMetaData = new SemanticVersionBuildMetaData(3, "foo", "hash", DateTimeOffset.Now),
73+
Major = 2,
74+
Minor = 3,
75+
Patch = 1
76+
};
77+
78+
const string workingDir = "C:\\Testing";
79+
const string assemblyInfoFile = @"AssemblyVersion(""1.0.0.*"");
80+
AssemblyInformationalVersion(""1.0.0.*"");
81+
AssemblyFileVersion(""1.0.0.*"");";
82+
83+
fileSystem.Exists("C:\\Testing\\AssemblyInfo.cs").Returns(true);
84+
fileSystem.ReadAllText("C:\\Testing\\AssemblyInfo.cs").Returns(assemblyInfoFile);
85+
var config = new Config()
86+
{
87+
AssemblyVersioningScheme = AssemblyVersioningScheme.MajorMinorPatch
88+
};
89+
var variable = VariableProvider.GetVariablesFor(version, config);
90+
var args = new Arguments
91+
{
92+
UpdateAssemblyInfo = true,
93+
UpdateAssemblyInfoFileName = "AssemblyInfo.cs"
94+
};
95+
using (new AssemblyInfoFileUpdate(args, workingDir, variable, fileSystem))
96+
{
97+
var expected = @"AssemblyVersion(""2.3.0.0"");
98+
AssemblyInformationalVersion(""2.3.1+3.Branch.foo.Sha.hash"");
99+
AssemblyFileVersion(""2.3.1.0"");";
100+
fileSystem.Received().WriteAllText("C:\\Testing\\AssemblyInfo.cs", expected);
101+
}
102+
}
22103
}
23104
}

GitVersionExe/AssemblyInfoFileUpdate.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ public AssemblyInfoFileUpdate(Arguments args, string workingDirectory, Dictionar
3535
var assemblyInfoVersion = variables[VariableProvider.InformationalVersion];
3636
var assemblyFileVersion = variables[VariableProvider.AssemblySemVer];
3737
var fileContents = fileSystem.ReadAllText(assemblyInfoFile)
38-
.RegexReplace(@"AssemblyVersion\(""\d+.\d+.\d+(.\d+|\*)?""\)", string.Format("AssemblyVersion(\"{0}\")", assemblyVersion))
39-
.RegexReplace(@"AssemblyInformationalVersion\(""\d+.\d+.\d+(.\d+|\*)?""\)", string.Format("AssemblyInformationalVersion(\"{0}\")", assemblyInfoVersion))
40-
.RegexReplace(@"AssemblyFileVersion\(""\d+.\d+.\d+(.\d+|\*)?""\)", string.Format("AssemblyFileVersion(\"{0}\")", assemblyFileVersion));
38+
.RegexReplace(@"AssemblyVersion\(""\d+.\d+.\d+(.(\d+|\*))?""\)", string.Format("AssemblyVersion(\"{0}\")", assemblyVersion))
39+
.RegexReplace(@"AssemblyInformationalVersion\(""\d+.\d+.\d+(.(\d+|\*))?""\)", string.Format("AssemblyInformationalVersion(\"{0}\")", assemblyInfoVersion))
40+
.RegexReplace(@"AssemblyFileVersion\(""\d+.\d+.\d+(.(\d+|\*))?""\)", string.Format("AssemblyFileVersion(\"{0}\")", assemblyFileVersion));
4141

4242
fileSystem.WriteAllText(assemblyInfoFile, fileContents);
4343
}

0 commit comments

Comments
 (0)