You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
That special case was added in https://go.dev/cl/37960, with the explanation “return a dummy user instead of failing”. However, it did not explain why failing is not the correct behavior in that configuration, as I would expect it to be — it seems like the code was changed to conform to an erroneous test, instead of changing the test to conform to the previously-correct(?) code.
The explanation given was that “The UserHomeDir test succeeds on the builder, but not when run
manually where HOME is set to the host $HOME.”
To me, that seems like a bug in the exec wrapper, not os.UserHomeDir — and, indeed, later (in https://go.dev/cl/167938) the wrapper was changed to avoid propagating $HOME to the device.
A month after the two special cases were added, the signature of UserHomeDir was changed to include an error return value (#28562). It seems to me that the special cases should have been removed at that point, but they weren't, and I think that was an oversight.
I propose that we add a GODEBUG guard for those special cases (mostly for a smoother version-based transition per #56986) and default UserHomeDir and os/user.Current on android and ios to be consistent with linux and darwin respectively as of the next Go version.
The
androidGOOS is generally a special case oflinux, and theiosGOOS is generally a special case ofdarwin.However, the behavior of
os.UserHomeDironandroidandiosdeviates from the standard behavior forlinuxanddarwin.androidwas special-cased to return/in https://go.dev/cl/139717./sdcardin https://go.dev/cl/169540 for os: The result of UserHomeDir and User.HomeDir is inconsistent. #31070, to match an existing special case inos/user.ioswas special-cased to return/in https://go.dev/cl/141798.manually where HOME is set to the host $HOME.”
execwrapper, notos.UserHomeDir— and, indeed, later (in https://go.dev/cl/167938) the wrapper was changed to avoid propagating$HOMEto the device.A month after the two special cases were added, the signature of
UserHomeDirwas changed to include anerrorreturn value (#28562). It seems to me that the special cases should have been removed at that point, but they weren't, and I think that was an oversight.I propose that we add a
GODEBUGguard for those special cases (mostly for a smoother version-based transition per #56986) and defaultUserHomeDirandos/user.Currentonandroidandiosto be consistent withlinuxanddarwinrespectively as of the next Go version.(CC @golang/android @golang/ios)