Commit 4ad7de7 for mammothjs

commit 4ad7de79ffbb89f99e25268a810387a473ad41f3
Author: Michael Williamson <mike@zwobble.org>
Date:   Sat May 31 11:11:50 2025 +0100

    Add test for CLI exiting with error

diff --git a/test/main.tests.js b/test/main.tests.js
index 505c31f..06824f0 100644
--- a/test/main.tests.js
+++ b/test/main.tests.js
@@ -67,20 +67,34 @@ test("--output-format=markdown option generate markdown output", function() {
     });
 });

+test("when input file does not exist then process exits with error", function() {
+    return tryRunMammoth(testPath("non-existent.docx")).then(function(result) {
+        assert.strictEqual(result.error.code, 2);
+        assert.strictEqual(result.stdout, "");
+        assert.ok(result.stderr.startsWith("Fatal Error: ENOENT"));
+    });
+});

 function runMammoth() {
     var args = Array.prototype.slice.call(arguments, 0);
+    return tryRunMammoth(args).then(function(result) {
+        console.log(result.stderr); // eslint-disable-line no-console
+        assert.equal(result.error, null);
+        return {output: result.stdout, stderrOutput: result.stderr};
+    });
+}
+
+
+function tryRunMammoth(args) {
     var deferred = promises.defer();
-
+
     var processArgs = ["node", "bin/mammoth"].concat(args);
     // TODO: proper escaping of args
     var command = processArgs.join(" ");
     child_process.exec(command, function(error, stdout, stderr) { // eslint-disable-line camelcase
-        console.log(stderr); // eslint-disable-line no-console
-        assert.equal(error, null);
-        deferred.resolve({output: stdout, stderrOutput: stderr});
+        deferred.resolve({error: error, stdout: stdout, stderr: stderr});
     });
-
+
     return deferred.promise;
 }