Files
PowerShell/src/ps_test/test_CorePsPlatform.cs
T

138 lines
4.4 KiB
C#
Raw Normal View History

2015-06-11 13:40:07 -07:00
using Xunit;
using System;
using System.IO;
2015-08-07 16:56:19 -07:00
using System.Diagnostics;
using System.Management.Automation;
2015-06-11 13:40:07 -07:00
namespace PSTests
{
public static class PlatformTests
{
[Fact]
public static void TestIsLinux()
2015-06-11 13:40:07 -07:00
{
Assert.True(Platform.IsLinux());
}
[Fact]
public static void TestHasCom()
{
Assert.False(Platform.HasCom());
2015-06-11 13:40:07 -07:00
}
2015-06-11 15:15:45 -07:00
[Fact]
2015-06-11 15:15:45 -07:00
public static void TestHasAmsi()
{
Assert.False(Platform.HasAmsi());
}
[Fact]
public static void TestUsesCodeSignedAssemblies()
{
Assert.False(Platform.UsesCodeSignedAssemblies());
}
2015-06-15 15:17:15 -07:00
[Fact]
2015-06-15 15:17:15 -07:00
public static void TestHasDriveAutoMounting()
{
Assert.False(Platform.HasDriveAutoMounting());
}
2015-07-06 12:46:38 -07:00
[Fact]
2015-07-06 12:46:38 -07:00
public static void TestHasRegistrySupport()
{
Assert.False(Platform.HasRegistrySupport());
}
2015-07-24 13:11:18 -07:00
[Fact]
public static void TestGetUserName()
{
2015-08-07 16:56:19 -07:00
var startInfo = new ProcessStartInfo
{
FileName = @"/usr/bin/env",
Arguments = "whoami",
RedirectStandardOutput = true,
UseShellExecute = false
};
2015-08-13 15:45:13 -07:00
using (Process process = Process.Start(startInfo))
{
// Get output of call to whoami without trailing newline
string username = process.StandardOutput.ReadToEnd().Trim();
process.WaitForExit();
// The process should return an exit code of 0 on success
Assert.Equal(0, process.ExitCode);
// It should be the same as what our platform code returns
Assert.Equal(username, Platform.NonWindowsGetUserName());
}
2015-07-24 13:11:18 -07:00
}
[Fact]
public static void TestGetMachineName()
{
var startInfo = new ProcessStartInfo
{
FileName = @"/usr/bin/env",
Arguments = "hostname",
RedirectStandardOutput = true,
UseShellExecute = false
};
using (Process process = Process.Start(startInfo))
{
// Get output of call to hostname without trailing newline
string hostname = process.StandardOutput.ReadToEnd().Trim();
process.WaitForExit();
// The process should return an exit code of 0 on success
Assert.Equal(0, process.ExitCode);
// It should be the same as what our platform code returns
Assert.Equal(hostname, Platform.NonWindowsGetMachineName());
}
}
[Fact]
2015-09-03 16:41:14 -07:00
public static void TestExistantFileIsHardLink()
{
string path = @"/tmp/MyTest";
if (!File.Exists(path))
{
File.Create(path);
}
// Create a file to write to using StreamWriter.
2015-09-03 16:42:28 -07:00
// convert string to stream. On Windows, this appears to be handled, but on *nix,
// we apparently need to convert to UTF8.
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(path);
MemoryStream stream = new MemoryStream(byteArray);
// Convert `path` string to FileSystemInfo data type. And now, it should return true
FileSystemInfo fd = new FileInfo(path);
Assert.True(Platform.NonWindowsIsHardLink(fd));
}
[Fact]
2015-09-03 16:41:14 -07:00
public static void TestDirectoryIsHardLink()
{
string path = @"/tmp";
// Convert `path` string to FileSystemInfo data type. And now, it should return true
FileSystemInfo fd = new FileInfo(path);
Assert.False(Platform.NonWindowsIsHardLink(fd));
}
[Fact]
2015-09-03 16:41:14 -07:00
public static void TestNonExistantIsHardLink()
{
// A file that should *never* exist on a test machine:
string path = @"/tmp/ThisFileShouldNotExistOnTestMachines";
// If the file exists, then there's a larger issue that needs to be looked at
Assert.False(File.Exists(path));
// Convert `path` string to FileSystemInfo data type. And now, it should return true
FileSystemInfo fd = new FileInfo(path);
Assert.False(Platform.NonWindowsIsHardLink(fd));
}
2015-06-11 13:40:07 -07:00
}
}