mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-26 15:57:56 +01:00
Check if xclip is installed.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user