public async Task Execute_WithPathSpaces() { // Verify that we can execute SUDO and non-SUDO commands from a temporary // folder that includes spaces. This happens when the user's Windows username // include spaces. var imagePath = await TestHelper.GetTestImageAsync(); using (var folderWithSpaces = new TempFolder(folder: Path.Combine(Path.GetTempPath(), $"test {Guid.NewGuid().ToString("d")}"))) { using (var tempFolder = new TempFolder()) { try { Wsl2Proxy.Import(TestHelper.TestDistroName, imagePath, tempFolder.Path); var distro = new Wsl2Proxy(TestHelper.TestDistroName, user: KubeConst.SysAdminUser); distro.TempFolder = folderWithSpaces.Path; Assert.Contains("Hello World!", distro.Execute("echo", "Hello World!").OutputText); Assert.Contains("Hello World!", distro.SudoExecute("echo", "Hello World!").OutputText); } finally { TestHelper.RemoveTestDistro(); } } } }
public async Task StartAs_Sysadmin() { // Verify that we can start a distro as [sysadmin] without configuring // or starting systemd. var imagePath = await TestHelper.GetTestImageAsync(); using (var tempFolder = new TempFolder()) { try { Wsl2Proxy.Import(TestHelper.TestDistroName, imagePath, tempFolder.Path); // Start as the [sysadmin] user. var distro = new Wsl2Proxy(TestHelper.TestDistroName, user: KubeConst.SysAdminUser); Assert.Equal(KubeConst.SysAdminUser, distro.User); // Expecting to be running under MSFT's [init] process 1. var response = distro.Execute("ps", "-e"); Assert.Equal(0, response.ExitCode); Assert.Contains("init", response.OutputText); // Expecting to be logged in as [root] response = distro.Execute("echo", "$LOGNAME"); Assert.Equal(0, response.ExitCode); Assert.Equal(KubeConst.SysAdminUser, response.OutputText.Trim()); } finally { TestHelper.RemoveTestDistro(); } } }
public async Task ImportExport() { // Verify that we can import and export distributions. var imagePath = await TestHelper.GetTestImageAsync(); using (var tempFolder = new TempFolder()) { try { //--------------------------------------------------------- // Import the distribution and verify that we can execute a command. Wsl2Proxy.Import(TestHelper.TestDistroName, imagePath, tempFolder.Path); Assert.True(Wsl2Proxy.Exists(TestHelper.TestDistroName)); var distro = new Wsl2Proxy(TestHelper.TestDistroName); Assert.Equal(TestHelper.TestDistroName, distro.Name); Assert.Contains("Hello World!", distro.Execute("echo", "Hello World!").OutputText); //--------------------------------------------------------- // Terminate the distribution and verify that we can export it. var exportPath = Path.Combine(tempFolder.Path, "export.tar"); Wsl2Proxy.Terminate(TestHelper.TestDistroName); Wsl2Proxy.Export(TestHelper.TestDistroName, exportPath); //--------------------------------------------------------- // Remove the test distribution and verify that we can regenerate // it from the image we just exported. TestHelper.RemoveTestDistro(); Wsl2Proxy.Import(TestHelper.TestDistroName, exportPath, tempFolder.Path); Assert.True(Wsl2Proxy.Exists(TestHelper.TestDistroName)); distro = new Wsl2Proxy(TestHelper.TestDistroName, user: KubeConst.SysAdminUser); Assert.Contains("Hello World!", distro.Execute("echo", "Hello World!").OutputText); } finally { TestHelper.RemoveTestDistro(); } } }
public async Task Execute() { // Verify that we can execute SUDO and non-SUDO commands. var imagePath = await TestHelper.GetTestImageAsync(); using (var tempFolder = new TempFolder()) { try { Wsl2Proxy.Import(TestHelper.TestDistroName, imagePath, tempFolder.Path); var distro = new Wsl2Proxy(TestHelper.TestDistroName, user: KubeConst.SysAdminUser); Assert.Contains("Hello World!", distro.Execute("echo", "Hello World!").OutputText); Assert.Contains("Hello World!", distro.SudoExecute("echo", "Hello World!").OutputText); } finally { TestHelper.RemoveTestDistro(); } } }