Check if xclip is installed.

This commit is contained in:
BDisp
2021-05-23 00:47:28 +01:00
parent 67d75725cc
commit 8bdbb12c8a

View File

@@ -22,6 +22,7 @@ namespace Terminal.Gui.Core {
Application.Init (new FakeDriver (), new FakeMainLoop (() => FakeConsole.ReadKey (true)));
var clipText = "This is a clipboard unit test to get clipboard from OS.";
var exit = false;
Application.Iteration += () => {
if (RuntimeInformation.IsOSPlatform (OSPlatform.Windows)) {
@@ -62,6 +63,11 @@ namespace Terminal.Gui.Core {
copy.WaitForExit ();
}
} else if (RuntimeInformation.IsOSPlatform (OSPlatform.Linux)) {
if (exit = xclipExists () == false) {
// xclip doesn't exist then exit.
Application.RequestStop ();
}
using (Process bash = new Process {
StartInfo = new ProcessStartInfo {
FileName = "bash",
@@ -81,7 +87,9 @@ namespace Terminal.Gui.Core {
Application.Run ();
Assert.Equal (clipText, Clipboard.Contents);
if (!exit) {
Assert.Equal (clipText, Clipboard.Contents);
}
Application.Shutdown ();
}
@@ -93,6 +101,7 @@ namespace Terminal.Gui.Core {
var clipText = "This is a clipboard unit test to set the OS clipboard.";
var clipReadText = "";
var exit = false;
Application.Iteration += () => {
Clipboard.Contents = clipText;
@@ -123,6 +132,11 @@ namespace Terminal.Gui.Core {
paste.WaitForExit ();
}
} else if (RuntimeInformation.IsOSPlatform (OSPlatform.Linux)) {
if (exit = xclipExists () == false) {
// xclip doesn't exist then exit.
Application.RequestStop ();
}
using (Process bash = new Process {
StartInfo = new ProcessStartInfo {
RedirectStandardOutput = true,
@@ -142,9 +156,31 @@ namespace Terminal.Gui.Core {
Application.Run ();
Assert.Equal (clipText, clipReadText);
if (!exit) {
Assert.Equal (clipText, clipReadText);
}
Application.Shutdown ();
}
bool xclipExists ()
{
using (Process bash = new Process {
StartInfo = new ProcessStartInfo {
FileName = "bash",
Arguments = $"-c \"which xclip\"",
RedirectStandardOutput = true,
}
}) {
bash.Start ();
bool exist = bash.StandardOutput.ReadToEnd ().TrimEnd () != "";
bash.StandardOutput.Close ();
bash.WaitForExit ();
if (exist) {
return true;
}
}
return false;
}
}
}