From: Jonathan Pryor Date: Fri, 1 Jun 2012 16:02:49 +0000 (-0400) Subject: [Mono.Posix] Workaround signal raising behavior. X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=0214d9669ab74cd2f77e53e031560c328b5efbd0;p=mono.git [Mono.Posix] Workaround signal raising behavior. The effects of Stdlib.raise() aren't immediate on OS X. The result is that UnixSignalTest.TestDispose1(): Stdlib.raise (Signum.SIGINT); Assert.AreEqual (a.Count, 1); _may_ fail depending on timing. Insert some Thread.Sleep()s to try to allow the signal to propogate. --- diff --git a/mcs/class/Mono.Posix/Test/Mono.Unix/UnixSignalTest.cs b/mcs/class/Mono.Posix/Test/Mono.Unix/UnixSignalTest.cs index 6120907159b..3098596b4b0 100644 --- a/mcs/class/Mono.Posix/Test/Mono.Unix/UnixSignalTest.cs +++ b/mcs/class/Mono.Posix/Test/Mono.Unix/UnixSignalTest.cs @@ -328,6 +328,7 @@ namespace MonoTests.Mono.Unix { UnixSignal b = new UnixSignal (Signum.SIGINT); Stdlib.raise (Signum.SIGINT); + SleepUntilSignaled (a); Assert.AreEqual (a.Count, 1); Assert.AreEqual (b.Count, 1); @@ -336,11 +337,21 @@ namespace MonoTests.Mono.Unix { b.Reset (); Stdlib.raise (Signum.SIGINT); + SleepUntilSignaled (b); Assert.AreEqual (b.Count, 1); b.Close (); } + static void SleepUntilSignaled (UnixSignal s) + { + for (int i = 0; i < 10; ++i) { + if (s.Count > 0) + break; + Thread.Sleep (100); + } + } + [Test] public void TestDispose2 () { @@ -348,6 +359,7 @@ namespace MonoTests.Mono.Unix { UnixSignal b = new UnixSignal (Signum.SIGINT); Stdlib.raise (Signum.SIGINT); + SleepUntilSignaled (a); Assert.AreEqual (a.Count, 1); Assert.AreEqual (b.Count, 1); @@ -356,6 +368,7 @@ namespace MonoTests.Mono.Unix { a.Reset (); Stdlib.raise (Signum.SIGINT); + SleepUntilSignaled (a); Assert.AreEqual (a.Count, 1); a.Close ();