Skip to content

Commit

Permalink
Fix some tests and docs, little code fix up.
Browse files Browse the repository at this point in the history
Fix some tests and docs. Add ability to run one test file with help gulp task.

Signed-off-by: Oleksandr Andriienko <oandriie@redhat.com>
  • Loading branch information
AndrienkoAleksandr authored and parisk committed Jun 30, 2017
1 parent 06411b6 commit 973038c
Show file tree
Hide file tree
Showing 8 changed files with 43 additions and 19 deletions.
17 changes: 15 additions & 2 deletions gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const sorcery = require('sorcery');
const source = require('vinyl-source-stream');
const sourcemaps = require('gulp-sourcemaps');
const ts = require('gulp-typescript');

const util = require('gulp-util');

let buildDir = process.env.BUILD_DIR || 'build';
let tsProject = ts.createProject('tsconfig.json');
Expand Down Expand Up @@ -87,13 +87,26 @@ gulp.task('mocha', ['instrument-test'], function () {
.pipe(istanbul.writeReports());
});

/**
* Run single test file by file name(without file extension). Example of the command:
* gulp mocha-test --test InputHandler.test
*/
gulp.task('mocha-test', ['instrument-test'], function () {
let testName = util.env.test;
util.log("Run test by Name: " + testName);
return gulp.src([`${outDir}/${testName}.js`, `${outDir}/**/${testName}.js`], {read: false})
.pipe(mocha())
.once('error', () => process.exit(1))
.pipe(istanbul.writeReports());
});

/**
* Use `sorcery` to resolve the source map chain and point back to the TypeScript files.
* (Without this task the source maps produced for the JavaScript bundle points into the
* compiled JavaScript files in ${outDir}/).
*/
gulp.task('sorcery', ['browserify'], function () {
var chain = sorcery.loadSync(`${buildDir}/xterm.js`);
let chain = sorcery.loadSync(`${buildDir}/xterm.js`);
chain.apply();
chain.writeSync();
});
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,8 @@
"tslint": "^4.0.2",
"typescript": "~2.2.0",
"vinyl-buffer": "^1.0.0",
"vinyl-source-stream": "^1.1.0"
"vinyl-source-stream": "^1.1.0",
"gulp-util": "^3.0.8"
},
"scripts": {
"prestart": "npm run build",
Expand Down
4 changes: 2 additions & 2 deletions src/Buffer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { CircularList } from './utils/CircularList';
* This class represents a terminal buffer (an internal state of the terminal)/
*/
export class Buffer {
public lines: CircularList<any>;
public lines: CircularList<string>;

/**
* Create a new Buffer.
Expand All @@ -29,7 +29,7 @@ export class Buffer {
public scrollTop: number = 0,
public tabs: any = {},
) {
this.lines = new CircularList(this.terminal.scrollback);
this.lines = new CircularList<string>(this.terminal.scrollback);
this.scrollBottom = this.terminal.rows - 1;
}
}
5 changes: 5 additions & 0 deletions src/SelectionManager.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { CharMeasure } from './utils/CharMeasure';
import { CircularList } from './utils/CircularList';
import { SelectionManager } from './SelectionManager';
import { SelectionModel } from './SelectionModel';
import {BufferSet} from './BufferSet';

class TestSelectionManager extends SelectionManager {
constructor(
Expand Down Expand Up @@ -45,6 +46,10 @@ describe('SelectionManager', () => {
document = window.document;
buffer = new CircularList<any>(100);
terminal = <any>{ cols: 80, rows: 2 };
terminal.scrollback = 10;
terminal.buffers = new BufferSet(terminal);
terminal.buffer = terminal.buffers.active;

selectionManager = new TestSelectionManager(terminal, buffer, rowContainer, null);
done();
});
Expand Down
5 changes: 5 additions & 0 deletions src/SelectionModel.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import { assert } from 'chai';
import { ITerminal } from './Interfaces';
import { SelectionModel } from './SelectionModel';
import {BufferSet} from './BufferSet';

class TestSelectionModel extends SelectionModel {
constructor(
Expand All @@ -22,6 +23,10 @@ describe('SelectionManager', () => {

beforeEach(() => {
terminal = <any>{ cols: 80, rows: 2, ybase: 0 };
terminal.scrollback = 10;
terminal.buffers = new BufferSet(terminal);
terminal.buffer = terminal.buffers.active;

model = new TestSelectionModel(terminal);
});

Expand Down
20 changes: 11 additions & 9 deletions src/Viewport.test.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { assert } from 'chai';
import { Viewport } from './Viewport';
import {BufferSet} from './BufferSet';

describe('Viewport', () => {
let terminal;
let viewportElement;
let selectionContainer;
let charMeasure;
let viewport;
let scrollAreaElement;
Expand All @@ -13,7 +13,6 @@ describe('Viewport', () => {

beforeEach(() => {
terminal = {
lines: [],
rows: 0,
ydisp: 0,
on: () => {},
Expand All @@ -26,8 +25,11 @@ describe('Viewport', () => {
style: {
height: 0
}
}
},
scrollback: 10
};
terminal.buffers = new BufferSet(terminal);
terminal.buffer = terminal.buffers.active;
viewportElement = {
addEventListener: () => {},
style: {
Expand Down Expand Up @@ -60,28 +62,28 @@ describe('Viewport', () => {
}, 0);
});
it('should set the height of the viewport when the line-height changed', () => {
terminal.lines.push('');
terminal.lines.push('');
terminal.buffer.lines.push('');
terminal.buffer.lines.push('');
terminal.rows = 1;
viewport.refresh();
assert.equal(viewportElement.style.height, 1 * CHARACTER_HEIGHT + 'px');
charMeasure.height = 20;
charMeasure.height = 2 * CHARACTER_HEIGHT;
viewport.refresh();
assert.equal(viewportElement.style.height, 20 + 'px');
assert.equal(viewportElement.style.height, 2 * CHARACTER_HEIGHT + 'px');
});
});

describe('syncScrollArea', () => {
it('should sync the scroll area', done => {
// Allow CharMeasure to be initialized
setTimeout(() => {
terminal.lines.push('');
terminal.buffer.lines.push('');
terminal.rows = 1;
assert.equal(scrollAreaElement.style.height, 0 * CHARACTER_HEIGHT + 'px');
viewport.syncScrollArea();
assert.equal(viewportElement.style.height, 1 * CHARACTER_HEIGHT + 'px');
assert.equal(scrollAreaElement.style.height, 1 * CHARACTER_HEIGHT + 'px');
terminal.lines.push('');
terminal.buffer.lines.push('');
viewport.syncScrollArea();
assert.equal(viewportElement.style.height, 1 * CHARACTER_HEIGHT + 'px');
assert.equal(scrollAreaElement.style.height, 2 * CHARACTER_HEIGHT + 'px');
Expand Down
4 changes: 1 addition & 3 deletions src/Viewport.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export class Viewport {
* @param terminal The terminal this viewport belongs to.
* @param viewportElement The DOM element acting as the viewport.
* @param scrollArea The DOM element acting as the scroll area.
* @param charMeasureElement A DOM element used to measure the character size of. the terminal.
* @param charMeasure A DOM element used to measure the character size of. the terminal.
*/
constructor(
private terminal: ITerminal,
Expand All @@ -42,8 +42,6 @@ export class Viewport {
/**
* Refreshes row height, setting line-height, viewport height and scroll area height if
* necessary.
* @param charSize A character size measurement bounding rect object, if it doesn't exist it will
* be created.
*/
private refresh(): void {
if (this.charMeasure.height > 0) {
Expand Down
4 changes: 2 additions & 2 deletions src/xterm.js
Original file line number Diff line number Diff line change
Expand Up @@ -405,7 +405,7 @@ Terminal.prototype.setOption = function(key, value) {
switch (key) {
case 'scrollback':
if (this.options[key] !== value) {
if (this.buffer.length > value) {
if (this.buffer.lines.length > value) {
const amountToTrim = this.buffer.lines.length - value;
const needsRefresh = (this.buffer.ydisp - amountToTrim < 0);
this.buffer.lines.trimStart(amountToTrim);
Expand Down Expand Up @@ -488,7 +488,7 @@ Terminal.prototype.blur = function() {
*/
Terminal.bindBlur = function (term) {
on(term.textarea, 'blur', function (ev) {
term.refresh(term.y, term.y);
term.refresh(term.buffer.y, term.buffer.y);
if (term.sendFocus) {
term.send(C0.ESC + '[O');
}
Expand Down

0 comments on commit 973038c

Please sign in to comment.