|
|
|
|
|
|
|
|
|
|
|
import * as assert from 'assert'; |
|
import { WindowsTerminal } from './windowsTerminal'; |
|
import { UnixTerminal } from './unixTerminal'; |
|
import { pollUntil } from './testUtils.test'; |
|
|
|
const terminalConstructor = (process.platform === 'win32') ? WindowsTerminal : UnixTerminal; |
|
const SHELL = (process.platform === 'win32') ? 'cmd.exe' : '/bin/bash'; |
|
|
|
let terminalCtor: WindowsTerminal | UnixTerminal; |
|
if (process.platform === 'win32') { |
|
terminalCtor = require('./windowsTerminal'); |
|
} else { |
|
terminalCtor = require('./unixTerminal'); |
|
} |
|
|
|
|
|
describe('Terminal', () => { |
|
describe('constructor', () => { |
|
it('should do basic type checks', () => { |
|
assert.throws( |
|
() => new (<any>terminalCtor)('a', 'b', { 'name': {} }), |
|
'name must be a string (not a object)' |
|
); |
|
}); |
|
}); |
|
|
|
describe('automatic flow control', () => { |
|
it('should respect ctor flow control options', () => { |
|
const pty = new terminalConstructor(SHELL, [], {handleFlowControl: true, flowControlPause: 'abc', flowControlResume: '123'}); |
|
assert.equal(pty.handleFlowControl, true); |
|
assert.equal((pty as any)._flowControlPause, 'abc'); |
|
assert.equal((pty as any)._flowControlResume, '123'); |
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}); |
|
}); |
|
|
|
function stripEscapeSequences(data: string): string { |
|
return data.replace(/\u001b\[0K/, ''); |
|
} |
|
|