Imported Upstream version 5.18.0.205

Former-commit-id: 7f59f7e792705db773f1caecdaa823092f4e2927
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2018-11-16 08:20:38 +00:00
parent 5cd5df71cc
commit 8e12397d70
28486 changed files with 3867013 additions and 66 deletions

View File

@@ -690,29 +690,19 @@ namespace System.Diagnostics
var procInfo = new ProcInfo ();
if (startInfo.HaveEnvVars) {
List<string> envVariables = null;
StringBuilder sb = null;
List<string> envVariables = new List<string> ();
foreach (DictionaryEntry de in startInfo.EnvironmentVariables) {
if (de.Value == null)
continue;
if (envVariables == null)
envVariables = new List<string> ();
if (sb == null)
sb = new StringBuilder ();
else
sb.Clear ();
sb.Append ((string) de.Key);
sb.Append ('=');
sb.Append ((string) de.Value);
envVariables.Add (sb.ToString ());
envVariables.Add (string.Concat (
(string) de.Key,
"=",
(string) de.Value));
}
procInfo.envVariables = envVariables?.ToArray ();
procInfo.envVariables = envVariables.ToArray ();
}
MonoIOError error;

View File

@@ -732,6 +732,53 @@ namespace MonoTests.System.Diagnostics
public int bytesRead = -1;
[Test]
[NUnit.Framework.Category ("MobileNotWorking")]
public void TestEnvironmentVariablesClearedDoNotInherit ()
{
if (!RunningOnUnix)
Assert.Ignore ("env not available on Windows");
var stdout = new StringBuilder ();
Process p = new Process ();
p.StartInfo = new ProcessStartInfo ("/usr/bin/env");
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.OutputDataReceived += (s, e) => { if (e.Data != null) stdout.AppendLine (e.Data); };
p.StartInfo.Environment.Clear (); // i.e. don't inherit
p.StartInfo.Environment["HELLO"] = "123";
p.Start ();
p.BeginOutputReadLine ();
p.WaitForExit ();
Assert.AreEqual ("HELLO=123\n", stdout.ToString ());
}
[Test]
[NUnit.Framework.Category ("MobileNotWorking")]
public void TestEnvironmentVariablesClearedDoNotInheritEmpty ()
{
if (!RunningOnUnix)
Assert.Ignore ("env not available on Windows");
var stdout = new StringBuilder ();
Process p = new Process ();
p.StartInfo = new ProcessStartInfo ("/usr/bin/env");
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.OutputDataReceived += (s, e) => { if (e.Data != null) stdout.AppendLine (e.Data); };
p.StartInfo.Environment.Clear (); // i.e. don't inherit
p.Start ();
p.BeginOutputReadLine ();
p.WaitForExit ();
Assert.AreEqual ("", stdout.ToString ());
}
[Test]
[NUnit.Framework.Category ("MobileNotWorking")]
// This was for bug #459450