Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / core / tests / Drupal / Tests / Listeners / HtmlOutputPrinterTrait.php
diff --git a/web/core/tests/Drupal/Tests/Listeners/HtmlOutputPrinterTrait.php b/web/core/tests/Drupal/Tests/Listeners/HtmlOutputPrinterTrait.php
new file mode 100644 (file)
index 0000000..1dd67eb
--- /dev/null
@@ -0,0 +1,72 @@
+<?php
+
+namespace Drupal\Tests\Listeners;
+
+/**
+ * Defines a class for providing html output results for functional tests.
+ *
+ * @internal
+ */
+trait HtmlOutputPrinterTrait {
+
+  /**
+   * File to write html links to.
+   *
+   * @var string
+   */
+  protected $browserOutputFile;
+
+  /**
+   * Creates the file to list the HTML output created during the test.
+   *
+   * @see \Drupal\Tests\BrowserTestBase::initBrowserOutputFile()
+   */
+  protected function setUpHtmlOutput() {
+    if ($html_output_directory = getenv('BROWSERTEST_OUTPUT_DIRECTORY')) {
+      // Initialize html output debugging.
+      $html_output_directory = rtrim($html_output_directory, '/');
+
+      // Check if directory exists.
+      if (!is_dir($html_output_directory) || !is_writable($html_output_directory)) {
+        $this->writeWithColor('bg-red, fg-black', "HTML output directory $html_output_directory is not a writable directory.");
+      }
+      else {
+        // Convert to a canonicalized absolute pathname just in case the current
+        // working directory is changed.
+        $html_output_directory = realpath($html_output_directory);
+        $this->browserOutputFile = tempnam($html_output_directory, 'browser_output_');
+        if ($this->browserOutputFile) {
+          touch($this->browserOutputFile);
+        }
+        else {
+          $this->writeWithColor('bg-red, fg-black', "Unable to create a temporary file in $html_output_directory.");
+        }
+      }
+    }
+
+    if ($this->browserOutputFile) {
+      putenv('BROWSERTEST_OUTPUT_FILE=' . $this->browserOutputFile);
+    }
+    else {
+      // Remove any environment variable.
+      putenv('BROWSERTEST_OUTPUT_FILE');
+    }
+  }
+
+  /**
+   * Prints the list of HTML output generated during the test.
+   */
+  protected function printHtmlOutput() {
+    if ($this->browserOutputFile) {
+      $contents = file_get_contents($this->browserOutputFile);
+      if ($contents) {
+        $this->writeNewLine();
+        $this->writeWithColor('bg-yellow, fg-black', 'HTML output was generated');
+        $this->write($contents);
+      }
+      // No need to keep the file around any more.
+      unlink($this->browserOutputFile);
+    }
+  }
+
+}