Skip to content

Commit

Permalink
Add tests for errorMatch
Browse files Browse the repository at this point in the history
  • Loading branch information
5n8ke committed Apr 17, 2015
1 parent a50159c commit 296f7a1
Show file tree
Hide file tree
Showing 3 changed files with 132 additions and 0 deletions.
124 changes: 124 additions & 0 deletions spec/build-spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ describe('Build', function() {
var syntaxErrorAtomBuildFile = __dirname + '/fixture/.atom-build.syntax-error.json';
var errorMatchAtomBuildFile = __dirname + '/fixture/.atom-build.error-match.json';
var errorMatchNLCAtomBuildFile = __dirname + '/fixture/.atom-build.error-match-no-line-col.json';
var errorMatchMultiAtomBuildFile = __dirname + '/fixture/.atom-build.error-match-multiple.json';
var errorMatchMultiFirstAtomBuildFile = __dirname + '/fixture/.atom-build.error-match-multiple-first.json';

var directory = null;
var workspaceElement = null;
Expand Down Expand Up @@ -788,6 +790,128 @@ describe('Build', function() {
expect(editor.getTitle()).toEqual('.atom-build.json');
});
});

it('should cycle through the file if multiple error occurred', function () {
expect(workspaceElement.querySelector('.build-confirm')).not.toExist();

fs.writeFileSync(directory + '.atom-build.json', fs.readFileSync(errorMatchMultiAtomBuildFile));
atom.commands.dispatch(workspaceElement, 'build:trigger');

waitsFor(function() {
return workspaceElement.querySelector('.build .title').classList.contains('error');
});

runs(function() {
atom.commands.dispatch(workspaceElement, 'build:error-match');
});

waitsFor(function() {
return atom.workspace.getActiveTextEditor();
});

runs(function() {
var editor = atom.workspace.getActiveTextEditor();
var bufferPosition = editor.getCursorBufferPosition();
expect(editor.getTitle()).toEqual('.atom-build.json');
expect(bufferPosition.row).toEqual(2);
expect(bufferPosition.column).toEqual(7);
atom.workspace.getActivePane().destroyActiveItem();
});

runs(function() {
atom.commands.dispatch(workspaceElement, 'build:error-match');
});

waitsFor(function() {
return atom.workspace.getActiveTextEditor();
});

runs(function() {
var editor = atom.workspace.getActiveTextEditor();
var bufferPosition = editor.getCursorBufferPosition();
expect(editor.getTitle()).toEqual('.atom-build.json');
expect(bufferPosition.row).toEqual(1);
expect(bufferPosition.column).toEqual(4);
atom.workspace.getActivePane().destroyActiveItem();
});

runs(function() {
atom.commands.dispatch(workspaceElement, 'build:error-match');
});

waitsFor(function() {
return atom.workspace.getActiveTextEditor();
});

runs(function() {
var editor = atom.workspace.getActiveTextEditor();
var bufferPosition = editor.getCursorBufferPosition();
expect(editor.getTitle()).toEqual('.atom-build.json');
expect(bufferPosition.row).toEqual(2);
expect(bufferPosition.column).toEqual(7);
});
});

it('should jump to first error', function () {
expect(workspaceElement.querySelector('.build-confirm')).not.toExist();

fs.writeFileSync(directory + '.atom-build.json', fs.readFileSync(errorMatchMultiFirstAtomBuildFile));
atom.commands.dispatch(workspaceElement, 'build:trigger');

waitsFor(function() {
return workspaceElement.querySelector('.build .title').classList.contains('error');
});

runs(function() {
atom.commands.dispatch(workspaceElement, 'build:error-match-first');
});

waitsFor(function() {
return atom.workspace.getActiveTextEditor();
});

runs(function() {
var editor = atom.workspace.getActiveTextEditor();
var bufferPosition = editor.getCursorBufferPosition();
expect(editor.getTitle()).toEqual('.atom-build.json');
expect(bufferPosition.row).toEqual(2);
expect(bufferPosition.column).toEqual(7);
atom.workspace.getActivePane().destroyActiveItem();
});

runs(function() {
atom.commands.dispatch(workspaceElement, 'build:error-match');
});

waitsFor(function() {
return atom.workspace.getActiveTextEditor();
});

runs(function() {
var editor = atom.workspace.getActiveTextEditor();
var bufferPosition = editor.getCursorBufferPosition();
expect(editor.getTitle()).toEqual('.atom-build.json');
expect(bufferPosition.row).toEqual(1);
expect(bufferPosition.column).toEqual(4);
atom.workspace.getActivePane().destroyActiveItem();
});

runs(function() {
atom.commands.dispatch(workspaceElement, 'build:error-match-first');
});

waitsFor(function() {
return atom.workspace.getActiveTextEditor();
});

runs(function() {
var editor = atom.workspace.getActiveTextEditor();
var bufferPosition = editor.getCursorBufferPosition();
expect(editor.getTitle()).toEqual('.atom-build.json');
expect(bufferPosition.row).toEqual(2);
expect(bufferPosition.column).toEqual(7);
});
});
});

describe('when multiple project roots are open', function () {
Expand Down
4 changes: 4 additions & 0 deletions spec/fixture/.atom-build.error-match-multiple-first.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"cmd": "echo 'file:.atom-build.json,line:3,column:8\nfile:.atom-build.json,line:2,column:5\nfile:.atom-build.json,line:1,column:1' && return 1",
"errorMatch": "file:(?<file>[^,]+),line:(?<line>\\d+),column:(?<col>\\d+)"
}
4 changes: 4 additions & 0 deletions spec/fixture/.atom-build.error-match-multiple.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"cmd": "echo 'file:.atom-build.json,line:3,column:8\nfile:.atom-build.json,line:2,column:5' && return 1",
"errorMatch": "file:(?<file>[^,]+),line:(?<line>\\d+),column:(?<col>\\d+)"
}

0 comments on commit 296f7a1

Please sign in to comment.