burp-brightscript
Version:
lightweight processor for roku brightscript projects
162 lines • 7.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var chai = require("chai");
var fs = require("fs-extra");
var chai_1 = require("chai");
var path = require("path");
var FileDescriptor_1 = require("./FileDescriptor");
var FileProcessor_1 = require("./FileProcessor");
var chaiSubset = require('chai-subset');
chai.use(chaiSubset);
var processor;
var sourcePath = path.resolve(__dirname, '../test/stubProject');
var targetPath = 'build';
function clearFiles() {
fs.removeSync(targetPath);
}
function copyFiles() {
try {
fs.copySync(sourcePath, targetPath);
}
catch (err) {
console.error(err);
}
}
var config;
describe('FileProcessor tests', function () {
beforeEach(function () {
clearFiles();
copyFiles();
config = {
sourcePath: targetPath,
globPattern: '**/*.brs',
replacements: []
};
});
describe('Initialization', function () {
it('correctly sets source paths and config', function () {
processor = new FileProcessor_1.FileProcessor(config);
chai_1.expect(processor).to.not.be.null;
});
});
describe('getFunctionFromLine', function () {
it('checks non function lines', function () {
processor = new FileProcessor_1.FileProcessor(config);
chai_1.expect(processor.getFunctionFromLine('')).to.be.null;
chai_1.expect(processor.getFunctionFromLine(' ')).to.be.null;
chai_1.expect(processor.getFunctionFromLine(' m.this = "someValue')).to.be.null;
chai_1.expect(processor.getFunctionFromLine("' function long_word_Different1(with Args) as void")).to.be.null;
chai_1.expect(processor.getFunctionFromLine("'function foo() as void")).to.be.null;
});
it('checks function lines', function () {
processor = new FileProcessor_1.FileProcessor(config);
chai_1.expect(processor.getFunctionFromLine('function foo() as void')).to.equal('foo');
chai_1.expect(processor.getFunctionFromLine('sub foo() as void')).to.equal('foo');
chai_1.expect(processor.getFunctionFromLine(' sub foo() as void')).to.equal('foo');
chai_1.expect(processor.getFunctionFromLine(' function foo() as void')).to.equal('foo');
chai_1.expect(processor.getFunctionFromLine(' function long_word_Different1() as void')).to.equal('long_word_Different1');
chai_1.expect(processor.getFunctionFromLine(' function long_word_Different1(with Args) as void')).to.equal('long_word_Different1');
});
});
describe('processFile', function () {
beforeEach(function () {
clearFiles();
copyFiles();
config = {
sourcePath: targetPath,
globPattern: '**/*.brs',
replacements: []
};
});
it('ignores null file descriptor', function () {
config.replacements = [{
regex: '.*',
replacement: '#CommentLine#'
}];
processor = new FileProcessor_1.FileProcessor(config);
var result = processor.processFile(null);
chai_1.expect(result).to.be.false;
});
it('comments out all lines', function () {
config.replacements = [{
regex: '.*',
replacement: '#CommentLine#'
}];
processor = new FileProcessor_1.FileProcessor(config);
var fileDescriptor = new FileDescriptor_1.default("build/source/tests", "VideoModuleTests.brs", ".brs");
var result = processor.processFile(fileDescriptor);
chai_1.expect(result).to.be.true;
});
it('comments out all lines with print statements', function () {
config.replacements = [{
regex: '^.*\\?',
replacement: '#CommentLine#'
}];
processor = new FileProcessor_1.FileProcessor(config);
var fileDescriptor = new FileDescriptor_1.default("build/source/tests", "VideoModuleTests.brs", ".brs");
var result = processor.processFile(fileDescriptor);
chai_1.expect(result).to.be.true;
});
it('replaces print contents with line number', function () {
config.replacements = [{
regex: '(^.*\\?\\s*\\")',
replacement: '$1#LineNumber#'
}];
processor = new FileProcessor_1.FileProcessor(config);
var fileDescriptor = new FileDescriptor_1.default("build/source/tests", "VideoModuleTests.brs", ".brs");
var result = processor.processFile(fileDescriptor);
chai_1.expect(result).to.be.true;
});
it('replaces print contents with full file path', function () {
config.replacements = [{
regex: '(^.*\\?\\s*\\")',
replacement: '$1#FullPath#'
}];
processor = new FileProcessor_1.FileProcessor(config);
var fileDescriptor = new FileDescriptor_1.default("build/source/tests", "VideoModuleTests.brs", ".brs");
var result = processor.processFile(fileDescriptor);
chai_1.expect(result).to.be.true;
});
it('replaces print contents with full file path and method', function () {
config.replacements = [{
regex: '(^.*\\?\\s*\\")',
replacement: '$1#FullPath#.#FunctionName#'
}];
processor = new FileProcessor_1.FileProcessor(config);
var fileDescriptor = new FileDescriptor_1.default("build/source/tests", "VideoModuleTests.brs", ".brs");
var result = processor.processFile(fileDescriptor);
chai_1.expect(result).to.be.true;
});
it('replaces print contents with file name and method', function () {
config.replacements = [{
regex: '(^.*\\?\\s*\\")',
replacement: '$1#FileName#.#FunctionName#'
}];
processor = new FileProcessor_1.FileProcessor(config);
var fileDescriptor = new FileDescriptor_1.default("build/source/tests", "VideoModuleTests.brs", ".brs");
var result = processor.processFile(fileDescriptor);
chai_1.expect(result).to.be.true;
});
it('replaces print contents with file name, method and line number', function () {
config.replacements = [{
regex: '(^.*\\?\\s*\\")',
replacement: '$1#FileName#.#FunctionName#(#LineNumber#) '
}];
processor = new FileProcessor_1.FileProcessor(config);
var fileDescriptor = new FileDescriptor_1.default("build/source/tests", "VideoModuleTests.brs", ".brs");
var result = processor.processFile(fileDescriptor);
chai_1.expect(result).to.be.true;
});
it('replaces print contents with full location', function () {
config.replacements = [{
regex: '(^.*\\?\\s*\\")',
replacement: '$1#Location#'
}];
processor = new FileProcessor_1.FileProcessor(config);
var fileDescriptor = new FileDescriptor_1.default("build/source/tests", "VideoModuleTests.brs", ".brs");
var result = processor.processFile(fileDescriptor);
chai_1.expect(result).to.be.true;
});
});
});
//# sourceMappingURL=FileProcessor.spec.js.map