diff --git a/.gitignore b/.gitignore index a289018..345b12c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,18 @@ node_modules npm-debug.log +.idea/ +.tscache/ + tmp demo/dest/ + +test/fixtures/**/coffee_*.js +test/fixtures/**/coffee_*.map +test/fixtures/**/typescript_*.js +test/fixtures/**/typescript_*.map +test/fixtures/*-ts/*.js +test/fixtures/*-ts/*.js.map +demo/src/**/coffee_*.js +demo/src/**/coffee_*.map +demo/src/**/typescript_*.js +demo/src/**/typescript_*.map diff --git a/.jshintrc b/.jshintrc index f257bbd..9b221f6 100644 --- a/.jshintrc +++ b/.jshintrc @@ -21,11 +21,11 @@ "unused": "vars", "strict": true, "trailing": true, - "maxparams": 2, + "maxparams": 5, "maxdepth": 2, - "maxstatements": 8, + "maxstatements": 22, "maxcomplexity": 5, - "maxlen": 100, + "maxlen": 140, "asi": false, "boss": false, "debug": false, diff --git a/Gruntfile.js b/Gruntfile.js index 7e68bc9..6a37284 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -14,6 +14,69 @@ module.exports = function(grunt) { } }, + coffee: { + test: { + options: { + sourceMap: true, + bare: true + }, + files: [ + { + expand: true, + cwd: 'test/', + src: ['**/*.coffee'], + dest: 'test/', + ext: '.js' + } + ] + }, + demo: { + options: { + sourceMap: true, + bare: true + }, + files: [ + { + expand: true, + cwd: 'demo/src', + src: ['**/*.coffee'], + dest: 'demo/src', + ext: '.js' + } + ] + } + }, + + ts: { + options: { + comments: true, + target: 'es5', + noImplicitAny: false, + sourceMap: true + }, + test: { + options: { + module: 'commonjs' + }, + src: [ + 'test/**/*.ts', + '!test/fixtures/multi-ts/**/*.ts' + ] + }, + testConcat: { + src: [ + 'test/fixtures/multi-ts/main.ts' + ], + out: 'test/fixtures/multi-ts/concat.js' + }, + demo: { + options: { + module: 'commonjs' + }, + src: ['demo/src/**/*.ts'] + } + }, + clean: { test: ['tmp'], demo: ['demo/dest/'] @@ -62,10 +125,12 @@ module.exports = function(grunt) { grunt.loadTasks('tasks'); grunt.loadNpmTasks('grunt-contrib-jshint'); + grunt.loadNpmTasks('grunt-contrib-coffee'); + grunt.loadNpmTasks('grunt-ts'); grunt.loadNpmTasks('grunt-contrib-clean'); grunt.loadNpmTasks('grunt-contrib-nodeunit'); - grunt.registerTask('test', ['jshint', 'clean:test', 'espower:test', 'nodeunit:test']); - grunt.registerTask('demo', ['clean:demo', 'espower:demo', 'nodeunit:demo']); + grunt.registerTask('test', ['jshint', 'clean:test', 'coffee:test', 'ts:test', 'ts:testConcat', 'espower:test', 'nodeunit:test']); + grunt.registerTask('demo', ['clean:demo', 'coffee:demo', 'ts:demo', 'espower:demo', 'nodeunit:demo']); grunt.registerTask('default', ['jshint', 'test']); }; diff --git a/demo/src/tests/coffee_power_assert_demo_test.coffee b/demo/src/tests/coffee_power_assert_demo_test.coffee new file mode 100644 index 0000000..69aef21 --- /dev/null +++ b/demo/src/tests/coffee_power_assert_demo_test.coffee @@ -0,0 +1,49 @@ +'use strict' + +empower = require 'empower' +formatter = require('power-assert-formatter')() +empowerOptions = {destructive: false, modifyMessageOnRethrow: false, saveContextOnRethrow: false} +require('source-map-support').install() + +exports.coffee = + setUp: (done) -> + done() + + demo1: (test) -> + test = empower test, formatter, empowerOptions + + test.expect 1 + + three = 3 + five = 5 + test.ok three == five, 'MESSAGE' + + test.done() + + demo2: (test) -> + test = empower test, formatter, empowerOptions + + test.expect 1 + + one = 1 + two = 2 + three = 3 + seven = 7 + ten = 10 + test.ok (three * (seven * ten)) == three + + test.done() + + demo3: (test) -> + test = empower test, formatter, empowerOptions + + test.expect 1 + + one = 1 + two = 2 + three = 3 + seven = 7 + ten = 10 + test.equal three * (seven * ten), three + + test.done() diff --git a/demo/src/tests/typescript_power_assert_demo_test.ts b/demo/src/tests/typescript_power_assert_demo_test.ts new file mode 100644 index 0000000..2164c6e --- /dev/null +++ b/demo/src/tests/typescript_power_assert_demo_test.ts @@ -0,0 +1,47 @@ +declare var require:any; +declare var describe:any; +declare var it:any; +declare var beforeEach:any; + +'use strict'; + +var empower = require('empower'), + formatter = require('power-assert-formatter')(), + empowerOptions = {destructive: false, modifyMessageOnRethrow: false, saveContextOnRethrow: false}; + +export var typescript = { + setUp: function(done) { + done(); + }, + demo1: function(test) { + test = empower(test, formatter, empowerOptions); + + test.expect(1); + + var three = 3, + five = 5; + test.ok(three == five, 'MESSAGE'); + + test.done(); + }, + demo2: function(test) { + test = empower(test, formatter, empowerOptions); + + test.expect(1); + + var one = 1, two = 2, three = 3, seven = 7, ten = 10; + test.ok((three * (seven * ten)) === three); + + test.done(); + }, + demo3: function(test) { + test = empower(test, formatter, empowerOptions); + + test.expect(1); + + var one = 1, two = 2, three = 3, seven = 7, ten = 10; + test.equal(three * (seven * ten), three); + + test.done(); + } +}; diff --git a/package.json b/package.json index af6fe6a..8da8d64 100644 --- a/package.json +++ b/package.json @@ -26,18 +26,27 @@ "test": "grunt test" }, "dependencies": { - "espower-source": "~0.8.0" + "convert-source-map": "~0.4.0", + "escodegen": "~1.3.3", + "espower": "~0.9.0", + "esprima": "~1.2.2", + "multi-stage-sourcemap": "~0.2.1", + "xtend": "~4.0.0" }, "devDependencies": { "empower": "~0.8.0", - "power-assert-formatter": "~0.8.0", - "grunt-contrib-jshint": "~0.10.0", + "grunt": "~0.4.2", "grunt-contrib-clean": "~0.6.0", + "grunt-contrib-coffee": "^0.11.1", + "grunt-contrib-jshint": "~0.10.0", "grunt-contrib-nodeunit": "~0.4.1", - "grunt": "~0.4.2" + "grunt-ts": "^1.11.7", + "power-assert-formatter": "~0.8.0", + "source-map-support": "^0.2.7", + "typescript": "^1.0.1" }, "peerDependencies": { - "grunt": "~0.4.1" + "grunt": "~0.4.2" }, "author": { "name": "Takuto Wada", diff --git a/tasks/espower.js b/tasks/espower.js index d5bc7a9..cb21679 100644 --- a/tasks/espower.js +++ b/tasks/espower.js @@ -7,12 +7,105 @@ * Licensed under the MIT license. * https://github.com/twada/grunt-espower/blob/master/LICENSE-MIT */ -var fs = require('fs'), - espowerSource = require('espower-source'); +'use strict'; -module.exports = function(grunt) { - 'use strict'; +var path = require('path'), + espower = require('espower'), + esprima = require('esprima'), + escodegen = require('escodegen'), + extend = require('xtend'), + convert = require('convert-source-map'), + transfer = require('multi-stage-sourcemap').transfer; + +function mergeSourceMap(incomingSourceMap, outgoingSourceMap) { + if (typeof outgoingSourceMap === 'string' || outgoingSourceMap instanceof String) { + outgoingSourceMap = JSON.parse(outgoingSourceMap); + } + if (!incomingSourceMap) { + return outgoingSourceMap; + } + return JSON.parse(transfer({fromSourceMap: outgoingSourceMap, toSourceMap: incomingSourceMap})); +} + +function resolveOutgoingSourcesInfo(grunt, filepath, dest, inMap) { + // NOTE https://gist.github.com/twada/103d34a3237cecd463a6#comment-1288208 + var incomingWorkingDir = path.relative(path.dirname(inMap.sourcemap.file), path.dirname(filepath)); + var destTo = path.resolve(process.cwd(), dest); + + var sourceRoot = path.relative(path.dirname(destTo), incomingWorkingDir); + var sources = inMap.sourcemap.sources + .map(function (src) { + // to full path + return path.resolve(incomingWorkingDir, inMap.sourcemap.sourceRoot || '', src); + }) + .map(function (src) { + var rootPath = path.resolve(path.dirname(destTo), sourceRoot); + return path.relative(rootPath, src); + }); + var sourcesContent = inMap.sourcemap.sourcesContent || inMap.sourcemap.sources + .map(function (src) { + var fullpath = path.resolve(incomingWorkingDir, inMap.sourcemap.sourceRoot || '', src); + return grunt.file.read(fullpath); + }); + + return { + sourceRoot: sourceRoot, + sources: sources, + sourcesContent: sourcesContent + }; +} + +function espowerSource(grunt, jsCode, filepath, dest, options) { + var jsAst, espowerOptions, modifiedAst, escodegenOutput, resolved; + jsAst = esprima.parse(jsCode, { + tolerant: true, + loc: true, + tokens: true, + raw: true, + source: filepath + }); + var inMap = convert.fromSource(jsCode) || convert.fromMapFileSource(jsCode, path.dirname(filepath)); + espowerOptions = extend(espower.defaultOptions(), options, { + destructive: true, + path: filepath, + sourceMap: inMap ? inMap.sourcemap : void 0 + }); + modifiedAst = espower(jsAst, espowerOptions); + escodegenOutput = escodegen.generate(modifiedAst, { + sourceMap: true, + sourceMapWithCode: true + }); + var outMap = convert.fromJSON(escodegenOutput.map.toString()); + if (inMap) { + var mergedRawMap = mergeSourceMap(inMap.toObject(), outMap.toObject()); + resolved = resolveOutgoingSourcesInfo(grunt, filepath, dest, inMap); + + outMap = convert.fromObject(mergedRawMap); + outMap.sourcemap.file = path.basename(dest); + outMap.sourcemap.sourceRoot = resolved.sourceRoot; + outMap.sourcemap.sources = resolved.sources; + outMap.sourcemap.sourcesContent = resolved.sourcesContent; + } else { + inMap = { + sourcemap: { + file: path.basename(dest), + sources: [path.basename(filepath)], + sourceRoot: '', + sourcesContent: [jsCode] + } + }; + resolved = resolveOutgoingSourcesInfo(grunt, filepath, dest, inMap); + + outMap.sourcemap.file = path.basename(dest); + outMap.sourcemap.sourceRoot = resolved.sourceRoot; + outMap.sourcemap.sources = resolved.sources; + outMap.sourcemap.sourcesContent = resolved.sourcesContent; + } + return escodegenOutput.code + '\n' + outMap.toComment() + '\n'; +} + +module.exports = function(grunt) { grunt.registerMultiTask('espower', 'instrument power assert feature into code.', function() { // Merge task-specific and/or target-specific options with these defaults. var options = this.options(); @@ -28,9 +121,9 @@ module.exports = function(grunt) { return true; }).forEach(function(filepath) { var modifiedSource, - jsCode = fs.readFileSync(filepath, 'utf-8'); + jsCode = grunt.file.read(filepath); grunt.verbose.writeln('espower src: ' + f.src); - modifiedSource = espowerSource(jsCode, filepath, options); + modifiedSource = espowerSource(grunt, jsCode, filepath, f.dest, options); grunt.file.write(f.dest, modifiedSource); grunt.verbose.writeln('espower dest: ' + f.dest); }); diff --git a/test/espower_test.js b/test/espower_test.js index 03e0e3e..cebf535 100644 --- a/test/espower_test.js +++ b/test/espower_test.js @@ -27,14 +27,58 @@ exports.espower = { setUp: function(done) { done(); }, - instrumentationTest: function(test) { + jsInstrumentationTest: function(test) { test.expect(3); var outputPath = 'tmp/mocha_node.js'; test.ok(grunt.file.exists(outputPath)); test.ok(grunt.file.isFile(outputPath)); test.equal(fs.readFileSync(outputPath, 'utf8'), - fs.readFileSync('test/expected/mocha_node.js', 'utf8')); + fs.readFileSync('test/expected/mocha_node.js', 'utf8')); + + test.done(); + }, + coffeeInstrumentationTest: function(test) { + test.expect(3); + + var outputPath = 'tmp/coffee_mocha_node.js'; + test.ok(grunt.file.exists(outputPath)); + test.ok(grunt.file.isFile(outputPath)); + test.equal(fs.readFileSync(outputPath, 'utf8'), + fs.readFileSync('test/expected/coffee_mocha_node.js', 'utf8')); + + test.done(); + }, + typescriptInstrumentationTest: function(test) { + test.expect(3); + + var outputPath = 'tmp/typescript_mocha_node.js'; + test.ok(grunt.file.exists(outputPath)); + test.ok(grunt.file.isFile(outputPath)); + test.equal(fs.readFileSync(outputPath, 'utf8'), + fs.readFileSync('test/expected/typescript_mocha_node.js', 'utf8')); + + test.done(); + }, + typescriptInstrumentationBase64CommentTest: function(test) { + test.expect(3); + + var outputPath = 'tmp/mocha_test_sm_base64comment.js'; + test.ok(grunt.file.exists(outputPath)); + test.ok(grunt.file.isFile(outputPath)); + test.equal(fs.readFileSync(outputPath, 'utf8'), + fs.readFileSync('test/expected/mocha_test_sm_base64comment.js', 'utf8')); + + test.done(); + }, + typescriptMultiSourceTest: function(test) { + test.expect(3); + + var outputPath = 'tmp/multi-ts/concat.js'; + test.ok(grunt.file.exists(outputPath)); + test.ok(grunt.file.isFile(outputPath)); + test.equal(fs.readFileSync(outputPath, 'utf8'), + fs.readFileSync('test/expected/multi-ts/concat.js', 'utf8')); test.done(); }, diff --git a/test/expected/coffee_mocha_node.js b/test/expected/coffee_mocha_node.js new file mode 100644 index 0000000..ed82687 --- /dev/null +++ b/test/expected/coffee_mocha_node.js @@ -0,0 +1,34 @@ +var assert; +assert = require('power-assert'); +describe('Array', function () { + beforeEach(function () { + return this.ary = [ + 1, + 2, + 3 + ]; + }); + return describe('#indexOf()', function () { + it('should return -1 when the value is not present', function () { + var two, zero; + zero = 0; + two = 2; + return assert(assert._expr(assert._capt(assert._capt(assert._capt(this.ary, 'arguments/0/left/callee/object').indexOf(assert._capt(zero, 'arguments/0/left/arguments/0')), 'arguments/0/left') === assert._capt(two, 'arguments/0/right'), 'arguments/0'), { + content: 'assert(this.ary.indexOf(zero) === two)', + filepath: 'coffee_mocha_node.coffee', + line: 11 + })); + }); + return it('should return index when the value is present', function () { + var minusOne, two; + minusOne = -1; + two = 2; + return assert.ok(assert._expr(assert._capt(assert._capt(assert._capt(this.ary, 'arguments/0/left/callee/object').indexOf(assert._capt(two, 'arguments/0/left/arguments/0')), 'arguments/0/left') === assert._capt(minusOne, 'arguments/0/right'), 'arguments/0'), { + content: 'assert.ok(this.ary.indexOf(two) === minusOne, \'THIS IS AN ASSERTION MESSAGE\')', + filepath: 'coffee_mocha_node.coffee', + line: 16 + }), 'THIS IS AN ASSERTION MESSAGE'); + }); + }); +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvZmZlZV9tb2NoYV9ub2RlLmNvZmZlZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFBLE1BQUE7QUFBQSxNQUFBLEdBQVMsT0FBQSxDQUFRLGNBQVIsQ0FBVCxDQUFBO0FBQUEsUUFBQSxDQUVTLE9BRlQsRUFFa0IsWUFBQTtBQUFBLElBQ2hCLFVBQUEsQ0FBVyxZQUFBO0FBQUEsZUFDVCxLQUFDLEdBQUQsR0FBTztBQUFBLFlBQUMsQ0FBRDtBQUFBLFlBQUcsQ0FBSDtBQUFBLFlBQUssQ0FBTDtBQUFBLFVBREU7QUFBQSxLQUFYLEVBRGdCO0FBQUEsV0FJaEIsUUFBQSxDQUFTLFlBQVQsRUFBdUIsWUFBQTtBQUFBLFFBQ3JCLEVBQUEsQ0FBRyxnREFBSCxFQUFxRCxZQUFBO0FBQUEsWUFDbkQsSUFBQSxHQUFBLEVBQUEsSUFBQSxDQURtRDtBQUFBLFlBQ25ELElBQUEsR0FBTyxDQUFQLENBRG1EO0FBQUEsWUFFbkQsR0FBQSxHQUFNLENBQU4sQ0FGbUQ7QUFBQSxtQkFHbkQsTUFBQSxDQUFPLE1BQUEsQ0FBQSxLQUFBLENBQUEsTUFBQSxDQUFBLEtBQUEsQ0FBQSxNQUFBLENBQUEsS0FBQSxDQUFBLE1BQUEsQ0FBQSxLQUFBLE1BQUMsR0FBRCxvQ0FBSyxPQUFMLENBQWEsTUFBQSxDQUFBLEtBQUEsQ0FBQSxJQUFBLGlDQUFiLDJCQUFzQixNQUFBLENBQUEsS0FBQSxDQUFBLEdBQUEsc0JBQXRCO0FBQUEsZ0JBQUEsT0FBQTtBQUFBLGdCQUFBLFFBQUE7QUFBQSxnQkFBQSxJQUFBO0FBQUEsY0FBUCxFQUhtRDtBQUFBLFNBQXJELEVBRHFCO0FBQUEsZUFNckIsRUFBQSxDQUFHLCtDQUFILEVBQW9ELFlBQUE7QUFBQSxZQUNsRCxJQUFBLFFBQUEsRUFBQSxHQUFBLENBRGtEO0FBQUEsWUFDbEQsUUFBQSxHQUFXLENBQUEsQ0FBWCxDQURrRDtBQUFBLFlBRWxELEdBQUEsR0FBTSxDQUFOLENBRmtEO0FBQUEsbUJBR2xELE1BQUEsQ0FBTyxFQUFQLENBQVUsTUFBQSxDQUFBLEtBQUEsQ0FBQSxNQUFBLENBQUEsS0FBQSxDQUFBLE1BQUEsQ0FBQSxLQUFBLENBQUEsTUFBQSxDQUFBLEtBQUEsTUFBQyxHQUFELG9DQUFLLE9BQUwsQ0FBYSxNQUFBLENBQUEsS0FBQSxDQUFBLEdBQUEsaUNBQWIsMkJBQXFCLE1BQUEsQ0FBQSxLQUFBLENBQUEsUUFBQSxzQkFBckI7QUFBQSxnQkFBQSxPQUFBO0FBQUEsZ0JBQUEsUUFBQTtBQUFBLGdCQUFBLElBQUE7QUFBQSxjQUFWLEVBQXlDLDhCQUF6QyxFQUhrRDtBQUFBLFNBQXBELEVBTnFCO0FBQUEsS0FBdkIsRUFKZ0I7QUFBQSxDQUZsQiIsImZpbGUiOiJjb2ZmZWVfbW9jaGFfbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIuLi90ZXN0L2ZpeHR1cmVzIiwic291cmNlc0NvbnRlbnQiOlsiYXNzZXJ0ID0gcmVxdWlyZSAncG93ZXItYXNzZXJ0J1xuXG5kZXNjcmliZSAnQXJyYXknLCAoKSAtPlxuICBiZWZvcmVFYWNoICgpIC0+XG4gICAgQGFyeSA9IFsxLDIsM107XG5cbiAgZGVzY3JpYmUgJyNpbmRleE9mKCknLCAoKSAtPlxuICAgIGl0ICdzaG91bGQgcmV0dXJuIC0xIHdoZW4gdGhlIHZhbHVlIGlzIG5vdCBwcmVzZW50JywgKCkgLT5cbiAgICAgIHplcm8gPSAwXG4gICAgICB0d28gPSAyXG4gICAgICBhc3NlcnQgQGFyeS5pbmRleE9mKHplcm8pID09IHR3b1xuXG4gICAgaXQgJ3Nob3VsZCByZXR1cm4gaW5kZXggd2hlbiB0aGUgdmFsdWUgaXMgcHJlc2VudCcsICgpIC0+XG4gICAgICBtaW51c09uZSA9IC0xXG4gICAgICB0d28gPSAyXG4gICAgICBhc3NlcnQub2sgQGFyeS5pbmRleE9mKHR3bykgPT0gbWludXNPbmUsICdUSElTIElTIEFOIEFTU0VSVElPTiBNRVNTQUdFJ1xuIl19 diff --git a/test/expected/mocha_node.js b/test/expected/mocha_node.js index 3b3dd37..f56faf4 100644 --- a/test/expected/mocha_node.js +++ b/test/expected/mocha_node.js @@ -26,4 +26,4 @@ describe('Array', function () { }); }); }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZml4dHVyZXMvbW9jaGFfbm9kZS5qcyJdLCJuYW1lcyI6WyJhc3NlcnQiLCJyZXF1aXJlIiwiZGVzY3JpYmUiLCJiZWZvcmVFYWNoIiwiYXJ5IiwiaXQiLCJ6ZXJvIiwidHdvIiwiX2V4cHIiLCJfY2FwdCIsImluZGV4T2YiLCJjb250ZW50IiwiZmlsZXBhdGgiLCJsaW5lIiwibWludXNPbmUiLCJvayJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsTUFBQSxHQUFTQyxPQUFBLENBQVEsY0FBUixDQUFiO0FBRUFDLFFBQUEsQ0FBUyxPQUFULEVBQWtCLFlBQVU7QUFBQSxJQUN4QkMsVUFBQSxDQUFXLFlBQVU7QUFBQSxRQUNqQixLQUFLQyxHQUFMLEdBQVc7QUFBQSxZQUFDLENBQUQ7QUFBQSxZQUFHLENBQUg7QUFBQSxZQUFLLENBQUw7QUFBQSxTQUFYLENBRGlCO0FBQUEsS0FBckIsRUFEd0I7QUFBQSxJQUl4QkYsUUFBQSxDQUFTLFlBQVQsRUFBdUIsWUFBVTtBQUFBLFFBQzdCRyxFQUFBLENBQUcsZ0RBQUgsRUFBcUQsWUFBVTtBQUFBLFlBQzNELElBQUlDLElBQUEsR0FBTyxDQUFYLEVBQWNDLEdBQUEsR0FBTSxDQUFwQixDQUQyRDtBQUFBLFlBRTNEUCxNQUFBLENBQU9BLE1BQUEsQ0FBQVEsS0FBQSxDQUFBUixNQUFBLENBQUFTLEtBQUEsQ0FBQVQsTUFBQSxDQUFBUyxLQUFBLENBQUFULE1BQUEsQ0FBQVMsS0FBQSxNQUFLTCxHQUFMLG9DQUFTTSxPQUFULENBQWlCVixNQUFBLENBQUFTLEtBQUEsQ0FBQUgsSUFBQSxpQ0FBakIsMkJBQTJCTixNQUFBLENBQUFTLEtBQUEsQ0FBQUYsR0FBQSxzQkFBM0I7QUFBQSxnQkFBQUksT0FBQTtBQUFBLGdCQUFBQyxRQUFBO0FBQUEsZ0JBQUFDLElBQUE7QUFBQSxjQUFQLEVBRjJEO0FBQUEsU0FBL0QsRUFENkI7QUFBQSxRQUs3QlIsRUFBQSxDQUFHLCtDQUFILEVBQW9ELFlBQVU7QUFBQSxZQUMxRCxJQUFJUyxRQUFBLEdBQVcsQ0FBQyxDQUFoQixFQUFtQlAsR0FBQSxHQUFNLENBQXpCLENBRDBEO0FBQUEsWUFFMURQLE1BQUEsQ0FBT2UsRUFBUCxDQUFVZixNQUFBLENBQUFRLEtBQUEsQ0FBQVIsTUFBQSxDQUFBUyxLQUFBLENBQUFULE1BQUEsQ0FBQVMsS0FBQSxDQUFBVCxNQUFBLENBQUFTLEtBQUEsTUFBS0wsR0FBTCxvQ0FBU00sT0FBVCxDQUFpQlYsTUFBQSxDQUFBUyxLQUFBLENBQUFGLEdBQUEsaUNBQWpCLDJCQUEwQlAsTUFBQSxDQUFBUyxLQUFBLENBQUFLLFFBQUEsc0JBQTFCO0FBQUEsZ0JBQUFILE9BQUE7QUFBQSxnQkFBQUMsUUFBQTtBQUFBLGdCQUFBQyxJQUFBO0FBQUEsY0FBVixFQUE4Qyw4QkFBOUMsRUFGMEQ7QUFBQSxTQUE5RCxFQUw2QjtBQUFBLEtBQWpDLEVBSndCO0FBQUEsQ0FBNUIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgYXNzZXJ0ID0gcmVxdWlyZSgncG93ZXItYXNzZXJ0Jyk7XG5cbmRlc2NyaWJlKCdBcnJheScsIGZ1bmN0aW9uKCl7XG4gICAgYmVmb3JlRWFjaChmdW5jdGlvbigpe1xuICAgICAgICB0aGlzLmFyeSA9IFsxLDIsM107XG4gICAgfSk7XG4gICAgZGVzY3JpYmUoJyNpbmRleE9mKCknLCBmdW5jdGlvbigpe1xuICAgICAgICBpdCgnc2hvdWxkIHJldHVybiAtMSB3aGVuIHRoZSB2YWx1ZSBpcyBub3QgcHJlc2VudCcsIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB2YXIgemVybyA9IDAsIHR3byA9IDI7XG4gICAgICAgICAgICBhc3NlcnQodGhpcy5hcnkuaW5kZXhPZih6ZXJvKSA9PT0gdHdvKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGluZGV4IHdoZW4gdGhlIHZhbHVlIGlzIHByZXNlbnQnLCBmdW5jdGlvbigpe1xuICAgICAgICAgICAgdmFyIG1pbnVzT25lID0gLTEsIHR3byA9IDI7XG4gICAgICAgICAgICBhc3NlcnQub2sodGhpcy5hcnkuaW5kZXhPZih0d28pID09PSBtaW51c09uZSwgJ1RISVMgSVMgQU4gQVNTRVJUSU9OIE1FU1NBR0UnKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59KTtcbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vY2hhX25vZGUuanMiXSwibmFtZXMiOlsiYXNzZXJ0IiwicmVxdWlyZSIsImRlc2NyaWJlIiwiYmVmb3JlRWFjaCIsImFyeSIsIml0IiwiemVybyIsInR3byIsIl9leHByIiwiX2NhcHQiLCJpbmRleE9mIiwiY29udGVudCIsImZpbGVwYXRoIiwibGluZSIsIm1pbnVzT25lIiwib2siXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLE1BQUEsR0FBU0MsT0FBQSxDQUFRLGNBQVIsQ0FBYjtBQUVBQyxRQUFBLENBQVMsT0FBVCxFQUFrQixZQUFVO0FBQUEsSUFDeEJDLFVBQUEsQ0FBVyxZQUFVO0FBQUEsUUFDakIsS0FBS0MsR0FBTCxHQUFXO0FBQUEsWUFBQyxDQUFEO0FBQUEsWUFBRyxDQUFIO0FBQUEsWUFBSyxDQUFMO0FBQUEsU0FBWCxDQURpQjtBQUFBLEtBQXJCLEVBRHdCO0FBQUEsSUFJeEJGLFFBQUEsQ0FBUyxZQUFULEVBQXVCLFlBQVU7QUFBQSxRQUM3QkcsRUFBQSxDQUFHLGdEQUFILEVBQXFELFlBQVU7QUFBQSxZQUMzRCxJQUFJQyxJQUFBLEdBQU8sQ0FBWCxFQUFjQyxHQUFBLEdBQU0sQ0FBcEIsQ0FEMkQ7QUFBQSxZQUUzRFAsTUFBQSxDQUFPQSxNQUFBLENBQUFRLEtBQUEsQ0FBQVIsTUFBQSxDQUFBUyxLQUFBLENBQUFULE1BQUEsQ0FBQVMsS0FBQSxDQUFBVCxNQUFBLENBQUFTLEtBQUEsTUFBS0wsR0FBTCxvQ0FBU00sT0FBVCxDQUFpQlYsTUFBQSxDQUFBUyxLQUFBLENBQUFILElBQUEsaUNBQWpCLDJCQUEyQk4sTUFBQSxDQUFBUyxLQUFBLENBQUFGLEdBQUEsc0JBQTNCO0FBQUEsZ0JBQUFJLE9BQUE7QUFBQSxnQkFBQUMsUUFBQTtBQUFBLGdCQUFBQyxJQUFBO0FBQUEsY0FBUCxFQUYyRDtBQUFBLFNBQS9ELEVBRDZCO0FBQUEsUUFLN0JSLEVBQUEsQ0FBRywrQ0FBSCxFQUFvRCxZQUFVO0FBQUEsWUFDMUQsSUFBSVMsUUFBQSxHQUFXLENBQUMsQ0FBaEIsRUFBbUJQLEdBQUEsR0FBTSxDQUF6QixDQUQwRDtBQUFBLFlBRTFEUCxNQUFBLENBQU9lLEVBQVAsQ0FBVWYsTUFBQSxDQUFBUSxLQUFBLENBQUFSLE1BQUEsQ0FBQVMsS0FBQSxDQUFBVCxNQUFBLENBQUFTLEtBQUEsQ0FBQVQsTUFBQSxDQUFBUyxLQUFBLE1BQUtMLEdBQUwsb0NBQVNNLE9BQVQsQ0FBaUJWLE1BQUEsQ0FBQVMsS0FBQSxDQUFBRixHQUFBLGlDQUFqQiwyQkFBMEJQLE1BQUEsQ0FBQVMsS0FBQSxDQUFBSyxRQUFBLHNCQUExQjtBQUFBLGdCQUFBSCxPQUFBO0FBQUEsZ0JBQUFDLFFBQUE7QUFBQSxnQkFBQUMsSUFBQTtBQUFBLGNBQVYsRUFBOEMsOEJBQTlDLEVBRjBEO0FBQUEsU0FBOUQsRUFMNkI7QUFBQSxLQUFqQyxFQUp3QjtBQUFBLENBQTVCIiwiZmlsZSI6Im1vY2hhX25vZGUuanMiLCJzb3VyY2VSb290IjoiLi4vdGVzdC9maXh0dXJlcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBhc3NlcnQgPSByZXF1aXJlKCdwb3dlci1hc3NlcnQnKTtcblxuZGVzY3JpYmUoJ0FycmF5JywgZnVuY3Rpb24oKXtcbiAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uKCl7XG4gICAgICAgIHRoaXMuYXJ5ID0gWzEsMiwzXTtcbiAgICB9KTtcbiAgICBkZXNjcmliZSgnI2luZGV4T2YoKScsIGZ1bmN0aW9uKCl7XG4gICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIC0xIHdoZW4gdGhlIHZhbHVlIGlzIG5vdCBwcmVzZW50JywgZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHZhciB6ZXJvID0gMCwgdHdvID0gMjtcbiAgICAgICAgICAgIGFzc2VydCh0aGlzLmFyeS5pbmRleE9mKHplcm8pID09PSB0d28pO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gaW5kZXggd2hlbiB0aGUgdmFsdWUgaXMgcHJlc2VudCcsIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB2YXIgbWludXNPbmUgPSAtMSwgdHdvID0gMjtcbiAgICAgICAgICAgIGFzc2VydC5vayh0aGlzLmFyeS5pbmRleE9mKHR3bykgPT09IG1pbnVzT25lLCAnVEhJUyBJUyBBTiBBU1NFUlRJT04gTUVTU0FHRScpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn0pO1xuIl19 diff --git a/test/expected/mocha_test_sm_base64comment.js b/test/expected/mocha_test_sm_base64comment.js new file mode 100644 index 0000000..4a87b8b --- /dev/null +++ b/test/expected/mocha_test_sm_base64comment.js @@ -0,0 +1,30 @@ +var assert = require('power-assert'); +describe('Array', function () { + var ary; + beforeEach(function () { + ary = [ + 1, + 2, + 3 + ]; + }); + describe('#indexOf()', function () { + it('should return -1 when the value is not present', function () { + var zero = 0, two = 2; + assert(assert._expr(assert._capt(assert._capt(assert._capt(ary, 'arguments/0/left/callee/object').indexOf(assert._capt(zero, 'arguments/0/left/arguments/0')), 'arguments/0/left') === assert._capt(two, 'arguments/0/right'), 'arguments/0'), { + content: 'assert(ary.indexOf(zero) === two)', + filepath: 'typescript_mocha_node.ts', + line: 18 + })); + }); + it('should return index when the value is present', function () { + var minusOne = -1, two = 2; + assert.ok(assert._expr(assert._capt(assert._capt(assert._capt(ary, 'arguments/0/left/callee/object').indexOf(assert._capt(two, 'arguments/0/left/arguments/0')), 'arguments/0/left') === assert._capt(minusOne, 'arguments/0/right'), 'arguments/0'), { + content: 'assert.ok(ary.indexOf(two) === minusOne, \'THIS IS AN ASSERTION MESSAGE\')', + filepath: 'typescript_mocha_node.ts', + line: 22 + }), 'THIS IS AN ASSERTION MESSAGE'); + }); + }); +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInR5cGVzY3JpcHRfbW9jaGFfbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxJQUFJLE1BQUEsR0FBUyxPQUFBLENBQVEsY0FBUixDQUFiO0FBRUEsUUFBQSxDQUFTLE9BQVQsRUFBa0IsWUFBQTtBQUFBLElBQ2QsSUFBSSxHQUFKLENBRGM7QUFBQSxJQUdkLFVBQUEsQ0FBVyxZQUFBO0FBQUEsUUFDUCxHQUFBLEdBQU07QUFBQSxZQUFDLENBQUQ7QUFBQSxZQUFJLENBQUo7QUFBQSxZQUFPLENBQVA7QUFBQSxTQUFOLENBRE87QUFBQSxLQUFYLEVBSGM7QUFBQSxJQU9kLFFBQUEsQ0FBUyxZQUFULEVBQXVCLFlBQUE7QUFBQSxRQUNuQixFQUFBLENBQUcsZ0RBQUgsRUFBcUQsWUFBQTtBQUFBLFlBQ2pELElBQUksSUFBQSxHQUFPLENBQVgsRUFBYyxHQUFBLEdBQU0sQ0FBcEIsQ0FEaUQ7QUFBQSxZQUVqRCxNQUFBLENBQU8sTUFBQSxDQUFBLEtBQUEsQ0FBQSxNQUFBLENBQUEsS0FBQSxDQUFBLE1BQUEsQ0FBQSxLQUFBLENBQUEsTUFBQSxDQUFBLEtBQUEsQ0FBQSxHQUFBLG9DQUFJLE9BQUosQ0FBWSxNQUFBLENBQUEsS0FBQSxDQUFBLElBQUEsaUNBQVosMkJBQXNCLE1BQUEsQ0FBQSxLQUFBLENBQUEsR0FBQSxzQkFBdEI7QUFBQSxnQkFBQSxPQUFBO0FBQUEsZ0JBQUEsUUFBQTtBQUFBLGdCQUFBLElBQUE7QUFBQSxjQUFQLEVBRmlEO0FBQUEsU0FBckQsRUFEbUI7QUFBQSxRQUtuQixFQUFBLENBQUcsK0NBQUgsRUFBb0QsWUFBQTtBQUFBLFlBQ2hELElBQUksUUFBQSxHQUFXLENBQUMsQ0FBaEIsRUFBbUIsR0FBQSxHQUFNLENBQXpCLENBRGdEO0FBQUEsWUFFaEQsTUFBQSxDQUFPLEVBQVAsQ0FBVSxNQUFBLENBQUEsS0FBQSxDQUFBLE1BQUEsQ0FBQSxLQUFBLENBQUEsTUFBQSxDQUFBLEtBQUEsQ0FBQSxNQUFBLENBQUEsS0FBQSxDQUFBLEdBQUEsb0NBQUksT0FBSixDQUFZLE1BQUEsQ0FBQSxLQUFBLENBQUEsR0FBQSxpQ0FBWiwyQkFBcUIsTUFBQSxDQUFBLEtBQUEsQ0FBQSxRQUFBLHNCQUFyQjtBQUFBLGdCQUFBLE9BQUE7QUFBQSxnQkFBQSxRQUFBO0FBQUEsZ0JBQUEsSUFBQTtBQUFBLGNBQVYsRUFBeUMsOEJBQXpDLEVBRmdEO0FBQUEsU0FBcEQsRUFMbUI7QUFBQSxLQUF2QixFQVBjO0FBQUEsQ0FBbEIiLCJmaWxlIjoibW9jaGFfdGVzdF9zbV9iYXNlNjRjb21tZW50LmpzIiwic291cmNlUm9vdCI6Ii4uL3Rlc3QvZml4dHVyZXMiLCJzb3VyY2VzQ29udGVudCI6WyJkZWNsYXJlIHZhciByZXF1aXJlOmFueTtcbmRlY2xhcmUgdmFyIGRlc2NyaWJlOmFueTtcbmRlY2xhcmUgdmFyIGl0OmFueTtcbmRlY2xhcmUgdmFyIGJlZm9yZUVhY2g6YW55O1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgncG93ZXItYXNzZXJ0Jyk7XG5cbmRlc2NyaWJlKCdBcnJheScsICgpID0+IHtcbiAgICB2YXIgYXJ5OiBudW1iZXJbXTtcblxuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgICBhcnkgPSBbMSwgMiwgM107XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnI2luZGV4T2YoKScsICgpID0+IHtcbiAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gLTEgd2hlbiB0aGUgdmFsdWUgaXMgbm90IHByZXNlbnQnLCAoKSA9PiB7XG4gICAgICAgICAgICB2YXIgemVybyA9IDAsIHR3byA9IDI7XG4gICAgICAgICAgICBhc3NlcnQoYXJ5LmluZGV4T2YoemVybykgPT09IHR3byk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBpbmRleCB3aGVuIHRoZSB2YWx1ZSBpcyBwcmVzZW50JywgKCkgPT4ge1xuICAgICAgICAgICAgdmFyIG1pbnVzT25lID0gLTEsIHR3byA9IDI7XG4gICAgICAgICAgICBhc3NlcnQub2soYXJ5LmluZGV4T2YodHdvKSA9PT0gbWludXNPbmUsICdUSElTIElTIEFOIEFTU0VSVElPTiBNRVNTQUdFJyk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufSk7XG4iXX0= diff --git a/test/expected/multi-ts/concat.js b/test/expected/multi-ts/concat.js new file mode 100644 index 0000000..d68cffe --- /dev/null +++ b/test/expected/multi-ts/concat.js @@ -0,0 +1,41 @@ +var Util; +(function (Util) { + function hello(target) { + if (typeof target === 'undefined') { + target = 'world'; + } + assert(assert._expr(assert._capt(assert._capt(target, 'arguments/0/left') != null, 'arguments/0'), { + content: 'assert(target != null)', + filepath: 'util1.ts', + line: 3 + })); + return 'Hello, ' + target + '!'; + } + Util.hello = hello; +}(Util || (Util = {}))); +var Util; +(function (Util) { + function bye(target) { + if (typeof target === 'undefined') { + target = 'world'; + } + assert(assert._expr(assert._capt(assert._capt(target, 'arguments/0/left') != null, 'arguments/0'), { + content: 'assert(target != null)', + filepath: 'subdir/util2.ts', + line: 3 + })); + return 'Good bye, ' + target + '!'; + } + Util.bye = bye; +}(Util || (Util = {}))); +assert(assert._expr(assert._capt(assert._capt(assert._capt(Util, 'arguments/0/left/callee/object').hello('grunt-espower'), 'arguments/0/left') === 'Hello, grunt-espower!', 'arguments/0'), { + content: 'assert(Util.hello("grunt-espower") === "Hello, grunt-espower!")', + filepath: 'main.ts', + line: 6 +})); +assert(assert._expr(assert._capt(assert._capt(assert._capt(Util, 'arguments/0/left/callee/object').bye('grunt-espower'), 'arguments/0/left') === 'Good bye, grunt-espower!', 'arguments/0'), { + content: 'assert(Util.bye("grunt-espower") === "Good bye, grunt-espower!")', + filepath: 'main.ts', + line: 7 +})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWwxLnRzIiwic3ViZGlyL3V0aWwyLnRzIiwibWFpbi50cyJdLCJuYW1lcyI6WyJVdGlsIiwiVXRpbC5oZWxsbyIsIlV0aWwuYnllIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFPLElBQVA7QUFLQyxDQUxELFVBQU8sSUFBUCxFQUFXO0FBQUEsSUFDUEEsU0FBZ0JBLEtBQWhCQSxDQUFzQkEsTUFBdEJBLEVBQXNDQTtBQUFBQSxRQUFoQkMsSUFBQUEsT0FBQUEsTUFBQUEsS0FBQUEsV0FBQUEsRUFBQUE7QUFBQUEsWUFBQUEsTUFBQUEsR0FBU0EsT0FBVEEsQ0FBQUE7QUFBQUEsU0FBZ0JEO0FBQUFBLFFBQ2xDQyxNQUFBQSxDQUFPQSxNQUFBQSxDQUFBQSxLQUFBQSxDQUFBQSxNQUFBQSxDQUFBQSxLQUFBQSxDQUFBQSxNQUFBQSxDQUFBQSxLQUFBQSxDQUFBQSxNQUFBQSx5QkFBVUEsSUFBVkE7QUFBQUEsWUFBQUEsT0FBQUE7QUFBQUEsWUFBQUEsUUFBQUE7QUFBQUEsWUFBQUEsSUFBQUE7QUFBQUEsVUFBUEEsRUFEa0NEO0FBQUFBLFFBRWxDQyxPQUFPQSxZQUFZQSxNQUFaQSxHQUFxQkEsR0FBNUJBLENBRmtDRDtBQUFBQSxLQUQvQjtBQUFBLElBQ1BBLElBQUFBLENBQUFBLEtBQUFBLEdBQUFBLEtBQUFBLENBRE87QUFBQSxDQUtWLENBQUFBLElBQUFBLElBQUFBLENBQUFBLElBQUFBLEdBQUFBLEVBQUFBLENBQUEsR0FMRDtBQ0FBLElBQU8sSUFBUCxDREFBO0FDS0MsQ0FMRCxVQUFPLElBQVAsRUFBVztBQUFBLElBQ1BBLFNBQWdCQSxHQUFoQkEsQ0FBb0JBLE1BQXBCQSxFQUFvQ0E7QUFBQUEsUUFBaEJFLElBQUFBLE9BQUFBLE1BQUFBLEtBQUFBLFdBQUFBLEVBQUFBO0FBQUFBLFlBQUFBLE1BQUFBLEdBQVNBLE9BQVRBLENBQUFBO0FBQUFBLFNBQWdCRjtBQUFBQSxRQUNoQ0UsTUFBQUEsQ0FBT0EsTUFBQUEsQ0FBQUEsS0FBQUEsQ0FBQUEsTUFBQUEsQ0FBQUEsS0FBQUEsQ0FBQUEsTUFBQUEsQ0FBQUEsS0FBQUEsQ0FBQUEsTUFBQUEseUJBQVVBLElBQVZBO0FBQUFBLFlBQUFBLE9BQUFBO0FBQUFBLFlBQUFBLFFBQUFBO0FBQUFBLFlBQUFBLElBQUFBO0FBQUFBLFVBQVBBLEVBRGdDRjtBQUFBQSxRQUVoQ0UsT0FBT0EsZUFBZUEsTUFBZkEsR0FBd0JBLEdBQS9CQSxDQUZnQ0Y7QUFBQUEsS0FEN0I7QUFBQSxJQUNQQSxJQUFBQSxDQUFBQSxHQUFBQSxHQUFBQSxHQUFBQSxDQURPO0FBQUEsQ0FLVixDQUFBQSxJQUFBQSxJQUFBQSxDQUFBQSxJQUFBQSxHQUFBQSxFQUFBQSxDQUFBLEdETEQ7QUVLQSxNQUFBLENBQU8sTUFBQSxDQUFBLEtBQUEsQ0FBQSxNQUFBLENBQUEsS0FBQSxDQUFBLE1BQUEsQ0FBQSxLQUFBLENBQUEsTUFBQSxDQUFBLEtBQUEsQ0FBQSxJQUFBLG9DQUFLLEtBQUwsQ0FBVyxlQUFYLDJCQUFnQyx1QkFBaEM7QUFBQSxJQUFBLE9BQUE7QUFBQSxJQUFBLFFBQUE7QUFBQSxJQUFBLElBQUE7QUFBQSxFQUFQLEVGTEE7QUVNQSxNQUFBLENBQU8sTUFBQSxDQUFBLEtBQUEsQ0FBQSxNQUFBLENBQUEsS0FBQSxDQUFBLE1BQUEsQ0FBQSxLQUFBLENBQUEsTUFBQSxDQUFBLEtBQUEsQ0FBQSxJQUFBLG9DQUFLLEdBQUwsQ0FBUyxlQUFULDJCQUE4QiwwQkFBOUI7QUFBQSxJQUFBLE9BQUE7QUFBQSxJQUFBLFFBQUE7QUFBQSxJQUFBLElBQUE7QUFBQSxFQUFQIiwiZmlsZSI6ImNvbmNhdC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi90ZXN0L2ZpeHR1cmVzL211bHRpLXRzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlIFV0aWwge1xuICAgIGV4cG9ydCBmdW5jdGlvbiBoZWxsbyh0YXJnZXQgPSBcIndvcmxkXCIpIHtcbiAgICAgICAgYXNzZXJ0KHRhcmdldCAhPSBudWxsKTtcbiAgICAgICAgcmV0dXJuIFwiSGVsbG8sIFwiICsgdGFyZ2V0ICsgXCIhXCI7XG4gICAgfVxufVxuIiwibW9kdWxlIFV0aWwge1xuICAgIGV4cG9ydCBmdW5jdGlvbiBieWUodGFyZ2V0ID0gXCJ3b3JsZFwiKSB7XG4gICAgICAgIGFzc2VydCh0YXJnZXQgIT0gbnVsbCk7XG4gICAgICAgIHJldHVybiBcIkdvb2QgYnllLCBcIiArIHRhcmdldCArIFwiIVwiO1xuICAgIH1cbn1cbiIsIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL3V0aWwxLnRzXCIgLz5cbi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL3N1YmRpci91dGlsMi50c1wiIC8+XG5cbmRlY2xhcmUgdmFyIGFzc2VydDogYW55O1xuXG5hc3NlcnQoVXRpbC5oZWxsbyhcImdydW50LWVzcG93ZXJcIikgPT09IFwiSGVsbG8sIGdydW50LWVzcG93ZXIhXCIpO1xuYXNzZXJ0KFV0aWwuYnllKFwiZ3J1bnQtZXNwb3dlclwiKSA9PT0gXCJHb29kIGJ5ZSwgZ3J1bnQtZXNwb3dlciFcIik7XG4iXX0= diff --git a/test/expected/subdir/test_in_subdir.js b/test/expected/subdir/test_in_subdir.js index b2c9061..3ef193b 100644 --- a/test/expected/subdir/test_in_subdir.js +++ b/test/expected/subdir/test_in_subdir.js @@ -26,4 +26,4 @@ describe('Array', function () { }); }); }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZml4dHVyZXMvc3ViZGlyL3Rlc3RfaW5fc3ViZGlyLmpzIl0sIm5hbWVzIjpbImFzc2VydCIsInJlcXVpcmUiLCJkZXNjcmliZSIsImJlZm9yZUVhY2giLCJhcnkiLCJpdCIsInplcm8iLCJ0d28iLCJfZXhwciIsIl9jYXB0IiwiaW5kZXhPZiIsImNvbnRlbnQiLCJmaWxlcGF0aCIsImxpbmUiLCJtaW51c09uZSIsIm9rIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFJQSxNQUFBLEdBQVNDLE9BQUEsQ0FBUSxjQUFSLENBQWI7QUFFQUMsUUFBQSxDQUFTLE9BQVQsRUFBa0IsWUFBVTtBQUFBLElBQ3hCQyxVQUFBLENBQVcsWUFBVTtBQUFBLFFBQ2pCLEtBQUtDLEdBQUwsR0FBVztBQUFBLFlBQUMsQ0FBRDtBQUFBLFlBQUcsQ0FBSDtBQUFBLFlBQUssQ0FBTDtBQUFBLFNBQVgsQ0FEaUI7QUFBQSxLQUFyQixFQUR3QjtBQUFBLElBSXhCRixRQUFBLENBQVMsWUFBVCxFQUF1QixZQUFVO0FBQUEsUUFDN0JHLEVBQUEsQ0FBRyxnREFBSCxFQUFxRCxZQUFVO0FBQUEsWUFDM0QsSUFBSUMsSUFBQSxHQUFPLENBQVgsRUFBY0MsR0FBQSxHQUFNLENBQXBCLENBRDJEO0FBQUEsWUFFM0RQLE1BQUEsQ0FBT0EsTUFBQSxDQUFBUSxLQUFBLENBQUFSLE1BQUEsQ0FBQVMsS0FBQSxDQUFBVCxNQUFBLENBQUFTLEtBQUEsQ0FBQVQsTUFBQSxDQUFBUyxLQUFBLE1BQUtMLEdBQUwsb0NBQVNNLE9BQVQsQ0FBaUJWLE1BQUEsQ0FBQVMsS0FBQSxDQUFBSCxJQUFBLGlDQUFqQiwyQkFBMkJOLE1BQUEsQ0FBQVMsS0FBQSxDQUFBRixHQUFBLHNCQUEzQjtBQUFBLGdCQUFBSSxPQUFBO0FBQUEsZ0JBQUFDLFFBQUE7QUFBQSxnQkFBQUMsSUFBQTtBQUFBLGNBQVAsRUFGMkQ7QUFBQSxTQUEvRCxFQUQ2QjtBQUFBLFFBSzdCUixFQUFBLENBQUcsK0NBQUgsRUFBb0QsWUFBVTtBQUFBLFlBQzFELElBQUlTLFFBQUEsR0FBVyxDQUFDLENBQWhCLEVBQW1CUCxHQUFBLEdBQU0sQ0FBekIsQ0FEMEQ7QUFBQSxZQUUxRFAsTUFBQSxDQUFPZSxFQUFQLENBQVVmLE1BQUEsQ0FBQVEsS0FBQSxDQUFBUixNQUFBLENBQUFTLEtBQUEsQ0FBQVQsTUFBQSxDQUFBUyxLQUFBLENBQUFULE1BQUEsQ0FBQVMsS0FBQSxNQUFLTCxHQUFMLG9DQUFTTSxPQUFULENBQWlCVixNQUFBLENBQUFTLEtBQUEsQ0FBQUYsR0FBQSxpQ0FBakIsMkJBQTBCUCxNQUFBLENBQUFTLEtBQUEsQ0FBQUssUUFBQSxzQkFBMUI7QUFBQSxnQkFBQUgsT0FBQTtBQUFBLGdCQUFBQyxRQUFBO0FBQUEsZ0JBQUFDLElBQUE7QUFBQSxjQUFWLEVBQThDLDhCQUE5QyxFQUYwRDtBQUFBLFNBQTlELEVBTDZCO0FBQUEsS0FBakMsRUFKd0I7QUFBQSxDQUE1QiIsInNvdXJjZXNDb250ZW50IjpbInZhciBhc3NlcnQgPSByZXF1aXJlKCdwb3dlci1hc3NlcnQnKTtcblxuZGVzY3JpYmUoJ0FycmF5JywgZnVuY3Rpb24oKXtcbiAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uKCl7XG4gICAgICAgIHRoaXMuYXJ5ID0gWzEsMiwzXTtcbiAgICB9KTtcbiAgICBkZXNjcmliZSgnI2luZGV4T2YoKScsIGZ1bmN0aW9uKCl7XG4gICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIC0xIHdoZW4gdGhlIHZhbHVlIGlzIG5vdCBwcmVzZW50JywgZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHZhciB6ZXJvID0gMCwgdHdvID0gMjtcbiAgICAgICAgICAgIGFzc2VydCh0aGlzLmFyeS5pbmRleE9mKHplcm8pID09PSB0d28pO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gaW5kZXggd2hlbiB0aGUgdmFsdWUgaXMgcHJlc2VudCcsIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB2YXIgbWludXNPbmUgPSAtMSwgdHdvID0gMjtcbiAgICAgICAgICAgIGFzc2VydC5vayh0aGlzLmFyeS5pbmRleE9mKHR3bykgPT09IG1pbnVzT25lLCAnVEhJUyBJUyBBTiBBU1NFUlRJT04gTUVTU0FHRScpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn0pO1xuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3RfaW5fc3ViZGlyLmpzIl0sIm5hbWVzIjpbImFzc2VydCIsInJlcXVpcmUiLCJkZXNjcmliZSIsImJlZm9yZUVhY2giLCJhcnkiLCJpdCIsInplcm8iLCJ0d28iLCJfZXhwciIsIl9jYXB0IiwiaW5kZXhPZiIsImNvbnRlbnQiLCJmaWxlcGF0aCIsImxpbmUiLCJtaW51c09uZSIsIm9rIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFJQSxNQUFBLEdBQVNDLE9BQUEsQ0FBUSxjQUFSLENBQWI7QUFFQUMsUUFBQSxDQUFTLE9BQVQsRUFBa0IsWUFBVTtBQUFBLElBQ3hCQyxVQUFBLENBQVcsWUFBVTtBQUFBLFFBQ2pCLEtBQUtDLEdBQUwsR0FBVztBQUFBLFlBQUMsQ0FBRDtBQUFBLFlBQUcsQ0FBSDtBQUFBLFlBQUssQ0FBTDtBQUFBLFNBQVgsQ0FEaUI7QUFBQSxLQUFyQixFQUR3QjtBQUFBLElBSXhCRixRQUFBLENBQVMsWUFBVCxFQUF1QixZQUFVO0FBQUEsUUFDN0JHLEVBQUEsQ0FBRyxnREFBSCxFQUFxRCxZQUFVO0FBQUEsWUFDM0QsSUFBSUMsSUFBQSxHQUFPLENBQVgsRUFBY0MsR0FBQSxHQUFNLENBQXBCLENBRDJEO0FBQUEsWUFFM0RQLE1BQUEsQ0FBT0EsTUFBQSxDQUFBUSxLQUFBLENBQUFSLE1BQUEsQ0FBQVMsS0FBQSxDQUFBVCxNQUFBLENBQUFTLEtBQUEsQ0FBQVQsTUFBQSxDQUFBUyxLQUFBLE1BQUtMLEdBQUwsb0NBQVNNLE9BQVQsQ0FBaUJWLE1BQUEsQ0FBQVMsS0FBQSxDQUFBSCxJQUFBLGlDQUFqQiwyQkFBMkJOLE1BQUEsQ0FBQVMsS0FBQSxDQUFBRixHQUFBLHNCQUEzQjtBQUFBLGdCQUFBSSxPQUFBO0FBQUEsZ0JBQUFDLFFBQUE7QUFBQSxnQkFBQUMsSUFBQTtBQUFBLGNBQVAsRUFGMkQ7QUFBQSxTQUEvRCxFQUQ2QjtBQUFBLFFBSzdCUixFQUFBLENBQUcsK0NBQUgsRUFBb0QsWUFBVTtBQUFBLFlBQzFELElBQUlTLFFBQUEsR0FBVyxDQUFDLENBQWhCLEVBQW1CUCxHQUFBLEdBQU0sQ0FBekIsQ0FEMEQ7QUFBQSxZQUUxRFAsTUFBQSxDQUFPZSxFQUFQLENBQVVmLE1BQUEsQ0FBQVEsS0FBQSxDQUFBUixNQUFBLENBQUFTLEtBQUEsQ0FBQVQsTUFBQSxDQUFBUyxLQUFBLENBQUFULE1BQUEsQ0FBQVMsS0FBQSxNQUFLTCxHQUFMLG9DQUFTTSxPQUFULENBQWlCVixNQUFBLENBQUFTLEtBQUEsQ0FBQUYsR0FBQSxpQ0FBakIsMkJBQTBCUCxNQUFBLENBQUFTLEtBQUEsQ0FBQUssUUFBQSxzQkFBMUI7QUFBQSxnQkFBQUgsT0FBQTtBQUFBLGdCQUFBQyxRQUFBO0FBQUEsZ0JBQUFDLElBQUE7QUFBQSxjQUFWLEVBQThDLDhCQUE5QyxFQUYwRDtBQUFBLFNBQTlELEVBTDZCO0FBQUEsS0FBakMsRUFKd0I7QUFBQSxDQUE1QiIsImZpbGUiOiJ0ZXN0X2luX3N1YmRpci5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi90ZXN0L2ZpeHR1cmVzL3N1YmRpciIsInNvdXJjZXNDb250ZW50IjpbInZhciBhc3NlcnQgPSByZXF1aXJlKCdwb3dlci1hc3NlcnQnKTtcblxuZGVzY3JpYmUoJ0FycmF5JywgZnVuY3Rpb24oKXtcbiAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uKCl7XG4gICAgICAgIHRoaXMuYXJ5ID0gWzEsMiwzXTtcbiAgICB9KTtcbiAgICBkZXNjcmliZSgnI2luZGV4T2YoKScsIGZ1bmN0aW9uKCl7XG4gICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIC0xIHdoZW4gdGhlIHZhbHVlIGlzIG5vdCBwcmVzZW50JywgZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHZhciB6ZXJvID0gMCwgdHdvID0gMjtcbiAgICAgICAgICAgIGFzc2VydCh0aGlzLmFyeS5pbmRleE9mKHplcm8pID09PSB0d28pO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gaW5kZXggd2hlbiB0aGUgdmFsdWUgaXMgcHJlc2VudCcsIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB2YXIgbWludXNPbmUgPSAtMSwgdHdvID0gMjtcbiAgICAgICAgICAgIGFzc2VydC5vayh0aGlzLmFyeS5pbmRleE9mKHR3bykgPT09IG1pbnVzT25lLCAnVEhJUyBJUyBBTiBBU1NFUlRJT04gTUVTU0FHRScpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn0pO1xuIl19 diff --git a/test/expected/typescript_mocha_node.js b/test/expected/typescript_mocha_node.js new file mode 100644 index 0000000..f0c4c03 --- /dev/null +++ b/test/expected/typescript_mocha_node.js @@ -0,0 +1,30 @@ +var assert = require('power-assert'); +describe('Array', function () { + var ary; + beforeEach(function () { + ary = [ + 1, + 2, + 3 + ]; + }); + describe('#indexOf()', function () { + it('should return -1 when the value is not present', function () { + var zero = 0, two = 2; + assert(assert._expr(assert._capt(assert._capt(assert._capt(ary, 'arguments/0/left/callee/object').indexOf(assert._capt(zero, 'arguments/0/left/arguments/0')), 'arguments/0/left') === assert._capt(two, 'arguments/0/right'), 'arguments/0'), { + content: 'assert(ary.indexOf(zero) === two)', + filepath: 'typescript_mocha_node.ts', + line: 18 + })); + }); + it('should return index when the value is present', function () { + var minusOne = -1, two = 2; + assert.ok(assert._expr(assert._capt(assert._capt(assert._capt(ary, 'arguments/0/left/callee/object').indexOf(assert._capt(two, 'arguments/0/left/arguments/0')), 'arguments/0/left') === assert._capt(minusOne, 'arguments/0/right'), 'arguments/0'), { + content: 'assert.ok(ary.indexOf(two) === minusOne, \'THIS IS AN ASSERTION MESSAGE\')', + filepath: 'typescript_mocha_node.ts', + line: 22 + }), 'THIS IS AN ASSERTION MESSAGE'); + }); + }); +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInR5cGVzY3JpcHRfbW9jaGFfbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxJQUFJLE1BQUEsR0FBUyxPQUFBLENBQVEsY0FBUixDQUFiO0FBRUEsUUFBQSxDQUFTLE9BQVQsRUFBa0IsWUFBQTtBQUFBLElBQ2QsSUFBSSxHQUFKLENBRGM7QUFBQSxJQUdkLFVBQUEsQ0FBVyxZQUFBO0FBQUEsUUFDUCxHQUFBLEdBQU07QUFBQSxZQUFDLENBQUQ7QUFBQSxZQUFJLENBQUo7QUFBQSxZQUFPLENBQVA7QUFBQSxTQUFOLENBRE87QUFBQSxLQUFYLEVBSGM7QUFBQSxJQU9kLFFBQUEsQ0FBUyxZQUFULEVBQXVCLFlBQUE7QUFBQSxRQUNuQixFQUFBLENBQUcsZ0RBQUgsRUFBcUQsWUFBQTtBQUFBLFlBQ2pELElBQUksSUFBQSxHQUFPLENBQVgsRUFBYyxHQUFBLEdBQU0sQ0FBcEIsQ0FEaUQ7QUFBQSxZQUVqRCxNQUFBLENBQU8sTUFBQSxDQUFBLEtBQUEsQ0FBQSxNQUFBLENBQUEsS0FBQSxDQUFBLE1BQUEsQ0FBQSxLQUFBLENBQUEsTUFBQSxDQUFBLEtBQUEsQ0FBQSxHQUFBLG9DQUFJLE9BQUosQ0FBWSxNQUFBLENBQUEsS0FBQSxDQUFBLElBQUEsaUNBQVosMkJBQXNCLE1BQUEsQ0FBQSxLQUFBLENBQUEsR0FBQSxzQkFBdEI7QUFBQSxnQkFBQSxPQUFBO0FBQUEsZ0JBQUEsUUFBQTtBQUFBLGdCQUFBLElBQUE7QUFBQSxjQUFQLEVBRmlEO0FBQUEsU0FBckQsRUFEbUI7QUFBQSxRQUtuQixFQUFBLENBQUcsK0NBQUgsRUFBb0QsWUFBQTtBQUFBLFlBQ2hELElBQUksUUFBQSxHQUFXLENBQUMsQ0FBaEIsRUFBbUIsR0FBQSxHQUFNLENBQXpCLENBRGdEO0FBQUEsWUFFaEQsTUFBQSxDQUFPLEVBQVAsQ0FBVSxNQUFBLENBQUEsS0FBQSxDQUFBLE1BQUEsQ0FBQSxLQUFBLENBQUEsTUFBQSxDQUFBLEtBQUEsQ0FBQSxNQUFBLENBQUEsS0FBQSxDQUFBLEdBQUEsb0NBQUksT0FBSixDQUFZLE1BQUEsQ0FBQSxLQUFBLENBQUEsR0FBQSxpQ0FBWiwyQkFBcUIsTUFBQSxDQUFBLEtBQUEsQ0FBQSxRQUFBLHNCQUFyQjtBQUFBLGdCQUFBLE9BQUE7QUFBQSxnQkFBQSxRQUFBO0FBQUEsZ0JBQUEsSUFBQTtBQUFBLGNBQVYsRUFBeUMsOEJBQXpDLEVBRmdEO0FBQUEsU0FBcEQsRUFMbUI7QUFBQSxLQUF2QixFQVBjO0FBQUEsQ0FBbEIiLCJmaWxlIjoidHlwZXNjcmlwdF9tb2NoYV9ub2RlLmpzIiwic291cmNlUm9vdCI6Ii4uL3Rlc3QvZml4dHVyZXMiLCJzb3VyY2VzQ29udGVudCI6WyJkZWNsYXJlIHZhciByZXF1aXJlOmFueTtcbmRlY2xhcmUgdmFyIGRlc2NyaWJlOmFueTtcbmRlY2xhcmUgdmFyIGl0OmFueTtcbmRlY2xhcmUgdmFyIGJlZm9yZUVhY2g6YW55O1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgncG93ZXItYXNzZXJ0Jyk7XG5cbmRlc2NyaWJlKCdBcnJheScsICgpID0+IHtcbiAgICB2YXIgYXJ5OiBudW1iZXJbXTtcblxuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgICBhcnkgPSBbMSwgMiwgM107XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnI2luZGV4T2YoKScsICgpID0+IHtcbiAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gLTEgd2hlbiB0aGUgdmFsdWUgaXMgbm90IHByZXNlbnQnLCAoKSA9PiB7XG4gICAgICAgICAgICB2YXIgemVybyA9IDAsIHR3byA9IDI7XG4gICAgICAgICAgICBhc3NlcnQoYXJ5LmluZGV4T2YoemVybykgPT09IHR3byk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBpbmRleCB3aGVuIHRoZSB2YWx1ZSBpcyBwcmVzZW50JywgKCkgPT4ge1xuICAgICAgICAgICAgdmFyIG1pbnVzT25lID0gLTEsIHR3byA9IDI7XG4gICAgICAgICAgICBhc3NlcnQub2soYXJ5LmluZGV4T2YodHdvKSA9PT0gbWludXNPbmUsICdUSElTIElTIEFOIEFTU0VSVElPTiBNRVNTQUdFJyk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufSk7XG4iXX0= diff --git a/test/fixtures/coffee_mocha_node.coffee b/test/fixtures/coffee_mocha_node.coffee new file mode 100644 index 0000000..d6f62d0 --- /dev/null +++ b/test/fixtures/coffee_mocha_node.coffee @@ -0,0 +1,16 @@ +assert = require 'power-assert' + +describe 'Array', () -> + beforeEach () -> + @ary = [1,2,3]; + + describe '#indexOf()', () -> + it 'should return -1 when the value is not present', () -> + zero = 0 + two = 2 + assert @ary.indexOf(zero) == two + + it 'should return index when the value is present', () -> + minusOne = -1 + two = 2 + assert.ok @ary.indexOf(two) == minusOne, 'THIS IS AN ASSERTION MESSAGE' diff --git a/test/fixtures/mocha_test_sm_base64comment.js b/test/fixtures/mocha_test_sm_base64comment.js new file mode 100644 index 0000000..10597e9 --- /dev/null +++ b/test/fixtures/mocha_test_sm_base64comment.js @@ -0,0 +1,21 @@ +var assert = require('power-assert'); + +describe('Array', function () { + var ary; + + beforeEach(function () { + ary = [1, 2, 3]; + }); + + describe('#indexOf()', function () { + it('should return -1 when the value is not present', function () { + var zero = 0, two = 2; + assert(ary.indexOf(zero) === two); + }); + it('should return index when the value is present', function () { + var minusOne = -1, two = 2; + assert.ok(ary.indexOf(two) === minusOne, 'THIS IS AN ASSERTION MESSAGE'); + }); + }); +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdF9tb2NoYV9ub2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidHlwZXNjcmlwdF9tb2NoYV9ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7O0FBRXBDLFFBQVEsQ0FBQyxPQUFPLEVBQUU7SUFDZCxJQUFJLEdBQUc7O0lBRVAsVUFBVSxDQUFDO1FBQ1AsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkIsQ0FBQyxDQUFDOztJQUVGLFFBQVEsQ0FBQyxZQUFZLEVBQUU7UUFDbkIsRUFBRSxDQUFDLGdEQUFnRCxFQUFFO1lBQ2pELElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQztZQUNyQixNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUM7UUFDckMsQ0FBQyxDQUFDO1FBQ0YsRUFBRSxDQUFDLCtDQUErQyxFQUFFO1lBQ2hELElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDO1lBQzFCLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLEVBQUUsOEJBQThCLENBQUM7UUFDNUUsQ0FBQyxDQUFDO0lBQ04sQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDIn0= diff --git a/test/fixtures/multi-ts/main.ts b/test/fixtures/multi-ts/main.ts new file mode 100644 index 0000000..5431a71 --- /dev/null +++ b/test/fixtures/multi-ts/main.ts @@ -0,0 +1,7 @@ +/// +/// + +declare var assert: any; + +assert(Util.hello("grunt-espower") === "Hello, grunt-espower!"); +assert(Util.bye("grunt-espower") === "Good bye, grunt-espower!"); diff --git a/test/fixtures/multi-ts/subdir/util2.ts b/test/fixtures/multi-ts/subdir/util2.ts new file mode 100644 index 0000000..265e4e1 --- /dev/null +++ b/test/fixtures/multi-ts/subdir/util2.ts @@ -0,0 +1,6 @@ +module Util { + export function bye(target = "world") { + assert(target != null); + return "Good bye, " + target + "!"; + } +} diff --git a/test/fixtures/multi-ts/util1.ts b/test/fixtures/multi-ts/util1.ts new file mode 100644 index 0000000..6210bc8 --- /dev/null +++ b/test/fixtures/multi-ts/util1.ts @@ -0,0 +1,6 @@ +module Util { + export function hello(target = "world") { + assert(target != null); + return "Hello, " + target + "!"; + } +} diff --git a/test/fixtures/typescript_mocha_node.ts b/test/fixtures/typescript_mocha_node.ts new file mode 100644 index 0000000..84d3254 --- /dev/null +++ b/test/fixtures/typescript_mocha_node.ts @@ -0,0 +1,25 @@ +declare var require:any; +declare var describe:any; +declare var it:any; +declare var beforeEach:any; + +var assert = require('power-assert'); + +describe('Array', () => { + var ary: number[]; + + beforeEach(() => { + ary = [1, 2, 3]; + }); + + describe('#indexOf()', () => { + it('should return -1 when the value is not present', () => { + var zero = 0, two = 2; + assert(ary.indexOf(zero) === two); + }); + it('should return index when the value is present', () => { + var minusOne = -1, two = 2; + assert.ok(ary.indexOf(two) === minusOne, 'THIS IS AN ASSERTION MESSAGE'); + }); + }); +});