aws-cdk
Version:
CDK Toolkit, the command line tool for CDK apps
55 lines • 8.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/* eslint-disable import/order */
const display_1 = require("../../../lib/api/util/display");
const console_listener_1 = require("../console-listener");
describe('Rewritable Block Tests', () => {
let block;
beforeEach(() => {
block = new display_1.RewritableBlock(process.stderr);
process.stderr.rows = 80;
});
test('displayLines writes maximum lines based on rows if there are more lines than rows', () => {
const lines = Array.from(Array(100).keys()).map(line => line.toString());
const output = console_listener_1.stderr.inspectSync(() => {
block.displayLines(lines);
});
expect(output.length).toEqual(block.height);
});
test('displayLines writes maximum lines based on lines length if there are less lines than rows', () => {
const lines = Array.from(Array(45).keys()).map(line => line.toString());
const output = console_listener_1.stderr.inspectSync(() => {
block.displayLines(lines);
});
expect(output.length).toEqual(46);
});
test('displayLines writes maximum lines based on lines length if rows is undefined', () => {
const lines = Array.from(Array(5).keys()).map(line => line.toString());
process.stderr.rows = undefined;
const output = console_listener_1.stderr.inspectSync(() => {
block.displayLines(lines);
});
expect(output.length).toEqual(6);
});
test('display accounts for newlines in output', () => {
const output = console_listener_1.stderr.inspectSync(() => {
block.displayLines(['before\nafter']);
});
expect(output.length).toEqual(3); // cursorup + 2 lines
});
test('removeEmptyLines only removes trailing lines', () => {
console_listener_1.stderr.inspectSync(() => {
block.displayLines(Array.from(Array(5).keys()).map(x => `${x}`));
});
console_listener_1.stderr.inspectSync(() => {
// Leaves 3 empty lines
block.displayLines(Array.from(Array(2).keys()).map(x => `${x}`));
});
const output = console_listener_1.stderr.inspectSync(() => {
block.removeEmptyLines();
});
const expectedEmptyLines = 3;
expect(JSON.stringify(output)).toEqual(JSON.stringify([`\u001b[${expectedEmptyLines}A`]));
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGxheS50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlzcGxheS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsaUNBQWlDO0FBQ2pDLDJEQUFnRTtBQUNoRSwwREFBNkM7QUFFN0MsUUFBUSxDQUFDLHdCQUF3QixFQUFFLEdBQUcsRUFBRTtJQUN0QyxJQUFJLEtBQXNCLENBQUM7SUFDM0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLEtBQUssR0FBRyxJQUFJLHlCQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMzQixDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxtRkFBbUYsRUFBRSxHQUFHLEVBQUU7UUFDN0YsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN6RSxNQUFNLE1BQU0sR0FBRyx5QkFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDckMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQywyRkFBMkYsRUFBRSxHQUFHLEVBQUU7UUFDckcsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN4RSxNQUFNLE1BQU0sR0FBRyx5QkFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDckMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLDhFQUE4RSxFQUFFLEdBQUcsRUFBRTtRQUN4RixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLFNBQWdCLENBQUM7UUFDdkMsTUFBTSxNQUFNLEdBQUcseUJBQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFO1lBQ3JDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyx5Q0FBeUMsRUFBRSxHQUFHLEVBQUU7UUFDbkQsTUFBTSxNQUFNLEdBQUcseUJBQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFO1lBQ3JDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUI7SUFDekQsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsOENBQThDLEVBQUUsR0FBRyxFQUFFO1FBQ3hELHlCQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUN0QixLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkUsQ0FBQyxDQUFDLENBQUM7UUFDSCx5QkFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDdEIsdUJBQXVCO1lBQ3ZCLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRSxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sTUFBTSxHQUFHLHlCQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUNyQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUYsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9vcmRlciAqL1xuaW1wb3J0IHsgUmV3cml0YWJsZUJsb2NrIH0gZnJvbSAnLi4vLi4vLi4vbGliL2FwaS91dGlsL2Rpc3BsYXknO1xuaW1wb3J0IHsgc3RkZXJyIH0gZnJvbSAnLi4vY29uc29sZS1saXN0ZW5lcic7XG5cbmRlc2NyaWJlKCdSZXdyaXRhYmxlIEJsb2NrIFRlc3RzJywgKCkgPT4ge1xuICBsZXQgYmxvY2s6IFJld3JpdGFibGVCbG9jaztcbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgYmxvY2sgPSBuZXcgUmV3cml0YWJsZUJsb2NrKHByb2Nlc3Muc3RkZXJyKTtcbiAgICBwcm9jZXNzLnN0ZGVyci5yb3dzID0gODA7XG4gIH0pO1xuXG4gIHRlc3QoJ2Rpc3BsYXlMaW5lcyB3cml0ZXMgbWF4aW11bSBsaW5lcyBiYXNlZCBvbiByb3dzIGlmIHRoZXJlIGFyZSBtb3JlIGxpbmVzIHRoYW4gcm93cycsICgpID0+IHtcbiAgICBjb25zdCBsaW5lcyA9IEFycmF5LmZyb20oQXJyYXkoMTAwKS5rZXlzKCkpLm1hcChsaW5lID0+IGxpbmUudG9TdHJpbmcoKSk7XG4gICAgY29uc3Qgb3V0cHV0ID0gc3RkZXJyLmluc3BlY3RTeW5jKCgpID0+IHtcbiAgICAgIGJsb2NrLmRpc3BsYXlMaW5lcyhsaW5lcyk7XG4gICAgfSk7XG5cbiAgICBleHBlY3Qob3V0cHV0Lmxlbmd0aCkudG9FcXVhbChibG9jay5oZWlnaHQhKTtcbiAgfSk7XG5cbiAgdGVzdCgnZGlzcGxheUxpbmVzIHdyaXRlcyBtYXhpbXVtIGxpbmVzIGJhc2VkIG9uIGxpbmVzIGxlbmd0aCBpZiB0aGVyZSBhcmUgbGVzcyBsaW5lcyB0aGFuIHJvd3MnLCAoKSA9PiB7XG4gICAgY29uc3QgbGluZXMgPSBBcnJheS5mcm9tKEFycmF5KDQ1KS5rZXlzKCkpLm1hcChsaW5lID0+IGxpbmUudG9TdHJpbmcoKSk7XG4gICAgY29uc3Qgb3V0cHV0ID0gc3RkZXJyLmluc3BlY3RTeW5jKCgpID0+IHtcbiAgICAgIGJsb2NrLmRpc3BsYXlMaW5lcyhsaW5lcyk7XG4gICAgfSk7XG5cbiAgICBleHBlY3Qob3V0cHV0Lmxlbmd0aCkudG9FcXVhbCg0Nik7XG4gIH0pO1xuXG4gIHRlc3QoJ2Rpc3BsYXlMaW5lcyB3cml0ZXMgbWF4aW11bSBsaW5lcyBiYXNlZCBvbiBsaW5lcyBsZW5ndGggaWYgcm93cyBpcyB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgY29uc3QgbGluZXMgPSBBcnJheS5mcm9tKEFycmF5KDUpLmtleXMoKSkubWFwKGxpbmUgPT4gbGluZS50b1N0cmluZygpKTtcbiAgICBwcm9jZXNzLnN0ZGVyci5yb3dzID0gdW5kZWZpbmVkIGFzIGFueTtcbiAgICBjb25zdCBvdXRwdXQgPSBzdGRlcnIuaW5zcGVjdFN5bmMoKCkgPT4ge1xuICAgICAgYmxvY2suZGlzcGxheUxpbmVzKGxpbmVzKTtcbiAgICB9KTtcblxuICAgIGV4cGVjdChvdXRwdXQubGVuZ3RoKS50b0VxdWFsKDYpO1xuICB9KTtcblxuICB0ZXN0KCdkaXNwbGF5IGFjY291bnRzIGZvciBuZXdsaW5lcyBpbiBvdXRwdXQnLCAoKSA9PiB7XG4gICAgY29uc3Qgb3V0cHV0ID0gc3RkZXJyLmluc3BlY3RTeW5jKCgpID0+IHtcbiAgICAgIGJsb2NrLmRpc3BsYXlMaW5lcyhbJ2JlZm9yZVxcbmFmdGVyJ10pO1xuICAgIH0pO1xuICAgIGV4cGVjdChvdXRwdXQubGVuZ3RoKS50b0VxdWFsKDMpOyAvLyBjdXJzb3J1cCArIDIgbGluZXNcbiAgfSk7XG5cbiAgdGVzdCgncmVtb3ZlRW1wdHlMaW5lcyBvbmx5IHJlbW92ZXMgdHJhaWxpbmcgbGluZXMnLCAoKSA9PiB7XG4gICAgc3RkZXJyLmluc3BlY3RTeW5jKCgpID0+IHtcbiAgICAgIGJsb2NrLmRpc3BsYXlMaW5lcyhBcnJheS5mcm9tKEFycmF5KDUpLmtleXMoKSkubWFwKHggPT4gYCR7eH1gKSk7XG4gICAgfSk7XG4gICAgc3RkZXJyLmluc3BlY3RTeW5jKCgpID0+IHtcbiAgICAgIC8vIExlYXZlcyAzIGVtcHR5IGxpbmVzXG4gICAgICBibG9jay5kaXNwbGF5TGluZXMoQXJyYXkuZnJvbShBcnJheSgyKS5rZXlzKCkpLm1hcCh4ID0+IGAke3h9YCkpO1xuICAgIH0pO1xuXG4gICAgY29uc3Qgb3V0cHV0ID0gc3RkZXJyLmluc3BlY3RTeW5jKCgpID0+IHtcbiAgICAgIGJsb2NrLnJlbW92ZUVtcHR5TGluZXMoKTtcbiAgICB9KTtcbiAgICBjb25zdCBleHBlY3RlZEVtcHR5TGluZXMgPSAzO1xuICAgIGV4cGVjdChKU09OLnN0cmluZ2lmeShvdXRwdXQpKS50b0VxdWFsKEpTT04uc3RyaW5naWZ5KFtgXFx1MDAxYlske2V4cGVjdGVkRW1wdHlMaW5lc31BYF0pKTtcbiAgfSk7XG59KTtcbiJdfQ==