Skip to content

Commit b65e0bb

Browse files
committed
Work around for forbidden "Roslyn4.0" in test name on Android (dotnet#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 5631710 commit b65e0bb

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
@@ -141,6 +141,10 @@
141141
<ProjectExclusions Include="$(RepoRoot)\src\tests\FunctionalTests\Android\Device_Emulator\AOT\Android.Device_Emulator.Aot.Test.csproj" />
142142
</ItemGroup>
143143

144+
<ItemGroup Condition="'$(TargetOS)' == 'MacCatalyst'">
145+
<ProjectExclusions Include="$(RepoRoot)/src/tests/FunctionalTests/iOS/Simulator/XmlFormatWriterGeneratorAOT/iOS.Simulator.XmlFormatWriterGeneratorAot.Test.csproj" />
146+
</ItemGroup>
147+
144148
<ItemGroup Condition="('$(TargetOS)' == 'iOS' or '$(TargetOS)' == 'iOSSimulator' or '$(TargetOS)' == 'tvOS' or '$(TargetOS)' == 'tvOSSimulator' or '$(TargetOS)' == 'MacCatalyst') and '$(RunDisablediOSTests)' != 'true'">
145149
<!-- PNSE -->
146150
<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)