Browse Source

Tidied up test runner. Passing tests are no longer printed to the console.

n1474335 5 years ago
parent
commit
772c6bbba5
3 changed files with 34 additions and 28 deletions
  1. 3 0
      tests/lib/TestRegister.mjs
  2. 30 27
      tests/lib/utils.mjs
  3. 1 1
      tests/node/tests/operations.mjs

+ 3 - 0
tests/lib/TestRegister.mjs

@@ -48,6 +48,7 @@ class TestRegister {
      * Runs all the tests in the register.
      */
     runTests () {
+        console.log("Running tests...");
         return Promise.all(
             this.tests.map(function(test, i) {
                 const chef = new Chef();
@@ -103,6 +104,8 @@ class TestRegister {
      * Run all api related tests and wrap results in report format
      */
     runApiTests() {
+        console.log("Running tests...");
+
         return Promise.all(this.apiTests.map(async function(test, i) {
             const result = {
                 test: test,

+ 30 - 27
tests/lib/utils.mjs

@@ -15,59 +15,63 @@
  * @param {string} status
  * @returns {string}
  */
-const statusToIcon = function statusToIcon(status) {
-    const icons = {
+function statusToIcon(status) {
+    return {
         erroring: "🔥",
         failing: "❌",
         passing: "✔️️",
-    };
-    return icons[status] || "?";
-};
-
+    }[status] || "?";
+}
 
 /**
- * Displays a given test result in the console.
  * Counts test statuses.
  *
- * @param {Object} testStatusCounts
+ * @param {Object} testStatus
  * @param {Object} testResult
  */
 function handleTestResult(testStatus, testResult) {
     testStatus.allTestsPassing = testStatus.allTestsPassing && testResult.status === "passing";
-    const newCount = (testStatus.counts[testResult.status] || 0) + 1;
-    testStatus.counts[testResult.status] = newCount;
+    testStatus.counts[testResult.status] = (testStatus.counts[testResult.status] || 0) + 1;
     testStatus.counts.total += 1;
-    console.log([
-        statusToIcon(testResult.status),
-        testResult.test.name
-    ].join(" "));
-
-    if (testResult.output) {
-        console.log(
-            testResult.output
-                .trim()
-                .replace(/^/, "\t")
-                .replace(/\n/g, "\n\t")
-        );
-    }
 }
 
 /**
- * Log each test result, count tests and failures. Log test suite run duration.
+ * Log each test result, count tests and failures.
  *
  * @param {Object} testStatus - object describing test run data
  * @param {Object[]} results - results from TestRegister
  */
 export function logTestReport(testStatus, results) {
+    console.log("Tests completed.");
+
     results.forEach(r => handleTestResult(testStatus, r));
-    console.log("\n");
 
+    console.log();
     for (const testStatusCount in testStatus.counts) {
         const count = testStatus.counts[testStatusCount];
         if (count > 0) {
-            console.log(testStatusCount.toUpperCase(), count);
+            console.log(testStatusCount.toUpperCase() + "\t" + count);
         }
     }
+    console.log();
+
+    // Print error messages for tests that didn't pass
+    results.filter(res => res.status !== "passing").forEach(testResult => {
+        console.log([
+            statusToIcon(testResult.status),
+            testResult.test.name
+        ].join("  "));
+
+        if (testResult.output) {
+            console.log(
+                testResult.output
+                    .trim()
+                    .replace(/^/, "\t")
+                    .replace(/\n/g, "\n\t")
+            );
+        }
+    });
+    console.log();
 
     process.exit(testStatus.allTestsPassing ? 0 : 1);
 }
@@ -81,4 +85,3 @@ export function setLongTestFailure() {
         process.exit(1);
     }, 60 * 1000);
 }
-

+ 1 - 1
tests/node/tests/operations.mjs

@@ -906,7 +906,7 @@ smothering ampersand abreast
     }),
 
     it("to unix timestamp", () => {
-        assert.strictEqual(chef.toUNIXTimestamp("04-01-2001").toString(), "986083200 (Sun 1 April 2001 00:00:00 UTC)");
+        assert.strictEqual(chef.toUNIXTimestamp("2001-04-01").toString(), "986083200 (Sun 1 April 2001 00:00:00 UTC)");
     }),
 
     it("Translate DateTime format", () => {