Skip to content

Commit 399bcce

Browse files
committed
Issue: #871 Fixing at least some occurences of error CS0579: Duplicate 'AssemblyVersion' attribute when using shared assembly info by making regex tolerate whitespacing.
Added unit test for whitespacing
1 parent d2003e5 commit 399bcce

File tree

2 files changed

+33
-3
lines changed

2 files changed

+33
-3
lines changed

src/GitVersionExe.Tests/AssemblyInfoFileUpdateTests.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,36 @@ public void ShouldReplaceAssemblyVersionInRelativePath(string fileExtension, str
236236
});
237237
}
238238

239+
[TestCase("cs", "[assembly: AssemblyVersion ( \"1.0.0.0\") ]\r\n[assembly: AssemblyInformationalVersion\t(\t\"1.0.0.0\"\t)]\r\n[assembly: AssemblyFileVersion\r\n(\r\n\"1.0.0.0\"\r\n)]")]
240+
[TestCase("fs", "[<assembly: AssemblyVersion ( \"1.0.0.0\" )>]\r\n[<assembly: AssemblyInformationalVersion\t(\t\"1.0.0.0\"\t)>]\r\n[<assembly: AssemblyFileVersion\r\n(\r\n\"1.0.0.0\"\r\n)>]")]
241+
[TestCase("vb", "<Assembly: AssemblyVersion ( \"1.0.0.0\" )>\r\n<Assembly: AssemblyInformationalVersion\t(\t\"1.0.0.0\"\t)>\r\n<Assembly: AssemblyFileVersion\r\n(\r\n\"1.0.0.0\"\r\n)>")]
242+
[Category("NoMono")]
243+
[Description("Won't run on Mono due to source information not being available for ShouldMatchApproved.")]
244+
public void ShouldReplaceAssemblyVersionInRelativePathWithWhiteSpace(string fileExtension, string assemblyFileContent)
245+
{
246+
var workingDir = Path.GetTempPath();
247+
var fileName = Path.Combine(workingDir, "Project", "src", "Properties", "AssemblyInfo." + fileExtension);
248+
249+
VerifyAssemblyInfoFile(assemblyFileContent, fileName, AssemblyVersioningScheme.MajorMinor, (fileSystem, variables) =>
250+
{
251+
var args = new Arguments
252+
{
253+
UpdateAssemblyInfo = true,
254+
UpdateAssemblyInfoFileName = new HashSet<string>
255+
{
256+
Path.Combine("Project", "src", "Properties", "AssemblyInfo." + fileExtension)
257+
}
258+
};
259+
using (new AssemblyInfoFileUpdate(args, workingDir, variables, fileSystem))
260+
{
261+
fileSystem.Received().WriteAllText(fileName, Arg.Is<string>(s =>
262+
s.Contains(@"AssemblyVersion(""2.3.0.0"")") &&
263+
s.Contains(@"AssemblyInformationalVersion(""2.3.1+3.Branch.foo.Sha.hash"")") &&
264+
s.Contains(@"AssemblyFileVersion(""2.3.1.0"")")));
265+
}
266+
});
267+
}
268+
239269
[TestCase("cs", "[assembly: AssemblyVersion(\"1.0.0.*\")]\r\n[assembly: AssemblyInformationalVersion(\"1.0.0.*\")]\r\n[assembly: AssemblyFileVersion(\"1.0.0.*\")]")]
240270
[TestCase("fs", "[<assembly: AssemblyVersion(\"1.0.0.*\")>]\r\n[<assembly: AssemblyInformationalVersion(\"1.0.0.*\")>]\r\n[<assembly: AssemblyFileVersion(\"1.0.0.*\")>]")]
241271
[TestCase("vb", "<Assembly: AssemblyVersion(\"1.0.0.*\")>\r\n<Assembly: AssemblyInformationalVersion(\"1.0.0.*\")>\r\n<Assembly: AssemblyFileVersion(\"1.0.0.*\")>")]

src/GitVersionExe/AssemblyInfoFileUpdate.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ public AssemblyInfoFileUpdate(Arguments args, string workingDirectory, VersionVa
2525
Logger.WriteInfo(string.Format("Found {0} files", assemblyInfoFiles.Count));
2626

2727
var assemblyVersion = variables.AssemblySemVer;
28-
var assemblyVersionRegex = new Regex(@"AssemblyVersion\(""[^""]*""\)");
28+
var assemblyVersionRegex = new Regex(@"AssemblyVersion\s*\(\s*""[^""]*""\s*\)");
2929
var assemblyVersionString = string.Format("AssemblyVersion(\"{0}\")", assemblyVersion);
3030
var assemblyInfoVersion = variables.InformationalVersion;
31-
var assemblyInfoVersionRegex = new Regex(@"AssemblyInformationalVersion\(""[^""]*""\)");
31+
var assemblyInfoVersionRegex = new Regex(@"AssemblyInformationalVersion\s*\(\s*""[^""]*""\s*\)");
3232
var assemblyInfoVersionString = string.Format("AssemblyInformationalVersion(\"{0}\")", assemblyInfoVersion);
3333
var assemblyFileVersion = variables.MajorMinorPatch + ".0";
34-
var assemblyFileVersionRegex = new Regex(@"AssemblyFileVersion\(""[^""]*""\)");
34+
var assemblyFileVersionRegex = new Regex(@"AssemblyFileVersion\s*\(\s*""[^""]*""\s*\)");
3535
var assemblyFileVersionString = string.Format("AssemblyFileVersion(\"{0}\")", assemblyFileVersion);
3636

3737
foreach (var assemblyInfoFile in assemblyInfoFiles)

0 commit comments

Comments
 (0)