123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- 'use strict';
- /*jshint asi: true*/
- var test = require('tap').test
- , util = require('util')
- , redeyed = require('..')
- function inspect (obj) {
- return util.inspect(obj, false, 5, true)
- }
-
- test('given i skip 2 more tokens after each semicolon', function (t) {
- var calls = 0
- , opts = {
- Punctuator: {
- ';': function identity (s, info) {
- // tell it to skip past second to last token that is 2 ahead of the current one
- calls++
- var skipToken = info.tokens[info.tokenIndex + 2]
- return skipToken ? { replacement: s, skipPastToken: skipToken } : s;
- }
- }
- }
- ;
- [ { code: ';;;' , expectedCalls: 1 }
- , { code: ';;;;' , expectedCalls: 2 }
- , { code: '; ; ; ;' , expectedCalls: 2 }
- , { code: ';;; ;;; ;;; ;' , expectedCalls: 4 }
- , { code: ';;; ;;; ;;; ;;; ;' , expectedCalls: 5 }
- , { code: ';;; ;;; ;;; ;;; ;;;' , expectedCalls: 5 }
- , { code: ';;; ;;; ;;; ;;; ;;; ;' , expectedCalls: 6 }
- ].forEach(function (x) {
- calls = 0
- redeyed(x.code, opts);
- t.equals(calls, x.expectedCalls, 'calls ' + x.expectedCalls + ' times for ' + x.code)
- });
- t.end()
- })
- test('replace log', function (t) {
- var kinds = [ 'info', 'warn', 'error' ]
- , opts = {
- Identifier: {
- console: function replaceLog(s, info) {
- var code = info.code
- , idx = info.tokenIndex
- , tokens = info.tokens
- , kind = tokens[idx + 2].value
- , openParen = tokens[idx + 3].value
- , firstArgTkn = tokens[idx + 4]
- , argIdx = idx + 3
- , open
- , tkn
- ;
- open = 1;
- while (open) {
- tkn = tokens[++argIdx];
- if (tkn.value === '(') open++;
- if (tkn.value === ')') open--;
- }
- var argsIncludingClosingParen = code.slice(firstArgTkn.range[0], tkn.range[1])
- , result = 'log.' + kind + '("main-logger", ' + argsIncludingClosingParen;
-
- return { replacement: result, skipPastToken: tkn };
- }
- }
- }
- , origCode = [
- 'console.info("info ", 1);'
- , 'console.warn("warn ", 3);'
- , 'console.error("error ", new Error("oh my!"));'
- ].join('\n')
-
- , expectedCode = [
- 'log.info("main-logger", "info ", 1));'
- , 'log.warn("main-logger", "warn ", 3));'
- , 'log.error("main-logger", "error ", new Error("oh my!")));'
- ].join('\n')
- , code = redeyed(origCode, opts).code
- t.equals(code, expectedCode, 'transforms all log statements')
- t.end()
- });
|