/* eslint-env node, es6 */ 'use strict'; var fs = require('fs'); var testFile = './tests/minifier.js'; var regWs = '\\s*'; var regVar = '[_A-Za-z][_A-Za-z0-9\\[\\]]*'; var regStr = '\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\''; var regFuncCall = `${regVar}\\(.*\\)`; var regObjVal = `(?:\\{[^;]*\\}|${regVar})`; var regStrVal = `(?:(?:(?:${regStr}|${regVar})+(?:${regWs}\\+${regWs})?)+|${regFuncCall})`; var test_minify_reg = new RegExp( `assert${regWs}\\.${regWs}equal${regWs}\\(${regWs}` + `minify${regWs}\\(${regWs}(${regStrVal})${regWs}(?:,${regWs}(${regObjVal})${regWs})?\\)${regWs}` + `,${regWs}(${regStrVal})${regWs}(?:,${regWs}(${regStrVal})${regWs})?\\)${regWs};`, 'g'); var test_minify_error_reg = new RegExp( `assert${regWs}\\.${regWs}throws${regWs}\\(${regWs}` + `function${regWs}\\(${regWs}\\)${regWs}\\{${regWs}` + `minify${regWs}\\(${regWs}(${regStrVal})${regWs}(?:,${regWs}(${regObjVal})${regWs})?\\);${regWs}` + `\\}${regWs},${regWs}(${regStrVal})\\);`, 'g'); fs.readFile(testFile, { encoding: 'utf8' }, function(error, data) { if (error) { throw error; } data = data.replace(test_minify_reg, function(match, input, options, output, description) { var hasOptions = typeof options !== 'undefined'; var hasDescription = typeof description !== 'undefined'; var str = 'test_minify(assert, ' + input + ', ' + output; if (hasOptions) { str += ', ' + options; } else if (hasDescription) { str += ', null'; } if (hasDescription) { str += ', ' + description; } str += ');'; return str; }); data = data.replace(test_minify_error_reg, function(match, input, options, description) { var hasOptions = typeof options !== 'undefined'; var hasDescription = typeof description !== 'undefined'; var str = 'test_minify_error(assert, ' + input; if (hasOptions) { str += ', ' + options; } else if (hasDescription) { str += ', null'; } str += ', null'; if (hasDescription) { str += ', ' + description; } str += ');'; return str; }); fs.writeFile(testFile, data, function(error) { if (error) { throw error; } }); });