Bug 620101 - Intermittent failing in test_nsIProcess.js | TEST-UNEXPECTED-FAIL | Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIProcess.run]; r=glandium,a=test-only fix
authorMark Banner <bugzilla@standard8.plus.com>
Thu, 13 Jan 2011 17:51:40 +0000
changeset 60452 bb4bbfbb6074f9df3549e8be592220096795c952
parent 60451 b0c723496180417e5cfa6773bd530a9359418ce9
child 60453 1511d70f1e4229732089b14b95b46626a93cdf46
child 60959 d15ec6629747b369ae0f996346ed18f58a1253fa
push idunknown
push userunknown
push dateunknown
reviewersglandium, test-only
bugs620101
milestone2.0b10pre
Bug 620101 - Intermittent failing in test_nsIProcess.js | TEST-UNEXPECTED-FAIL | Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIProcess.run]; r=glandium,a=test-only fix
xpcom/tests/unit/test_nsIProcess.js
--- a/xpcom/tests/unit/test_nsIProcess.js
+++ b/xpcom/tests/unit/test_nsIProcess.js
@@ -230,29 +230,37 @@ function test_notify_killed()
 
   process.kill();
 }
 
 // test if killing a process that is already finished doesn't crash
 function test_kill_2()
 {
   var file = get_test_program("TestQuickReturn");
+  var thread = Components.classes["@mozilla.org/thread-manager;1"]
+                         .getService().currentThread;
 
   for (var i = 0; i < 1000; i++) {
     var process = Components.classes["@mozilla.org/process/util;1"]
                           .createInstance(Components.interfaces.nsIProcess);
     process.init(file);
 
     process.run(false, [], 0);
 
     try {
       process.kill();
     }
     catch (e) { }
   }
+
+  // We need to ensure that we process any events on the main thread -
+  // this allow threads to clean up properly and avoid out of memory
+  // errors during the test.
+  while (thread.hasPendingEvents())
+    thread.processNextEvent(false);
 }
 
 function run_test() {
   set_environment();
   test_kill();
   test_quick();
   test_arguments();
   test_unicode_arguments();