File: mocks.js

package info (click to toggle)
node-shelljs 0.8.5%2B~cs0.8.10-4
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 1,644 kB
  • sloc: javascript: 6,945; makefile: 2
file content (44 lines) | stat: -rw-r--r-- 950 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function addToString(str, val) {
  if (Buffer.isBuffer(val)) {
    return str + val.toString();
  }
  return str + val;
}

function joinData(data) {
  return data.reduce(addToString, '');
}

function wrapWrite(target) {
  return function write(val) {
    target.push(val);
    return true;
  };
}

const _processStdoutWrite = process.stdout.write;
const _processStderrWrite = process.stderr.write;
const _stdout = [];
const _stderr = [];
const _stdoutWrite = wrapWrite(_stdout);
const _stderrWrite = wrapWrite(_stderr);

exports.stdout = function stdout() {
  return joinData(_stdout);
};

exports.stderr = function stderr() {
  return joinData(_stderr);
};

exports.init = function init() {
  process.stdout.write = _stdoutWrite;
  process.stderr.write = _stderrWrite;
};

exports.restore = function restore() {
  process.stdout.write = _processStdoutWrite;
  process.stderr.write = _processStderrWrite;
  _stdout.splice(0);
  _stderr.splice(0);
};