Skip to content

Commit da291a9

Browse files
author
Oren Novotny
committed
Add excludeUpdateAssemblyVersion parameter to skip updating the AssemblyVersion attribute
1 parent 9643410 commit da291a9

11 files changed

+106
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[assembly: AssemblyFileVersion("2.3.1.0")]
2+
[assembly: AssemblyInformationalVersion("2.3.1+3.Branch.foo.Sha.hash")]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[assembly: AssemblyFileVersion("2.3.1.0")]
2+
[assembly: AssemblyInformationalVersion("2.3.1+3.Branch.foo.Sha.hash")]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[<assembly: AssemblyFileVersion("2.3.1.0")>]
2+
[<assembly: AssemblyInformationalVersion("2.3.1+3.Branch.foo.Sha.hash")>]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[<assembly: AssemblyFileVersion("2.3.1.0")>]
2+
[<assembly: AssemblyInformationalVersion("2.3.1+3.Branch.foo.Sha.hash")>]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<Assembly: AssemblyFileVersion("2.3.1.0")>
2+
<assembly: AssemblyInformationalVersion("2.3.1+3.Branch.foo.Sha.hash")>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<Assembly: AssemblyFileVersion("2.3.1.0")>
2+
<assembly: AssemblyInformationalVersion("2.3.1+3.Branch.foo.Sha.hash")>

src/GitVersionExe.Tests/ArgumentParserTests.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,15 @@ public void update_assembly_info_true(string command)
187187
arguments.UpdateAssemblyInfo.ShouldBe(true);
188188
}
189189

190+
[TestCase("-excludeUpdateAssemblyVersion true")]
191+
[TestCase("-excludeUpdateAssemblyVersion 1")]
192+
[TestCase("-excludeUpdateAssemblyVersion")]
193+
public void exclude_update_assembly_version_True(string command)
194+
{
195+
var arguments = ArgumentParser.ParseArguments(command);
196+
arguments.ExcludeUpdateAssemblyVersion.ShouldBe(true);
197+
}
198+
190199
[TestCase("-updateAssemblyInfo false")]
191200
[TestCase("-updateAssemblyInfo 0")]
192201
public void update_assembly_info_false(string command)

src/GitVersionExe.Tests/AssemblyInfoFileUpdateTests.cs

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,37 @@ public void ShouldReplaceAssemblyVersion(string fileExtension, string assemblyFi
206206
});
207207
}
208208

209+
210+
[TestCase("cs", "[assembly: AssemblyFileVersion(\"1.0.0.0\")]")]
211+
[TestCase("fs", "[<assembly: AssemblyFileVersion(\"1.0.0.0\")>]")]
212+
[TestCase("vb", "<Assembly: AssemblyFileVersion(\"1.0.0.0\")>")]
213+
[Category("NoMono")]
214+
[Description("Won't run on Mono due to source information not being available for ShouldMatchApproved.")]
215+
public void ShouldNotReplaceAssemblyVersionWhenExcluded(string fileExtension, string assemblyFileContent)
216+
{
217+
var workingDir = Path.GetTempPath();
218+
var fileName = Path.Combine(workingDir, "AssemblyInfo." + fileExtension);
219+
220+
VerifyAssemblyInfoFile(assemblyFileContent, fileName, verify: (fileSystem, variables) =>
221+
{
222+
var args = new Arguments
223+
{
224+
UpdateAssemblyInfo = true,
225+
ExcludeUpdateAssemblyVersion = true,
226+
UpdateAssemblyInfoFileName = new HashSet<string>
227+
{
228+
"AssemblyInfo." + fileExtension
229+
}
230+
};
231+
232+
using (new AssemblyInfoFileUpdate(args, workingDir, variables, fileSystem))
233+
{
234+
assemblyFileContent = fileSystem.ReadAllText(fileName);
235+
assemblyFileContent.ShouldMatchApproved(c => c.SubFolder(Path.Combine("Approved", fileExtension)));
236+
}
237+
});
238+
}
239+
209240
[TestCase("cs", "[assembly: AssemblyVersion(\"1.0.0.0\")]\r\n[assembly: AssemblyInformationalVersion(\"1.0.0.0\")]\r\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]")]
210241
[TestCase("fs", "[<assembly: AssemblyVersion(\"1.0.0.0\")>]\r\n[<assembly: AssemblyInformationalVersion(\"1.0.0.0\")>]\r\n[<assembly: AssemblyFileVersion(\"1.0.0.0\")>]")]
211242
[TestCase("vb", "<Assembly: AssemblyVersion(\"1.0.0.0\")>\r\n<Assembly: AssemblyInformationalVersion(\"1.0.0.0\")>\r\n<Assembly: AssemblyFileVersion(\"1.0.0.0\")>")]
@@ -414,6 +445,37 @@ public void ShouldAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFile
414445
});
415446
}
416447

448+
449+
[TestCase("cs", "[assembly: AssemblyFileVersion(\"1.0.0.0\")]")]
450+
[TestCase("fs", "[<assembly: AssemblyFileVersion(\"1.0.0.0\")>]")]
451+
[TestCase("vb", "<Assembly: AssemblyFileVersion(\"1.0.0.0\")>")]
452+
[Category("NoMono")]
453+
[Description("Won't run on Mono due to source information not being available for ShouldMatchApproved.")]
454+
public void ShouldNotAddAssemblyInformationalVersionWhenUpdatingAssemblyVersionFileWhenExcluded(string fileExtension, string assemblyFileContent)
455+
{
456+
var workingDir = Path.GetTempPath();
457+
var fileName = Path.Combine(workingDir, "AssemblyInfo." + fileExtension);
458+
459+
VerifyAssemblyInfoFile(assemblyFileContent, fileName, verify: (fileSystem, variables) =>
460+
{
461+
var args = new Arguments
462+
{
463+
UpdateAssemblyInfo = true,
464+
ExcludeUpdateAssemblyVersion = true,
465+
UpdateAssemblyInfoFileName = new HashSet<string>
466+
{
467+
"AssemblyInfo." + fileExtension
468+
}
469+
};
470+
471+
using (new AssemblyInfoFileUpdate(args, workingDir, variables, fileSystem))
472+
{
473+
assemblyFileContent = fileSystem.ReadAllText(fileName);
474+
assemblyFileContent.ShouldMatchApproved(c => c.SubFolder(Path.Combine("Approved", fileExtension)));
475+
}
476+
});
477+
}
478+
417479
private static void VerifyAssemblyInfoFile(
418480
string assemblyFileContent,
419481
string fileName,

src/GitVersionExe/ArgumentParser.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,24 @@ public static Arguments ParseArguments(List<string> commandLineArguments)
186186
continue;
187187
}
188188

189+
if (name.IsSwitch("excludeUpdateAssemblyVersion"))
190+
{
191+
if (value.IsTrue())
192+
{
193+
arguments.ExcludeUpdateAssemblyVersion = true;
194+
}
195+
else if (value.IsFalse())
196+
{
197+
arguments.ExcludeUpdateAssemblyVersion = false;
198+
}
199+
else
200+
{
201+
arguments.ExcludeUpdateAssemblyVersion = true;
202+
}
203+
204+
continue;
205+
}
206+
189207
if (name.IsSwitch("assemblyversionformat"))
190208
{
191209
throw new WarningException("assemblyversionformat switch removed, use AssemblyVersioningScheme configuration value instead");

src/GitVersionExe/Arguments.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public Arguments()
3737
public string ExecArgs;
3838

3939
public bool UpdateAssemblyInfo;
40+
public bool ExcludeUpdateAssemblyVersion;
4041
public ISet<string> UpdateAssemblyInfoFileName;
4142
public bool EnsureAssemblyInfo;
4243

0 commit comments

Comments
 (0)