mirror of
https://github.com/nodejs/node.git
synced 2024-12-01 16:10:02 +01:00
d631af59c0
The tests in pseudo-tty takes the form of child node writing some data and exiting, while parent python consume them through pseudo tty implementations, and validate the result. While there is no synchronization between child and parent, this works for most platforms, except AIX, where the child exits even before the parent could setup the read loop, under race conditions Fixing the race condition is ideally done through sending ACK messages to and forth, but involves massive changes and have side effect. The workaround is to address them in AIX alone, by adding a reasonable delay. PR-URL: https://github.com/nodejs/node/pull/11715 Fixes: https://github.com/nodejs/node/issues/7973 Fixes: https://github.com/nodejs/node/issues/9765 Fixes: https://github.com/nodejs/node/issues/11541 Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>
20 lines
716 B
JavaScript
20 lines
716 B
JavaScript
// https://github.com/nodejs/node/issues/6456#issuecomment-219320599
|
|
// https://gist.github.com/isaacs/1495b91ec66b21d30b10572d72ad2cdd
|
|
'use strict';
|
|
const common = require('../common');
|
|
|
|
// 1000 bytes wrapped at 50 columns
|
|
// \n turns into a double-byte character
|
|
// (48 + {2}) * 20 = 1000
|
|
let out = ('o'.repeat(48) + '\n').repeat(20);
|
|
// Add the remaining 24 bytes and terminate with an 'O'.
|
|
// This results in 1025 bytes, just enough to overflow the 1kb OS X TTY buffer.
|
|
out += 'o'.repeat(24) + 'O';
|
|
|
|
// In AIX, the child exits even before the python parent
|
|
// can setup the readloop. Provide a reasonable delay.
|
|
setTimeout(function() {
|
|
process.stdout.write(out);
|
|
process.exit(0);
|
|
}, common.isAix ? 200 : 0);
|