diff --git a/localization/strings/en-US/Resources.resw b/localization/strings/en-US/Resources.resw
index 275b9fea5..1b532f6be 100644
--- a/localization/strings/en-US/Resources.resw
+++ b/localization/strings/en-US/Resources.resw
@@ -2461,6 +2461,12 @@ For privacy information about this product please visit https://aka.ms/privacy.<
Manage registry credentials, including logging in and out of container registries.
+
+ System-level commands
+
+
+ System-level management commands.
+
Tag an image.
diff --git a/src/windows/wslc/commands/RootCommand.cpp b/src/windows/wslc/commands/RootCommand.cpp
index 5b28bb3f4..17e6848c5 100644
--- a/src/windows/wslc/commands/RootCommand.cpp
+++ b/src/windows/wslc/commands/RootCommand.cpp
@@ -17,8 +17,8 @@ Abstract:
#include "ContainerCommand.h"
#include "ImageCommand.h"
#include "RegistryCommand.h"
-#include "SessionCommand.h"
#include "SettingsCommand.h"
+#include "SystemCommand.h"
#include "InspectCommand.h"
#include "VersionCommand.h"
#include "VolumeCommand.h"
@@ -33,8 +33,8 @@ std::vector> RootCommand::GetCommands() const
commands.push_back(std::make_unique(FullName()));
commands.push_back(std::make_unique(FullName()));
commands.push_back(std::make_unique(FullName()));
- commands.push_back(std::make_unique(FullName()));
commands.push_back(std::make_unique(FullName()));
+ commands.push_back(std::make_unique(FullName()));
commands.push_back(std::make_unique(FullName()));
commands.push_back(std::make_unique(FullName()));
commands.push_back(std::make_unique(FullName()));
diff --git a/src/windows/wslc/commands/SystemCommand.cpp b/src/windows/wslc/commands/SystemCommand.cpp
new file mode 100644
index 000000000..b073573bd
--- /dev/null
+++ b/src/windows/wslc/commands/SystemCommand.cpp
@@ -0,0 +1,48 @@
+/*++
+
+Copyright (c) Microsoft. All rights reserved.
+
+Module Name:
+
+ SystemCommand.cpp
+
+Abstract:
+
+ Definition of System command tree.
+
+--*/
+#include "CLIExecutionContext.h"
+#include "SystemCommand.h"
+#include "SessionCommand.h"
+
+using namespace wsl::windows::wslc::execution;
+using namespace wsl::shared;
+
+namespace wsl::windows::wslc {
+std::vector> SystemCommand::GetCommands() const
+{
+ std::vector> commands;
+ commands.push_back(std::make_unique(FullName()));
+ return commands;
+}
+
+std::vector SystemCommand::GetArguments() const
+{
+ return {};
+}
+
+std::wstring SystemCommand::ShortDescription() const
+{
+ return Localization::WSLCCLI_SystemCommandDesc();
+}
+
+std::wstring SystemCommand::LongDescription() const
+{
+ return Localization::WSLCCLI_SystemCommandLongDesc();
+}
+
+void SystemCommand::ExecuteInternal(CLIExecutionContext& context) const
+{
+ OutputHelp();
+}
+} // namespace wsl::windows::wslc
diff --git a/src/windows/wslc/commands/SystemCommand.h b/src/windows/wslc/commands/SystemCommand.h
new file mode 100644
index 000000000..abdb8dd5c
--- /dev/null
+++ b/src/windows/wslc/commands/SystemCommand.h
@@ -0,0 +1,34 @@
+/*++
+
+Copyright (c) Microsoft. All rights reserved.
+
+Module Name:
+
+ SystemCommand.h
+
+Abstract:
+
+ Declaration of System command tree.
+
+--*/
+#pragma once
+#include "Command.h"
+
+namespace wsl::windows::wslc {
+// Root System Command
+struct SystemCommand final : public Command
+{
+ constexpr static std::wstring_view CommandName = L"system";
+ SystemCommand(const std::wstring& parent) : Command(CommandName, parent)
+ {
+ }
+ std::vector GetArguments() const override;
+ std::wstring ShortDescription() const override;
+ std::wstring LongDescription() const override;
+
+ std::vector> GetCommands() const override;
+
+protected:
+ void ExecuteInternal(CLIExecutionContext& context) const override;
+};
+} // namespace wsl::windows::wslc
diff --git a/test/windows/wslc/CommandLineTestCases.h b/test/windows/wslc/CommandLineTestCases.h
index cb0c40851..1cd60537c 100644
--- a/test/windows/wslc/CommandLineTestCases.h
+++ b/test/windows/wslc/CommandLineTestCases.h
@@ -25,22 +25,23 @@ COMMAND_LINE_TEST_CASE(L"-?", L"root", true)
COMMAND_LINE_TEST_CASE(L"--version", L"root", true)
COMMAND_LINE_TEST_CASE(L"-v", L"root", true)
-// Session command tests
-COMMAND_LINE_TEST_CASE(L"session list", L"list", true)
-COMMAND_LINE_TEST_CASE(L"session list --verbose", L"list", true)
-COMMAND_LINE_TEST_CASE(L"session list --verbose --help", L"list", true)
-COMMAND_LINE_TEST_CASE(L"session list --notanarg", L"list", false)
-COMMAND_LINE_TEST_CASE(L"session list extraarg", L"list", false)
-COMMAND_LINE_TEST_CASE(L"session shell session1", L"shell", true)
-COMMAND_LINE_TEST_CASE(L"session shell", L"shell", true)
-COMMAND_LINE_TEST_CASE(L"session terminate session1", L"terminate", true)
-COMMAND_LINE_TEST_CASE(L"session terminate", L"terminate", true)
-COMMAND_LINE_TEST_CASE(L"session enter C:\\storage", L"enter", true)
-COMMAND_LINE_TEST_CASE(L"session enter C:\\storage --name my-session", L"enter", true)
-COMMAND_LINE_TEST_CASE(L"session enter --name my-session C:\\storage", L"enter", true)
-COMMAND_LINE_TEST_CASE(L"session enter", L"enter", false) // Missing required storage-path
-COMMAND_LINE_TEST_CASE(L"session enter C:\\storage --notanarg", L"enter", false) // Invalid argument
-COMMAND_LINE_TEST_CASE(L"session enter --name my-session", L"enter", false) // Missing required positional before flag
+// System command tests
+COMMAND_LINE_TEST_CASE(L"system -?", L"system", true)
+COMMAND_LINE_TEST_CASE(L"system session list", L"list", true)
+COMMAND_LINE_TEST_CASE(L"system session list --verbose", L"list", true)
+COMMAND_LINE_TEST_CASE(L"system session list --verbose --help", L"list", true)
+COMMAND_LINE_TEST_CASE(L"system session list --notanarg", L"list", false)
+COMMAND_LINE_TEST_CASE(L"system session list extraarg", L"list", false)
+COMMAND_LINE_TEST_CASE(L"system session shell session1", L"shell", true)
+COMMAND_LINE_TEST_CASE(L"system session shell", L"shell", true)
+COMMAND_LINE_TEST_CASE(L"system session terminate session1", L"terminate", true)
+COMMAND_LINE_TEST_CASE(L"system session terminate", L"terminate", true)
+COMMAND_LINE_TEST_CASE(L"system session enter C:\\storage", L"enter", true)
+COMMAND_LINE_TEST_CASE(L"system session enter C:\\storage --name my-session", L"enter", true)
+COMMAND_LINE_TEST_CASE(L"system session enter --name my-session C:\\storage", L"enter", true)
+COMMAND_LINE_TEST_CASE(L"system session enter", L"enter", false) // Missing required storage-path
+COMMAND_LINE_TEST_CASE(L"system session enter C:\\storage --notanarg", L"enter", false) // Invalid argument
+COMMAND_LINE_TEST_CASE(L"system session enter --name my-session", L"enter", false) // Missing required positional before flag
// Container command tests
COMMAND_LINE_TEST_CASE(L"container list", L"list", true)
diff --git a/test/windows/wslc/WSLCCLICommandUnitTests.cpp b/test/windows/wslc/WSLCCLICommandUnitTests.cpp
index 5b3fbeb98..9fca09aad 100644
--- a/test/windows/wslc/WSLCCLICommandUnitTests.cpp
+++ b/test/windows/wslc/WSLCCLICommandUnitTests.cpp
@@ -22,6 +22,7 @@ Abstract:
#include "RootCommand.h"
#include "ContainerCommand.h"
#include "SessionCommand.h"
+#include "SystemCommand.h"
#include "VersionCommand.h"
using namespace wsl::windows::wslc;
@@ -65,10 +66,26 @@ class WSLCCLICommandUnitTests
}
}
- // Test: Verify SessionCommand has subcommands
+ // Test: Verify SystemCommand has subcommands
+ TEST_METHOD(SystemCommand_HasSubcommands)
+ {
+ auto cmd = SystemCommand(L"system");
+ auto subcommands = cmd.GetCommands();
+
+ // Verify it has subcommands
+ VERIFY_IS_TRUE(subcommands.size() > 0);
+ LogComment(L"SystemCommand has " + std::to_wstring(subcommands.size()) + L" subcommands");
+
+ for (const auto& subcmd : subcommands)
+ {
+ VERIFY_IS_NOT_NULL(subcmd.get());
+ }
+ }
+
+ // Test: Verify SessionCommand has subcommands (now under system)
TEST_METHOD(SessionCommand_HasSubcommands)
{
- auto cmd = SessionCommand(L"session");
+ auto cmd = SessionCommand(L"system session");
auto subcommands = cmd.GetCommands();
// Verify it has subcommands
@@ -85,7 +102,7 @@ class WSLCCLICommandUnitTests
// Test: Verify SessionEnterCommand has the expected arguments
TEST_METHOD(SessionEnterCommand_HasExpectedArguments)
{
- auto cmd = SessionEnterCommand(L"session");
+ auto cmd = SessionEnterCommand(L"system session");
auto args = cmd.GetArguments();
// Should have 2 arguments: storage-path (positional, required) and name (value, optional)
@@ -107,7 +124,7 @@ class WSLCCLICommandUnitTests
// Test: Verify SessionEnterCommand descriptions are not empty
TEST_METHOD(SessionEnterCommand_HasDescriptions)
{
- auto cmd = SessionEnterCommand(L"session");
+ auto cmd = SessionEnterCommand(L"system session");
VERIFY_IS_FALSE(cmd.ShortDescription().empty());
VERIFY_IS_FALSE(cmd.LongDescription().empty());
diff --git a/test/windows/wslc/e2e/WSLCE2EGlobalTests.cpp b/test/windows/wslc/e2e/WSLCE2EGlobalTests.cpp
index 3a59802a2..43891fd5d 100644
--- a/test/windows/wslc/e2e/WSLCE2EGlobalTests.cpp
+++ b/test/windows/wslc/e2e/WSLCE2EGlobalTests.cpp
@@ -83,7 +83,7 @@ class WSLCE2EGlobalTests
result.Verify({.Stderr = L"", .ExitCode = 0});
// Verify session list shows the admin session name
- result = RunWslc(L"session list", ElevationType::Elevated);
+ result = RunWslc(L"system session list", ElevationType::Elevated);
result.Verify({.Stderr = L"", .ExitCode = 0});
VERIFY_IS_TRUE(result.Stdout.has_value());
@@ -98,7 +98,7 @@ class WSLCE2EGlobalTests
result.Verify({.Stderr = L"", .ExitCode = 0});
// Verify session list shows the non-admin session name
- result = RunWslc(L"session list", ElevationType::NonElevated);
+ result = RunWslc(L"system session list", ElevationType::NonElevated);
result.Verify({.Stderr = L"", .ExitCode = 0});
VERIFY_IS_TRUE(result.Stdout.has_value());
@@ -244,17 +244,17 @@ class WSLCE2EGlobalTests
result.Verify({.Stderr = L"", .ExitCode = 0});
// Verify session list shows the admin session name
- result = RunWslc(L"session list");
+ result = RunWslc(L"system session list");
result.Verify({.Stderr = L"", .ExitCode = 0});
VERIFY_IS_TRUE(result.Stdout.has_value());
VERIFY_IS_TRUE(result.Stdout->find(adminName) != std::wstring::npos);
// Terminate the session
- result = RunWslc(L"session terminate");
+ result = RunWslc(L"system session terminate");
result.Verify({.Stderr = L"", .ExitCode = 0});
// Verify session no longer shows up
- result = RunWslc(L"session list");
+ result = RunWslc(L"system session list");
result.Verify({.Stderr = L"", .ExitCode = 0});
VERIFY_IS_TRUE(result.Stdout.has_value());
VERIFY_IS_FALSE(result.Stdout->find(adminName) != std::wstring::npos);
@@ -266,17 +266,17 @@ class WSLCE2EGlobalTests
result.Verify({.Stderr = L"", .ExitCode = 0});
// Verify session list shows the non-elevated session name
- result = RunWslc(L"session list");
+ result = RunWslc(L"system session list");
result.Verify({.Stderr = L"", .ExitCode = 0});
VERIFY_IS_TRUE(result.Stdout.has_value());
VERIFY_IS_TRUE(result.Stdout->find(nonAdminName + L"\r\n") != std::wstring::npos);
// Terminate the session
- result = RunWslc(L"session terminate", ElevationType::NonElevated);
+ result = RunWslc(L"system session terminate", ElevationType::NonElevated);
result.Verify({.Stderr = L"", .ExitCode = 0});
// Verify session no longer shows up
- result = RunWslc(L"session list");
+ result = RunWslc(L"system session list");
result.Verify({.Stderr = L"", .ExitCode = 0});
VERIFY_IS_TRUE(result.Stdout.has_value());
VERIFY_IS_FALSE(result.Stdout->find(nonAdminName + L"\r\n") != std::wstring::npos);
@@ -292,17 +292,17 @@ class WSLCE2EGlobalTests
result.Verify({.Stderr = L"", .ExitCode = 0});
// Verify session list shows the admin session name
- result = RunWslc(L"session list");
+ result = RunWslc(L"system session list");
result.Verify({.Stderr = L"", .ExitCode = 0});
VERIFY_IS_TRUE(result.Stdout.has_value());
VERIFY_IS_TRUE(result.Stdout->find(adminName) != std::wstring::npos);
// Terminate the session
- result = RunWslc(std::format(L"session terminate {}", adminName));
+ result = RunWslc(std::format(L"system session terminate {}", adminName));
result.Verify({.Stderr = L"", .ExitCode = 0});
// Verify session no longer shows up
- result = RunWslc(L"session list");
+ result = RunWslc(L"system session list");
result.Verify({.Stderr = L"", .ExitCode = 0});
VERIFY_IS_TRUE(result.Stdout.has_value());
VERIFY_IS_FALSE(result.Stdout->find(adminName) != std::wstring::npos);
@@ -314,17 +314,17 @@ class WSLCE2EGlobalTests
result.Verify({.Stderr = L"", .ExitCode = 0});
// Verify session list shows the non-elevated session name
- result = RunWslc(L"session list");
+ result = RunWslc(L"system session list");
result.Verify({.Stderr = L"", .ExitCode = 0});
VERIFY_IS_TRUE(result.Stdout.has_value());
VERIFY_IS_TRUE(result.Stdout->find(nonAdminName + L"\r\n") != std::wstring::npos);
// Terminate the session
- result = RunWslc(std::format(L"session terminate {}", nonAdminName), ElevationType::NonElevated);
+ result = RunWslc(std::format(L"system session terminate {}", nonAdminName), ElevationType::NonElevated);
result.Verify({.Stderr = L"", .ExitCode = 0});
// Verify session no longer shows up
- result = RunWslc(L"session list");
+ result = RunWslc(L"system session list");
result.Verify({.Stderr = L"", .ExitCode = 0});
VERIFY_IS_TRUE(result.Stdout.has_value());
VERIFY_IS_FALSE(result.Stdout->find(nonAdminName + L"\r\n") != std::wstring::npos);
@@ -342,22 +342,22 @@ class WSLCE2EGlobalTests
result.Verify({.Stderr = L"", .ExitCode = 0});
// Verify session list shows both sessions.
- result = RunWslc(L"session list");
+ result = RunWslc(L"system session list");
result.Verify({.Stderr = L"", .ExitCode = 0});
VERIFY_IS_TRUE(result.Stdout.has_value());
VERIFY_IS_TRUE(result.Stdout->find(adminName) != std::wstring::npos);
VERIFY_IS_TRUE(result.Stdout->find(nonAdminName + L"\r\n") != std::wstring::npos);
// Attempt to terminate the admin session from the non-elevated process and fail.
- result = RunWslc(std::format(L"session terminate {}", adminName), ElevationType::NonElevated);
+ result = RunWslc(std::format(L"system session terminate {}", adminName), ElevationType::NonElevated);
result.Verify({.Stderr = L"The requested operation requires elevation. \r\nError code: ERROR_ELEVATION_REQUIRED\r\n", .ExitCode = 1});
// Terminate the non-elevated session from the elevated process.
- result = RunWslc(std::format(L"session terminate {}", nonAdminName), ElevationType::Elevated);
+ result = RunWslc(std::format(L"system session terminate {}", nonAdminName), ElevationType::Elevated);
result.Verify({.Stderr = L"", .ExitCode = 0});
// Verify non-elevated session no longer shows up
- result = RunWslc(L"session list");
+ result = RunWslc(L"system session list");
result.Verify({.Stderr = L"", .ExitCode = 0});
VERIFY_IS_TRUE(result.Stdout.has_value());
VERIFY_IS_FALSE(result.Stdout->find(nonAdminName + L"\r\n") != std::wstring::npos);
@@ -382,7 +382,7 @@ class WSLCE2EGlobalTests
result.Verify({.Stdout = L"", .Stderr = L"Element not found. \r\nError code: ERROR_NOT_FOUND\r\n", .ExitCode = 1});
// Verify session list
- result = RunWslc(L"session list");
+ result = RunWslc(L"system session list");
result.Verify({.Stderr = L"", .ExitCode = 0});
// Verify there is a session with the name of the test session in the session list output.
@@ -419,7 +419,7 @@ class WSLCE2EGlobalTests
Log::Comment(L"Testing elevated interactive session");
// Session shell should attach to the correct default session.
// Test should be elevated, therefore this should be the admin session.
- auto session = RunWslcInteractive(L"session shell");
+ auto session = RunWslcInteractive(L"system session shell");
VERIFY_IS_TRUE(session.IsRunning(), L"Session should be running");
session.ExpectStdout(VT::SESSION_PROMPT);
@@ -444,7 +444,7 @@ class WSLCE2EGlobalTests
Log::Comment(L"Testing non-elevated interactive session with explicit session name");
// Non-Elevated session shell should attach to the wslc by name also.
auto nonAdminName = GetExpectedDefaultSessionName(false);
- auto session = RunWslcInteractive(std::format(L"session shell {}", nonAdminName), ElevationType::NonElevated);
+ auto session = RunWslcInteractive(std::format(L"system session shell {}", nonAdminName), ElevationType::NonElevated);
VERIFY_IS_TRUE(session.IsRunning(), L"Session should be running");
session.ExpectStdout(VT::SESSION_PROMPT);
@@ -469,7 +469,7 @@ class WSLCE2EGlobalTests
Log::Comment(L"Testing elevated interactive session with explicit admin session name");
// Elevated session shell should attach to the wslc by name also.
auto adminName = GetExpectedDefaultSessionName(true);
- auto session = RunWslcInteractive(std::format(L"session shell {}", adminName), ElevationType::Elevated);
+ auto session = RunWslcInteractive(std::format(L"system session shell {}", adminName), ElevationType::Elevated);
VERIFY_IS_TRUE(session.IsRunning(), L"Session should be running");
session.ExpectStdout(VT::SESSION_PROMPT);
@@ -526,8 +526,8 @@ private:
{L"container", Localization::WSLCCLI_ContainerCommandDesc()},
{L"image", Localization::WSLCCLI_ImageCommandDesc()},
{L"registry", Localization::WSLCCLI_RegistryCommandDesc()},
- {L"session", Localization::WSLCCLI_SessionCommandDesc()},
{L"settings", Localization::WSLCCLI_SettingsCommandDesc()},
+ {L"system", Localization::WSLCCLI_SystemCommandDesc()},
{L"volume", Localization::WSLCCLI_VolumeCommandDesc()},
{L"attach", Localization::WSLCCLI_ContainerAttachDesc()},
{L"build", Localization::WSLCCLI_ImageBuildDesc()},
@@ -579,4 +579,4 @@ private:
return options.str();
}
};
-} // namespace WSLCE2ETests
\ No newline at end of file
+} // namespace WSLCE2ETests
diff --git a/test/windows/wslc/e2e/WSLCE2EHelpers.cpp b/test/windows/wslc/e2e/WSLCE2EHelpers.cpp
index 7039822a5..f5bce8326 100644
--- a/test/windows/wslc/e2e/WSLCE2EHelpers.cpp
+++ b/test/windows/wslc/e2e/WSLCE2EHelpers.cpp
@@ -394,7 +394,7 @@ void EnsureSessionIsTerminated(const std::wstring& sessionName)
targetSession = std::format(L"{}-{}", baseName, username);
}
- auto listResult = RunWslc(L"session list");
+ auto listResult = RunWslc(L"system session list");
listResult.Verify({.Stderr = L"", .ExitCode = 0});
auto stdoutLines = listResult.GetStdoutLines();
@@ -403,7 +403,7 @@ void EnsureSessionIsTerminated(const std::wstring& sessionName)
// Check if the line ends with the target session name
if (line.size() >= targetSession.size() && line.compare(line.size() - targetSession.size(), targetSession.size(), targetSession) == 0)
{
- auto result = RunWslc(std::format(L"session terminate \"{}\"", targetSession));
+ auto result = RunWslc(std::format(L"system session terminate \"{}\"", targetSession));
result.Verify({.Stdout = L"", .Stderr = L"", .ExitCode = 0});
break;
}
@@ -492,4 +492,4 @@ std::wstring GetPythonHttpServerScript(uint16_t port)
{
return std::format(L"python3 -m http.server {}", port);
}
-} // namespace WSLCE2ETests
\ No newline at end of file
+} // namespace WSLCE2ETests
diff --git a/test/windows/wslc/e2e/WSLCE2ESessionEnterTests.cpp b/test/windows/wslc/e2e/WSLCE2ESessionEnterTests.cpp
index 9da3a658d..c10f43295 100644
--- a/test/windows/wslc/e2e/WSLCE2ESessionEnterTests.cpp
+++ b/test/windows/wslc/e2e/WSLCE2ESessionEnterTests.cpp
@@ -58,7 +58,7 @@ class WSLCE2ESessionEnterTests
RunWslc(L"image ls").Verify({.ExitCode = 0});
// Terminate the wslc session since we use its storage path in this test class.
- RunWslc(L"session terminate");
+ RunWslc(L"system session terminate");
return true;
}
@@ -67,7 +67,7 @@ class WSLCE2ESessionEnterTests
constexpr auto sessionName = L"test-wslc-session-enter";
// Run an interactive session enter with an explicit name.
- auto session = RunWslcInteractive(std::format(L"session enter \"{}\" --name {}", GetDefaultStoragePath(), sessionName));
+ auto session = RunWslcInteractive(std::format(L"system session enter \"{}\" --name {}", GetDefaultStoragePath(), sessionName));
VERIFY_IS_TRUE(session.IsRunning(), L"Session should be running");
session.ExpectStdout(VT::SESSION_PROMPT);
@@ -80,7 +80,7 @@ class WSLCE2ESessionEnterTests
session.ExpectStdout(VT::SESSION_PROMPT);
// Verify the session appears in session list.
- auto listResult = RunWslc(L"session list");
+ auto listResult = RunWslc(L"system session list");
listResult.Verify({.Stderr = L"", .ExitCode = S_OK});
VERIFY_IS_TRUE(listResult.Stdout.has_value());
VERIFY_IS_TRUE(listResult.Stdout->find(sessionName) != std::wstring::npos);
@@ -89,7 +89,7 @@ class WSLCE2ESessionEnterTests
VERIFY_ARE_EQUAL(session.Exit(), 0);
// Verify the session is no longer in the session list after exiting.
- listResult = RunWslc(L"session list");
+ listResult = RunWslc(L"system session list");
listResult.Verify({.Stderr = L"", .ExitCode = S_OK});
VERIFY_IS_TRUE(listResult.Stdout.has_value());
VERIFY_IS_FALSE(listResult.Stdout->find(sessionName) != std::wstring::npos);
@@ -97,7 +97,7 @@ class WSLCE2ESessionEnterTests
WSLC_TEST_METHOD(WSLCE2E_SessionEnter_WithoutName_GeneratesGuid)
{
- auto session = RunWslcInteractive(std::format(L"session enter \"{}\"", GetDefaultStoragePath()));
+ auto session = RunWslcInteractive(std::format(L"system session enter \"{}\"", GetDefaultStoragePath()));
VERIFY_IS_TRUE(session.IsRunning(), L"Session should be running");
session.ExpectStderr("Created session: ");
@@ -108,7 +108,7 @@ class WSLCE2ESessionEnterTests
WSLC_TEST_METHOD(WSLCE2E_SessionEnter_StoragePathNotFound)
{
- auto result = RunWslc(L"session enter does-not-exist");
+ auto result = RunWslc(L"system session enter does-not-exist");
result.Verify({
.Stderr = L"The system cannot find the path specified. \r\nError code: ERROR_PATH_NOT_FOUND\r\n",
.ExitCode = 1,