UNPKG

burp-brightscript

Version:

lightweight processor for roku brightscript projects

162 lines 7.66 kB
"use strict"; 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