2
0
Эх сурвалжийг харах

Merge pull request #2040 from BDisp/lock-clipboard-contents-test-fix

Fixes #2039. Surrounding the Clipboard.Contents with a lock keyword.
Tig Kindel 2 жил өмнө
parent
commit
e6092d192a
1 өөрчлөгдсөн 93 нэмэгдсэн , 91 устгасан
  1. 93 91
      UnitTests/ClipboardTests.cs

+ 93 - 91
UnitTests/ClipboardTests.cs

@@ -79,110 +79,112 @@ namespace Terminal.Gui.Core {
 			var exit = false;
 			var getClipText = "";
 
-			Application.Iteration += () => {
-				if (RuntimeInformation.IsOSPlatform (OSPlatform.Windows)) {
-					// using (Process clipExe = new Process {
-					// 	StartInfo = new ProcessStartInfo {
-					// 		RedirectStandardInput = true,
-					// 		FileName = "clip"
-					// 	}
-					// }) {
-					// 	clipExe.Start ();
-					// 	clipExe.StandardInput.Write (clipText);
-					// 	clipExe.StandardInput.Close ();
-					// 	var result = clipExe.WaitForExit (500);
-					// 	if (result) {
-					// 		clipExe.WaitForExit ();
-					// 	}
-					// }
-
-					using (Process pwsh = new Process {
-						StartInfo = new ProcessStartInfo {
-							FileName = "powershell",
-							Arguments = $"-command \"Set-Clipboard -Value \\\"{clipText}\\\"\""
+			lock (Clipboard.Contents) {
+				Application.Iteration += () => {
+					if (RuntimeInformation.IsOSPlatform (OSPlatform.Windows)) {
+						// using (Process clipExe = new Process {
+						// 	StartInfo = new ProcessStartInfo {
+						// 		RedirectStandardInput = true,
+						// 		FileName = "clip"
+						// 	}
+						// }) {
+						// 	clipExe.Start ();
+						// 	clipExe.StandardInput.Write (clipText);
+						// 	clipExe.StandardInput.Close ();
+						// 	var result = clipExe.WaitForExit (500);
+						// 	if (result) {
+						// 		clipExe.WaitForExit ();
+						// 	}
+						// }
+
+						using (Process pwsh = new Process {
+							StartInfo = new ProcessStartInfo {
+								FileName = "powershell",
+								Arguments = $"-command \"Set-Clipboard -Value \\\"{clipText}\\\"\""
+							}
+						}) {
+							pwsh.Start ();
+							pwsh.WaitForExit ();
 						}
-					}) {
-						pwsh.Start ();
-						pwsh.WaitForExit ();
-					}
-					getClipText = Clipboard.Contents.ToString ();
+						getClipText = Clipboard.Contents.ToString ();
 
-				} else if (RuntimeInformation.IsOSPlatform (OSPlatform.OSX)) {
-					using (Process copy = new Process {
-						StartInfo = new ProcessStartInfo {
-							RedirectStandardInput = true,
-							FileName = "pbcopy"
+					} else if (RuntimeInformation.IsOSPlatform (OSPlatform.OSX)) {
+						using (Process copy = new Process {
+							StartInfo = new ProcessStartInfo {
+								RedirectStandardInput = true,
+								FileName = "pbcopy"
+							}
+						}) {
+							copy.Start ();
+							copy.StandardInput.Write (clipText);
+							copy.StandardInput.Close ();
+							copy.WaitForExit ();
 						}
-					}) {
-						copy.Start ();
-						copy.StandardInput.Write (clipText);
-						copy.StandardInput.Close ();
-						copy.WaitForExit ();
-					}
-					getClipText = Clipboard.Contents.ToString ();
+						getClipText = Clipboard.Contents.ToString ();
 
-				} else if (RuntimeInformation.IsOSPlatform (OSPlatform.Linux)) {
-					if (Is_WSL_Platform ()) {
-						try {
-							using (Process bash = new Process {
-								StartInfo = new ProcessStartInfo {
-									FileName = "powershell.exe",
-									Arguments = $"-noprofile -command \"Set-Clipboard -Value \\\"{clipText}\\\"\""
+					} else if (RuntimeInformation.IsOSPlatform (OSPlatform.Linux)) {
+						if (Is_WSL_Platform ()) {
+							try {
+								using (Process bash = new Process {
+									StartInfo = new ProcessStartInfo {
+										FileName = "powershell.exe",
+										Arguments = $"-noprofile -command \"Set-Clipboard -Value \\\"{clipText}\\\"\""
+									}
+								}) {
+									bash.Start ();
+									bash.WaitForExit ();
 								}
-							}) {
-								bash.Start ();
-								bash.WaitForExit ();
+
+								//using (Process clipExe = new Process {
+								//	StartInfo = new ProcessStartInfo {
+								//		RedirectStandardInput = true,
+								//		FileName = "clip.exe"
+								//	}
+								//}) {
+								//	clipExe.Start ();
+								//	clipExe.StandardInput.Write (clipText);
+								//	clipExe.StandardInput.Close ();
+								//	clipExe.WaitForExit ();
+								//	//var result = clipExe.WaitForExit (500);
+								//	//if (result) {
+								//	//	clipExe.WaitForExit ();
+								//	//}
+								//}
+							} catch {
+								exit = true;
 							}
+							if (!exit) {
+								getClipText = Clipboard.Contents.ToString ();
+							}
+							Application.RequestStop ();
+							return;
+						}
+						if (exit = xclipExists () == false) {
+							// xclip doesn't exist then exit.
+							Application.RequestStop ();
+							return;
+						}
 
-							//using (Process clipExe = new Process {
-							//	StartInfo = new ProcessStartInfo {
-							//		RedirectStandardInput = true,
-							//		FileName = "clip.exe"
-							//	}
-							//}) {
-							//	clipExe.Start ();
-							//	clipExe.StandardInput.Write (clipText);
-							//	clipExe.StandardInput.Close ();
-							//	clipExe.WaitForExit ();
-							//	//var result = clipExe.WaitForExit (500);
-							//	//if (result) {
-							//	//	clipExe.WaitForExit ();
-							//	//}
-							//}
-						} catch {
-							exit = true;
+						using (Process bash = new Process {
+							StartInfo = new ProcessStartInfo {
+								FileName = "bash",
+								Arguments = $"-c \"xclip -sel clip -i\"",
+								RedirectStandardInput = true,
+							}
+						}) {
+							bash.Start ();
+							bash.StandardInput.Write (clipText);
+							bash.StandardInput.Close ();
+							bash.WaitForExit ();
 						}
 						if (!exit) {
 							getClipText = Clipboard.Contents.ToString ();
 						}
-						Application.RequestStop ();
-						return;
-					}
-					if (exit = xclipExists () == false) {
-						// xclip doesn't exist then exit.
-						Application.RequestStop ();
-						return;
-					}
-
-					using (Process bash = new Process {
-						StartInfo = new ProcessStartInfo {
-							FileName = "bash",
-							Arguments = $"-c \"xclip -sel clip -i\"",
-							RedirectStandardInput = true,
-						}
-					}) {
-						bash.Start ();
-						bash.StandardInput.Write (clipText);
-						bash.StandardInput.Close ();
-						bash.WaitForExit ();
 					}
-					if (!exit) {
-						getClipText = Clipboard.Contents.ToString ();
-					}
-				}
 
-				Application.RequestStop ();
-			};
+					Application.RequestStop ();
+				};
+			}
 
 			Application.Run ();