Browse Source

repl: fix /dev/null history file regression

This fixes a regression from 83887f35fa where ftruncate() fails on
a file symlinked to /dev/null.

PR-URL: https://github.com/nodejs/node/pull/12762
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Bartosz Sosnowski <bartosz@janeasystems.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
v6.x
Brian White 8 years ago
committed by Myles Borins
parent
commit
bd323a71a8
No known key found for this signature in database GPG Key ID: 933B01F40B5CA946
  1. 9
      lib/internal/repl.js
  2. 11
      test/parallel/test-repl-persistent-history.js

9
lib/internal/repl.js

@ -173,14 +173,6 @@ function setupHistory(repl, historyPath, oldHistoryPath, ready) {
return ready(err);
}
fs.ftruncate(hnd, 0, (err) => {
return onftruncate(err, hnd);
});
}
function onftruncate(err, hnd) {
if (err) {
return ready(err);
}
repl._historyHandle = hnd;
repl.on('line', online);
@ -190,6 +182,7 @@ function setupHistory(repl, historyPath, oldHistoryPath, ready) {
ready(null, repl);
});
flushHistory();
});
}
// ------ history listeners ------

11
test/parallel/test-repl-persistent-history.js

@ -78,6 +78,8 @@ const emptyHistoryPath = path.join(fixtures, '.empty-repl-history-file');
const defaultHistoryPath = path.join(common.tmpDir, '.node_repl_history');
const emptyHiddenHistoryPath = path.join(fixtures,
'.empty-hidden-repl-history-file');
const devNullHistoryPath = path.join(common.tmpDir,
'.dev-null-repl-history-file');
const tests = [
{
@ -178,6 +180,15 @@ const tests = [
test: [UP],
expected: [prompt]
},
{
before: function before() {
if (!common.isWindows)
fs.symlinkSync('/dev/null', devNullHistoryPath);
},
env: { NODE_REPL_HISTORY: devNullHistoryPath },
test: [UP],
expected: [prompt]
},
{ // Make sure this is always the last test, since we change os.homedir()
before: function before() {
// Mock os.homedir() failure

Loading…
Cancel
Save