Skip to content

Commit 02e90ba

Browse files
committed
Include all environment variables in assertion failure
1 parent e1f8219 commit 02e90ba

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

src/ChildProcess.Test/ProcessManagement/ChildProcessTest_EnvironmentVariables.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Linq;
66
using Asmichi.Utilities;
77
using Xunit;
8+
using Xunit.Sdk;
89
using static Asmichi.ProcessManagement.ChildProcessExecutionTestUtil;
910
using KV = System.Collections.Generic.KeyValuePair<string, string>;
1011

@@ -77,7 +78,18 @@ private static void AssertEnvironmentVariables(
7778
bool inheritFromContext)
7879
{
7980
var actual = ExecuteForEnvironmentVariables(context, extraEnvVars, inheritFromContext);
80-
Assert.Equal(expected.OrderBy(x => x, EnvironmentVariablePairNameComparer.DefaultThenOrdinal), actual);
81+
var orderedExpected = expected.OrderBy(x => x, EnvironmentVariablePairNameComparer.DefaultThenOrdinal).ToArray();
82+
if (!orderedExpected.SequenceEqual(actual))
83+
{
84+
// To diagnose environment-dependent issues, print all environment variables.
85+
var message =
86+
$"Expected: {ToString(orderedExpected)}\n" +
87+
$"Actual: {ToString(actual)}";
88+
89+
throw new XunitException(message);
90+
}
91+
92+
static string ToString(KV[] kvs) => "[" + string.Join(", ", kvs.Select(x => $"{x.Key}={x.Value}")) + "]";
8193
}
8294

8395
private static KV[] ExecuteForEnvironmentVariables(

0 commit comments

Comments
 (0)