Skip to content

Commit c91ad80

Browse files
author
Mirroring
committed
Merge commit '3c28e09004a7cb2ee3bf9edc217b339c6317fd78'
2 parents a4a71dd + 3c28e09 commit c91ad80

File tree

2 files changed

+35
-4
lines changed

2 files changed

+35
-4
lines changed

test/Microsoft.NET.Publish.Tests/GivenThatWeWantToPublishAnAotApp.cs

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,25 @@ public void NativeAot_hw_runs_with_no_warnings_when_PublishAot_is_enabled(string
4040
{
4141
testProject.AdditionalProperties["StripSymbols"] = "true";
4242
}
43-
var testAsset = _testAssetsManager.CreateTestProject(testProject);
43+
var testAsset = _testAssetsManager.CreateTestProject(testProject, identifier: targetFramework);
44+
45+
string[] ignoredPatterns = null;
46+
47+
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
48+
{
49+
ignoredPatterns = new string[]
50+
{
51+
// Both these exclusions can be removed once the min tested version is .NET 10 and the min supported
52+
// XCode version is XCode 16.
53+
54+
// -ld_classic option is required to workaround bugs in XCode 15 and .NET 9 and older runtimes.
55+
// See https://github.com/dotnet/runtime/issues/97745 for details.
56+
"ld: warning: -ld_classic is deprecated and will be removed in a future release",
57+
// These warnings show up when dotnet/runtime compiled using Apple clang 15+ is used
58+
// with classic linker (either Apple clang 14 or clang 15+ with -ld_classic).
59+
"ld: warning: __LD,__compact_unwind entries for",
60+
};
61+
}
4462

4563
var publishCommand = new PublishCommand(Log, Path.Combine(testAsset.TestRoot, testProject.Name));
4664
publishCommand
@@ -49,7 +67,7 @@ public void NativeAot_hw_runs_with_no_warnings_when_PublishAot_is_enabled(string
4967
.And.NotHaveStdOutContaining("IL2026")
5068
.And.NotHaveStdErrContaining("NETSDK1179")
5169
.And.NotHaveStdErrContaining("warning")
52-
.And.NotHaveStdOutContaining("warning");
70+
.And.NotHaveStdOutContaining("warning", ignoredPatterns);
5371

5472
var buildProperties = testProject.GetPropertyValues(testAsset.TestRoot, targetFramework);
5573
var rid = buildProperties["NETCoreSdkPortableRuntimeIdentifier"];

test/Microsoft.NET.TestFramework/Assertions/CommandResultAssertions.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,23 @@ public AndConstraint<CommandResultAssertions> HaveStdOutContaining(Func<string,
6666
return new AndConstraint<CommandResultAssertions>(this);
6767
}
6868

69-
public AndConstraint<CommandResultAssertions> NotHaveStdOutContaining(string pattern)
69+
public AndConstraint<CommandResultAssertions> NotHaveStdOutContaining(string pattern, string[] ignoredPatterns = null)
7070
{
71-
Execute.Assertion.ForCondition(!_commandResult.StdOut.Contains(pattern))
71+
string filteredStdOut = _commandResult.StdOut;
72+
if (ignoredPatterns != null && ignoredPatterns.Length > 0)
73+
{
74+
foreach (var ignoredPattern in ignoredPatterns)
75+
{
76+
filteredStdOut = string.Join(Environment.NewLine, filteredStdOut
77+
.Split(new[] { Environment.NewLine }, StringSplitOptions.None)
78+
.Where(line => !line.Contains(ignoredPattern)));
79+
}
80+
}
81+
82+
// Perform the assertion on the filtered output
83+
Execute.Assertion.ForCondition(!filteredStdOut.Contains(pattern))
7284
.FailWith(AppendDiagnosticsTo($"The command output contained a result it should not have contained: {pattern}{Environment.NewLine}"));
85+
7386
return new AndConstraint<CommandResultAssertions>(this);
7487
}
7588

0 commit comments

Comments
 (0)