Skip to content

Commit 9a4a5a5

Browse files
committed
Improve $PROFILE variable and profile loading test
1 parent 10cff26 commit 9a4a5a5

File tree

2 files changed

+31
-30
lines changed

2 files changed

+31
-30
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1-
function Assert-ProfileLoaded {
1+
if (-not $PROFILE) {
2+
throw
3+
}
4+
5+
function Assert-ProfileLoaded {
26
return $true
3-
}
7+
}

test/PowerShellEditorServices.Test/Session/PsesInternalHostTests.cs

+25-28
Original file line numberDiff line numberDiff line change
@@ -110,37 +110,34 @@ public async Task CanCancelExecutionWithMethod()
110110
[Fact]
111111
public async Task CanResolveAndLoadProfilesForHostId()
112112
{
113-
string[] expectedProfilePaths =
114-
new string[]
115-
{
116-
PsesHostFactory.TestProfilePaths.AllUsersAllHosts,
117-
PsesHostFactory.TestProfilePaths.AllUsersCurrentHost,
118-
PsesHostFactory.TestProfilePaths.CurrentUserAllHosts,
119-
PsesHostFactory.TestProfilePaths.CurrentUserCurrentHost
120-
};
121-
122113
// Load the profiles for the test host name
123114
await psesHost.LoadHostProfilesAsync(CancellationToken.None).ConfigureAwait(true);
124115

125-
// Ensure that all the paths are set in the correct variables
126-
// and that the current user's host profile got loaded
127-
PSCommand psCommand = new PSCommand().AddScript(
128-
"\"$($profile.AllUsersAllHosts) " +
129-
"$($profile.AllUsersCurrentHost) " +
130-
"$($profile.CurrentUserAllHosts) " +
131-
"$($profile.CurrentUserCurrentHost) " +
132-
"$(Assert-ProfileLoaded)\"");
133-
134-
IReadOnlyList<string> result = await psesHost.ExecutePSCommandAsync<string>(psCommand, CancellationToken.None).ConfigureAwait(true);
135-
136-
string expectedString =
137-
string.Format(
138-
"{0} True",
139-
string.Join(
140-
" ",
141-
expectedProfilePaths));
142-
143-
Assert.Equal(expectedString, result[0], ignoreCase: true);
116+
// Ensure that the $PROFILE variable is a string with the value of CurrentUserCurrentHost.
117+
IReadOnlyList<string> profileVariable = await psesHost.ExecutePSCommandAsync<string>(
118+
new PSCommand().AddScript("$PROFILE"),
119+
CancellationToken.None).ConfigureAwait(true);
120+
121+
Assert.Collection(profileVariable,
122+
(p) => Assert.Equal(PsesHostFactory.TestProfilePaths.CurrentUserCurrentHost, p));
123+
124+
// Ensure that all the profile paths are set in the correct note properties.
125+
IReadOnlyList<string> profileProperties = await psesHost.ExecutePSCommandAsync<string>(
126+
new PSCommand().AddScript("$PROFILE | Get-Member -Type NoteProperty"),
127+
CancellationToken.None).ConfigureAwait(true);
128+
129+
Assert.Collection(profileProperties,
130+
(p) => Assert.Equal($"string AllUsersAllHosts={PsesHostFactory.TestProfilePaths.AllUsersAllHosts}", p, ignoreCase: true),
131+
(p) => Assert.Equal($"string AllUsersCurrentHost={PsesHostFactory.TestProfilePaths.AllUsersCurrentHost}", p, ignoreCase: true),
132+
(p) => Assert.Equal($"string CurrentUserAllHosts={PsesHostFactory.TestProfilePaths.CurrentUserAllHosts}", p, ignoreCase: true),
133+
(p) => Assert.Equal($"string CurrentUserCurrentHost={PsesHostFactory.TestProfilePaths.CurrentUserCurrentHost}", p, ignoreCase: true));
134+
135+
// Ensure that the profile was loaded. The profile also checks that $PROFILE was defined.
136+
IReadOnlyList<bool> profileLoaded = await psesHost.ExecutePSCommandAsync<bool>(
137+
new PSCommand().AddScript("Assert-ProfileLoaded"),
138+
CancellationToken.None).ConfigureAwait(true);
139+
140+
Assert.Collection(profileLoaded, (p) => Assert.True(p));
144141
}
145142

146143
[Fact]

0 commit comments

Comments
 (0)