Version 1
[yaffs-website] / vendor / drush / drush / tests / backendUnitTest.php
diff --git a/vendor/drush/drush/tests/backendUnitTest.php b/vendor/drush/drush/tests/backendUnitTest.php
new file mode 100644 (file)
index 0000000..6d6ece0
--- /dev/null
@@ -0,0 +1,38 @@
+<?php
+
+namespace Unish;
+
+class backendUnitCase extends UnitUnishTestCase {
+
+  /**
+   * Covers the following target responsibilities.
+   *   - Insures that drush_invoke_process() called with fork backend set is able
+   *     to invoke a non-blocking process.
+   */
+  function testBackendFork() {
+    if (self::is_windows()) {
+      $this->markTestSkipped('Fork tests not a priority on Windows.');
+    }
+
+    // Ensure that file that will be created by forked process does not exist
+    // before invocation.
+    $test_file = UNISH_SANDBOX . '/fork_test.txt';
+    if (file_exists($test_file)) {
+      unlink($test_file);
+    }
+
+    // Sleep for a millisecond, then create the file
+    $ev_php = "usleep(1000);fopen('$test_file','a');";
+    drush_invoke_process("@none", "ev", array($ev_php), array(), array("fork" => TRUE));
+
+    // Test file does not exist immediate after process forked
+    $this->assertEquals(file_exists($test_file), FALSE);
+    // Check every 100th of a second for up to 4 seconds to see if the file appeared
+    $repetitions = 400;
+    while (!file_exists($test_file) && ($repetitions > 0)) {
+      usleep(10000);
+    }
+    // Assert that the file did finally appear
+    $this->assertEquals(file_exists($test_file), TRUE);
+  }
+}