workaround tty bugs on Node.js (#4594)
authorAlex Lam S.L <alexlamsl@gmail.com>
Tue, 26 Jan 2021 15:07:48 +0000 (15:07 +0000)
committerGitHub <noreply@github.com>
Tue, 26 Jan 2021 15:07:48 +0000 (23:07 +0800)
test/sandbox.js

index 5fe0a02..8f5d04d 100644 (file)
@@ -1,9 +1,15 @@
+var readFileSync = require("fs").readFileSync;
 var semver = require("semver");
 var spawnSync = require("child_process").spawnSync;
 var vm = require("vm");
 
 setup_log();
-var setup_code = "(" + setup + ")(this, " + setup_log + ", " + find_builtins() + ");";
+var setup_code = "(" + setup + ")(" + [
+    "this",
+    find_builtins(),
+    setup_log,
+    "function(process) {" + readFileSync(require.resolve("../tools/tty", "utf8")) + "}",
+].join(",\n") + ");\n";
 exports.has_toplevel = function(options) {
     return options.toplevel
         || options.mangle && options.mangle.toplevel
@@ -77,7 +83,7 @@ function find_builtins() {
     return builtins;
 }
 
-function setup(global, setup_log, builtins) {
+function setup(global, builtins, setup_log, setup_tty) {
     [ Array, Boolean, Error, Function, Number, Object, RegExp, String ].forEach(function(f) {
         f.toString = Function.prototype.toString;
     });
@@ -99,6 +105,7 @@ function setup(global, setup_log, builtins) {
     }();
     var process = global.process;
     if (process) {
+        setup_tty(process);
         var inspect = setup_log();
         process.on("uncaughtException", function(ex) {
             var value = ex;