Skip to content

Commit 73098a1

Browse files
author
Freek van Zee
committed
Match RegEx for AssemblyInfo attributes without quotations in version
This allows for the replacing of AssemblyInfo attributes containing variables instead of literal strings
1 parent c24f0d5 commit 73098a1

File tree

2 files changed

+60
-5
lines changed

2 files changed

+60
-5
lines changed

src/GitVersionExe.Tests/AssemblyInfoFileUpdateTests.cs

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,61 @@ public void ShouldReplaceAssemblyVersionWhenCreatingAssemblyVersionFileAndEnsure
445445
});
446446
}
447447

448+
[TestCase("cs", "[assembly: AssemblyVersion (AssemblyInfo.Version) ]\r\n[assembly: AssemblyInformationalVersion(AssemblyInfo.InformationalVersion)]\r\n[assembly: AssemblyFileVersion(AssemblyInfo.FileVersion)]")]
449+
[TestCase("fs", "[<assembly: AssemblyVersion (AssemblyInfo.Version)>]\r\n[<assembly: AssemblyInformationalVersion(AssemblyInfo.InformationalVersion)>]\r\n[<assembly: AssemblyFileVersion(AssemblyInfo.FileVersion)>]")]
450+
[TestCase("vb", "<Assembly: AssemblyVersion (AssemblyInfo.Version)>\r\n<Assembly: AssemblyInformationalVersion(AssemblyInfo.InformationalVersion)>\r\n<Assembly: AssemblyFileVersion(AssemblyInfo.FileVersion)>")]
451+
public void ShouldReplaceAssemblyVersionInRelativePathWithVariables(string fileExtension, string assemblyFileContent)
452+
{
453+
var workingDir = Path.GetTempPath();
454+
var fileName = Path.Combine(workingDir, "Project", "src", "Properties", "AssemblyInfo." + fileExtension);
455+
456+
VerifyAssemblyInfoFile(assemblyFileContent, fileName, AssemblyVersioningScheme.MajorMinor, (fileSystem, variables) =>
457+
{
458+
var args = new Arguments
459+
{
460+
UpdateAssemblyInfo = true,
461+
UpdateAssemblyInfoFileName = new HashSet<string>
462+
{
463+
Path.Combine("Project", "src", "Properties", "AssemblyInfo." + fileExtension)
464+
}
465+
};
466+
using (new AssemblyInfoFileUpdate(args, workingDir, variables, fileSystem))
467+
{
468+
fileSystem.Received().WriteAllText(fileName, Arg.Is<string>(s =>
469+
s.Contains(@"AssemblyVersion(""2.3.0.0"")") &&
470+
s.Contains(@"AssemblyInformationalVersion(""2.3.1+3.Branch.foo.Sha.hash"")") &&
471+
s.Contains(@"AssemblyFileVersion(""2.3.1.0"")")));
472+
}
473+
});
474+
}
475+
476+
[TestCase("cs", "[assembly: AssemblyVersion ( AssemblyInfo.VersionInfo ) ]\r\n[assembly: AssemblyInformationalVersion\t(\tAssemblyInfo.InformationalVersion\t)]\r\n[assembly: AssemblyFileVersion\r\n(\r\nAssemblyInfo.FileVersion\r\n)]")]
477+
[TestCase("fs", "[<assembly: AssemblyVersion ( AssemblyInfo.VersionInfo )>]\r\n[<assembly: AssemblyInformationalVersion\t(\tAssemblyInfo.InformationalVersion\t)>]\r\n[<assembly: AssemblyFileVersion\r\n(\r\nAssemblyInfo.FileVersion\r\n)>]")]
478+
[TestCase("vb", "<Assembly: AssemblyVersion ( AssemblyInfo.VersionInfo )>\r\n<Assembly: AssemblyInformationalVersion\t(\tAssemblyInfo.InformationalVersion\t)>\r\n<Assembly: AssemblyFileVersion\r\n(\r\nAssemblyInfo.FileVersion\r\n)>")]
479+
public void ShouldReplaceAssemblyVersionInRelativePathWithVariablesAndWhiteSpace(string fileExtension, string assemblyFileContent)
480+
{
481+
var workingDir = Path.GetTempPath();
482+
var fileName = Path.Combine(workingDir, "Project", "src", "Properties", "AssemblyInfo." + fileExtension);
483+
484+
VerifyAssemblyInfoFile(assemblyFileContent, fileName, AssemblyVersioningScheme.MajorMinor, (fileSystem, variables) =>
485+
{
486+
var args = new Arguments
487+
{
488+
UpdateAssemblyInfo = true,
489+
UpdateAssemblyInfoFileName = new HashSet<string>
490+
{
491+
Path.Combine("Project", "src", "Properties", "AssemblyInfo." + fileExtension)
492+
}
493+
};
494+
using (new AssemblyInfoFileUpdate(args, workingDir, variables, fileSystem))
495+
{
496+
fileSystem.Received().WriteAllText(fileName, Arg.Is<string>(s =>
497+
s.Contains(@"AssemblyVersion(""2.3.0.0"")") &&
498+
s.Contains(@"AssemblyInformationalVersion(""2.3.1+3.Branch.foo.Sha.hash"")") &&
499+
s.Contains(@"AssemblyFileVersion(""2.3.1.0"")")));
500+
}
501+
});
502+
}
448503

449504
[TestCase("cs", "[assembly: AssemblyVersion(\"1.0.0.0\")]\r\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]")]
450505
[TestCase("fs", "[<assembly: AssemblyVersion(\"1.0.0.0\")>]\r\n[<assembly: AssemblyFileVersion(\"1.0.0.0\")>]")]

src/GitVersionExe/AssemblyInfoFileUpdate.cs

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

2727
var assemblyVersion = variables.AssemblySemVer;
28-
var assemblyVersionRegex = new Regex(@"AssemblyVersion(Attribute)?\s*\(\s*""[^""]*""\s*\)");
28+
var assemblyVersionRegex = new Regex(@"AssemblyVersion(Attribute)?\s*\(.*\)\s*");
2929
var assemblyVersionString = !string.IsNullOrWhiteSpace(assemblyVersion) ? $"AssemblyVersion(\"{assemblyVersion}\")" : null;
3030
var assemblyInfoVersion = variables.InformationalVersion;
31-
var assemblyInfoVersionRegex = new Regex(@"AssemblyInformationalVersion(Attribute)?\s*\(\s*""[^""]*""\s*\)");
32-
var assemblyInfoVersionString = $"AssemblyInformationalVersion(\"{assemblyInfoVersion}\")";
33-
var assemblyFileVersion = variables.AssemblySemFileVer;
34-
var assemblyFileVersionRegex = new Regex(@"AssemblyFileVersion(Attribute)?\s*\(\s*""[^""]*""\s*\)");
31+
var assemblyInfoVersionRegex = new Regex(@"AssemblyInformationalVersion(Attribute)?\s*\(.*\)\s*");
32+
var assemblyInfoVersionString = $"AssemblyInformationalVersion(\"{assemblyInfoVersion}\")";
33+
var assemblyFileVersion = variables.AssemblySemFileVer;
34+
var assemblyFileVersionRegex = new Regex(@"AssemblyFileVersion(Attribute)?\s*\(.*\)\s*");
3535
var assemblyFileVersionString = !string.IsNullOrWhiteSpace(assemblyFileVersion) ? $"AssemblyFileVersion(\"{assemblyFileVersion}\")" : null;
3636

3737
foreach (var assemblyInfoFile in assemblyInfoFiles)

0 commit comments

Comments
 (0)