188c88e8eSopenharmony_civar path = require('path') 288c88e8eSopenharmony_civar chai = require('chai') 388c88e8eSopenharmony_civar sinon = require('sinon') 488c88e8eSopenharmony_civar sinonChai = require('sinon-chai') 588c88e8eSopenharmony_civar expect = chai.expect 688c88e8eSopenharmony_cichai.use(sinonChai) 788c88e8eSopenharmony_ci 888c88e8eSopenharmony_civar md5 = require('md5') 988c88e8eSopenharmony_civar parseAndReplaceRequire = require('../lib/require-parse').parseAndReplaceRequire 1088c88e8eSopenharmony_ci 1188c88e8eSopenharmony_ci 1288c88e8eSopenharmony_cidescribe('parse and replace require 3rd party js', function () { 1388c88e8eSopenharmony_ci it('implicit node_modules', function () { 1488c88e8eSopenharmony_ci var code = 'var a = require("md5");' 1588c88e8eSopenharmony_ci var absolutePath = path.join(__dirname, '../node_modules/md5/md5.js') 1688c88e8eSopenharmony_ci var md5Path = md5(absolutePath) 1788c88e8eSopenharmony_ci var expected = { 1888c88e8eSopenharmony_ci code: 'var a = browserifyRequire("' + md5Path + '");', 1988c88e8eSopenharmony_ci requires: {}, 2088c88e8eSopenharmony_ci log: [] 2188c88e8eSopenharmony_ci } 2288c88e8eSopenharmony_ci expected.requires[md5Path] = absolutePath 2388c88e8eSopenharmony_ci expect(parseAndReplaceRequire(code)).eql(expected) 2488c88e8eSopenharmony_ci }) 2588c88e8eSopenharmony_ci 2688c88e8eSopenharmony_ci it('explicit node_modules', function () { 2788c88e8eSopenharmony_ci var code = 'var a = require("./node_modules/md5");' 2888c88e8eSopenharmony_ci var absolutePath = path.join(__dirname, '../node_modules/md5/md5.js') 2988c88e8eSopenharmony_ci var md5Path = md5(absolutePath) 3088c88e8eSopenharmony_ci var expected = { 3188c88e8eSopenharmony_ci code: 'var a = browserifyRequire("' + md5Path + '");', 3288c88e8eSopenharmony_ci requires: {}, 3388c88e8eSopenharmony_ci log: [] 3488c88e8eSopenharmony_ci } 3588c88e8eSopenharmony_ci expected.requires[md5Path] = absolutePath 3688c88e8eSopenharmony_ci expect(parseAndReplaceRequire(code)).eql(expected) 3788c88e8eSopenharmony_ci }) 3888c88e8eSopenharmony_ci 3988c88e8eSopenharmony_ci it('current directory with no extname', function () { 4088c88e8eSopenharmony_ci var code = 'var a = require("./lib/fix");' 4188c88e8eSopenharmony_ci var absolutePath = path.join(__dirname, '../lib/fix.js') 4288c88e8eSopenharmony_ci var md5Path = md5(absolutePath) 4388c88e8eSopenharmony_ci var expected = { 4488c88e8eSopenharmony_ci code: 'var a = browserifyRequire("' + md5Path + '");', 4588c88e8eSopenharmony_ci requires: {}, 4688c88e8eSopenharmony_ci log: [] 4788c88e8eSopenharmony_ci } 4888c88e8eSopenharmony_ci expected.requires[md5Path] = absolutePath 4988c88e8eSopenharmony_ci expect(parseAndReplaceRequire(code)).eql(expected) 5088c88e8eSopenharmony_ci }) 5188c88e8eSopenharmony_ci 5288c88e8eSopenharmony_ci it('current directory with extname', function () { 5388c88e8eSopenharmony_ci var code = 'var a = require("./lib/fix.js");' 5488c88e8eSopenharmony_ci var absolutePath = path.join(__dirname, '../lib/fix.js') 5588c88e8eSopenharmony_ci var md5Path = md5(absolutePath) 5688c88e8eSopenharmony_ci var expected = { 5788c88e8eSopenharmony_ci code: 'var a = browserifyRequire("' + md5Path + '");', 5888c88e8eSopenharmony_ci requires: {}, 5988c88e8eSopenharmony_ci log: [] 6088c88e8eSopenharmony_ci } 6188c88e8eSopenharmony_ci expected.requires[md5Path] = absolutePath 6288c88e8eSopenharmony_ci expect(parseAndReplaceRequire(code)).eql(expected) 6388c88e8eSopenharmony_ci }) 6488c88e8eSopenharmony_ci 6588c88e8eSopenharmony_ci it('parent directory with no extname', function () { 6688c88e8eSopenharmony_ci var code = 'var a = require("./test/fix");' 6788c88e8eSopenharmony_ci var absolutePath = path.join(__dirname, '../test/fix.js') 6888c88e8eSopenharmony_ci var md5Path = md5(absolutePath) 6988c88e8eSopenharmony_ci var expected = { 7088c88e8eSopenharmony_ci code: 'var a = browserifyRequire("' + md5Path + '");', 7188c88e8eSopenharmony_ci requires: {}, 7288c88e8eSopenharmony_ci log: [] 7388c88e8eSopenharmony_ci } 7488c88e8eSopenharmony_ci expected.requires[md5Path] = absolutePath 7588c88e8eSopenharmony_ci expect(parseAndReplaceRequire(code)).eql(expected) 7688c88e8eSopenharmony_ci }) 7788c88e8eSopenharmony_ci 7888c88e8eSopenharmony_ci it('parent directory with extname', function () { 7988c88e8eSopenharmony_ci var code = 'var a = require("./test/fix.js");' 8088c88e8eSopenharmony_ci var absolutePath = path.join(__dirname, '../test/fix.js') 8188c88e8eSopenharmony_ci var md5Path = md5(absolutePath) 8288c88e8eSopenharmony_ci var expected = { 8388c88e8eSopenharmony_ci code: 'var a = browserifyRequire("' + md5Path + '");', 8488c88e8eSopenharmony_ci requires: {}, 8588c88e8eSopenharmony_ci log: [] 8688c88e8eSopenharmony_ci } 8788c88e8eSopenharmony_ci expected.requires[md5Path] = absolutePath 8888c88e8eSopenharmony_ci expect(parseAndReplaceRequire(code)).eql(expected) 8988c88e8eSopenharmony_ci }) 9088c88e8eSopenharmony_ci 9188c88e8eSopenharmony_ci it('require @weex-module', function () { 9288c88e8eSopenharmony_ci var code = 'var a = require("@weex-module/xxx");' 9388c88e8eSopenharmony_ci var expected = { 9488c88e8eSopenharmony_ci code: 'var a = require("@weex-module/xxx");', 9588c88e8eSopenharmony_ci requires: {}, 9688c88e8eSopenharmony_ci log: [] 9788c88e8eSopenharmony_ci } 9888c88e8eSopenharmony_ci expect(parseAndReplaceRequire(code)).eql(expected) 9988c88e8eSopenharmony_ci }) 10088c88e8eSopenharmony_ci 10188c88e8eSopenharmony_ci it('require @weex-component', function () { 10288c88e8eSopenharmony_ci var code = 'var a = require("@weex-component/xxx");' 10388c88e8eSopenharmony_ci var expected = { 10488c88e8eSopenharmony_ci code: 'var a = require("@weex-component/xxx");', 10588c88e8eSopenharmony_ci requires: {}, 10688c88e8eSopenharmony_ci log: [] 10788c88e8eSopenharmony_ci } 10888c88e8eSopenharmony_ci expect(parseAndReplaceRequire(code)).eql(expected) 10988c88e8eSopenharmony_ci }) 11088c88e8eSopenharmony_ci 11188c88e8eSopenharmony_ci it('multiple requires', function () { 11288c88e8eSopenharmony_ci var code = 'var a = require("md5"); var b = require("test/fix"); var c = require("@weex-component/xxx");' 11388c88e8eSopenharmony_ci var absolutePathA = path.join(__dirname, '../node_modules/md5/md5.js') 11488c88e8eSopenharmony_ci var md5PathA = md5(absolutePathA) 11588c88e8eSopenharmony_ci var absolutePathB = path.join(__dirname, '../test/fix.js') 11688c88e8eSopenharmony_ci var md5PathB = md5(absolutePathB) 11788c88e8eSopenharmony_ci var expected = { 11888c88e8eSopenharmony_ci code: 'var a = browserifyRequire("' + md5PathA + '"); var b = browserifyRequire("' + md5PathB + '"); var c = require("@weex-component/xxx");', 11988c88e8eSopenharmony_ci requires: {}, 12088c88e8eSopenharmony_ci log: [] 12188c88e8eSopenharmony_ci } 12288c88e8eSopenharmony_ci expected.requires[md5PathA] = absolutePathA 12388c88e8eSopenharmony_ci expected.requires[md5PathB] = absolutePathB 12488c88e8eSopenharmony_ci expect(parseAndReplaceRequire(code)).eql(expected) 12588c88e8eSopenharmony_ci }) 12688c88e8eSopenharmony_ci 12788c88e8eSopenharmony_ci it('cannot find required module', function () { 12888c88e8eSopenharmony_ci var code = 'var a = require("underscore")' 12988c88e8eSopenharmony_ci var expected = { 13088c88e8eSopenharmony_ci code: 'var a = require("underscore")', 13188c88e8eSopenharmony_ci requires: {}, 13288c88e8eSopenharmony_ci log: [{reason: 'ERROR: Cannot find required module "underscore"'}] 13388c88e8eSopenharmony_ci } 13488c88e8eSopenharmony_ci expect(parseAndReplaceRequire(code)).eql(expected) 13588c88e8eSopenharmony_ci }) 13688c88e8eSopenharmony_ci}) 137