Skip to content

Commit 10b2f7c

Browse files
authored
Work around for forbidden "Roslyn4.0" in test name on Android (#59263)
Android apk names must be valid Java class names, and It is forbidden in Java for a class name component to have a leading numeric digit. So whilst "net.dot.foo3_1" is legal, "net.dot.foo3.1" is illegal. Use a Regex to detect and rewrite all cases of this in AndroidAppBuilder
1 parent 4090289 commit 10b2f7c

2 files changed

Lines changed: 9 additions & 0 deletions

File tree

src/libraries/tests.proj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,10 @@
148148
<ProjectExclusions Include="$(RepoRoot)\src\tests\FunctionalTests\$(TargetOS)\Device\**\*.Test.csproj" />
149149
</ItemGroup>
150150

151+
<ItemGroup Condition="'$(TargetOS)' == 'MacCatalyst'">
152+
<ProjectExclusions Include="$(RepoRoot)/src/tests/FunctionalTests/iOS/Simulator/XmlFormatWriterGeneratorAOT/iOS.Simulator.XmlFormatWriterGeneratorAot.Test.csproj" />
153+
</ItemGroup>
154+
151155
<ItemGroup Condition="('$(TargetOS)' == 'iOS' or '$(TargetOS)' == 'iOSSimulator' or '$(TargetOS)' == 'tvOS' or '$(TargetOS)' == 'tvOSSimulator' or '$(TargetOS)' == 'MacCatalyst') and '$(RunDisablediOSTests)' != 'true'">
152156
<!-- PNSE -->
153157
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Net.Quic/tests/FunctionalTests/System.Net.Quic.Functional.Tests.csproj" />

src/tasks/AndroidAppBuilder/ApkBuilder.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System.IO;
77
using System.Linq;
88
using System.Text;
9+
using System.Text.RegularExpressions;
910
using Microsoft.Build.Framework;
1011
using Microsoft.Build.Utilities;
1112

@@ -358,6 +359,10 @@ public ApkBuilder(TaskLoggingHelper logger)
358359
string javaActivityPath = Path.Combine(javaSrcFolder, "MainActivity.java");
359360
string monoRunnerPath = Path.Combine(javaSrcFolder, "MonoRunner.java");
360361

362+
Regex checkNumerics = new Regex(@"\.(\d)");
363+
if (!string.IsNullOrEmpty(ProjectName) && checkNumerics.IsMatch(ProjectName))
364+
ProjectName = checkNumerics.Replace(ProjectName, @"_$1");
365+
361366
string packageId = $"net.dot.{ProjectName}";
362367

363368
File.WriteAllText(javaActivityPath,

0 commit comments

Comments
 (0)