-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[libraries] Update System.Runtime.Extensions tests for iOS,MacCatalyst,tvOS #57210
[libraries] Update System.Runtime.Extensions tests for iOS,MacCatalyst,tvOS #57210
Conversation
I couldn't figure out the best area label to add to this PR. If you have write-permissions please help me learn by adding exactly one area label. |
src/libraries/System.Runtime.Extensions/tests/System/Environment.Exit.cs
Outdated
Show resolved
Hide resolved
@@ -333,7 +332,8 @@ public void FailFast_ExceptionStackTrace_InnerException() | |||
|
|||
[Fact] | |||
[PlatformSpecific(TestPlatforms.AnyUnix | TestPlatforms.Browser)] // Tests OS-specific environment | |||
[ActiveIssue("https://github.com/dotnet/runtime/issues/36896", TestPlatforms.iOS | TestPlatforms.tvOS | TestPlatforms.MacCatalyst)] | |||
[SkipOnPlatform(TestPlatforms.iOS | TestPlatforms.tvOS, "Not valid on iOS or tvOS")] | |||
[ActiveIssue("https://github.com/dotnet/runtime/issues/36896", TestPlatforms.MacCatalyst)] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you expect that this test can be fixed to be valid on Catalyst? Catalyst is generally like iOS.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah Catalyst has the same behavior as iOS here. We can actually enable parts of the test since we just use a different value for SpecialFolder.Personal
/ SpecialFolder.MyDocuments
. Will push to the PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking more closely, it looks like Environment.GetEnvironmentVariable("Home")
is null
or empty on iOSSimulator and tvOSSimulator. However, on MacCatalyst, it seems to be /Users/mdhwang
and the tests expected paths are
Environment.GetFolderPath(Environment.SpecialFolder.Personal)
evaluates to /Users/mdhwang/Documents
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
evaluates to /Users/mdhwang/Documents
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
evaluates to /Users/mdhwang
However, it seems like a previous tvOSSimulator's failure message was
Assert.Equal() Failure\n ↓ (pos 161)\nExpected: ···F1-ADDB-B49F66D98B32\nActual: ···F1-ADDB-B49F66D98B32/Documents\n ↑ (pos 161)
which suggests that sometimes the Home
environment variable is not empty or null
? possibly flakey?
GetFolderPath_Unix_PersonalIsHomeAndUserProfile is not valid for iOS, tvOS
Could you elaborate on why its not valid for iOS/tvOS?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hm I tried with preview7 on iOSSimulator and Environment.GetEnvironmentVariable("HOME")
returned a path there. did you test with Home
or HOME
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you elaborate on why its not valid for iOS/tvOS?
On iOS:
- Personal/MyDocuments (same enum value) returns value of
NSSearchPathDirectory.NSDocumentDirectory
UserProfile
return theHOME
environment variable. I remember testing it but I don't remember the value anymore, my previous comment would imply that it wasnull
On tvOS:
NSSearchPathDirectory.NSDocumentDirectory
is read-only so Personal/MyDocuments intentionally does NOT return it. At least that was the situation on old Mono. Apparently the code was not ported for .NET 6 and it's still tracked as an issue - Change Environment.GetFolderPath to be compatible with tvOS #34007
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
did you test with
Home
orHOME
?
I used HOME
and I temporarily modified the test for these OSes and it passes on MacCatalyst after this modification.
[Fact]
[PlatformSpecific(TestPlatforms.AnyUnix | TestPlatforms.Browser)] // Tests OS-specific environment
public void GetFolderPath_Unix_PersonalIsHomeAndUserProfile()
{
Console.WriteLine("Mitchell Hwang");
Console.WriteLine(Environment.GetEnvironmentVariable("HOME"));
Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.Personal));
Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));
Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile));
Assert.Equal(Environment.GetEnvironmentVariable("HOME")+"/Documents", Environment.GetFolderPath(Environment.SpecialFolder.Personal));
Assert.Equal(Environment.GetEnvironmentVariable("HOME")+"/Documents", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));
Assert.Equal(Environment.GetEnvironmentVariable("HOME"), Environment.GetFolderPath(Environment.SpecialFolder.UserProfile));
}
The most recent run locally on preview 6 was
Assert.Equal() Failure\nExpected: (null)\nActual: /Users/mdhwang/Library/Developer/CoreSimulator/Devices/71D00C72-A1BD-4EF7-87EA-B22842EC1650/data/Containers/Data/Application/E3609B50-9E46-4864-A413-A1C506C5295D/Documents
Both On MacCatalyst, the values are not empty or null. |
Fixes #34030
Fixes #36896
Rerunning the test suite after removing
SkipOnPlatform
andActiveIssue
in #36896 before the latest edit, it was found that the only changes are thatTestingCreateInstanceFromObjectHandle
passes on iOS and tvOS, and thatTestingCreateInstanceFromObjectHandleFullSignature
no longer fails. The other tests still fail and the activeIssues/SkipOnPlatform stand.