You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
4.1 KiB
JavaScript
84 lines
4.1 KiB
JavaScript
var should = require('chai').should();
|
|
var derequire = require('../');
|
|
var fs = require("fs");
|
|
var crypto = require('crypto');
|
|
function hash(data){
|
|
return crypto.createHash('sha512').update(data).digest('base64');
|
|
}
|
|
var compare = hash(fs.readFileSync('./test/pouchdb.dereq.js', {encoding: 'utf8'}));
|
|
var compareCjsSmartass = fs.readFileSync('./test/cjs-smartass.dereq.js', {encoding: 'utf8'});
|
|
var compareCjslazy = fs.readFileSync('./test/cjs-lazy.js', {encoding: 'utf8'});
|
|
describe('derequire', function(){
|
|
it('should work', function(){
|
|
var exampleText = "var x=function(require,module,exports){var process=require(\"__browserify_process\");var requireText = \"require\";}";
|
|
derequire(exampleText).should.equal("var x=function(_dereq_,module,exports){var process=_dereq_(\"__browserify_process\");var requireText = \"require\";}");
|
|
});
|
|
it('should only replace arguments and calls',function(){
|
|
var exampleText = "function x(require,module,exports){var process=require(\"__browserify_process\");var requireText = {}; requireText.require = \"require\";(function(){var require = 'blah';}())}";
|
|
derequire(exampleText).should.equal("function x(_dereq_,module,exports){var process=_dereq_(\"__browserify_process\");var requireText = {}; requireText.require = \"require\";(function(){var require = 'blah';}())}");
|
|
});
|
|
it('should handle top level return statments', function(){
|
|
var exampleText = 'return (function(require){return require();}(function(){return "sentinel";}));';
|
|
derequire(exampleText).should.equal('return (function(_dereq_){return _dereq_();}(function(){return "sentinel";}));');
|
|
});
|
|
it('should work with a comment on the end', function(){
|
|
var exampleText = 'var x=function(require,module,exports){var process=require("__browserify_process");var requireText = "require";}//lala';
|
|
derequire(exampleText).should.equal('var x=function(_dereq_,module,exports){var process=_dereq_("__browserify_process");var requireText = "require";}//lala');
|
|
});
|
|
it('should work with whitespace inside require statement', function(){
|
|
var exampleText = 'var x=function(require,module,exports){var process=require( "__browserify_process" )}';
|
|
derequire(exampleText).should.equal('var x=function(_dereq_,module,exports){var process=_dereq_( "__browserify_process" )}');
|
|
});
|
|
it('should work with single quoted requires', function(){
|
|
var exampleText = 'var x=function(require,module,exports){var process=require(\'__browserify_process\')}';
|
|
derequire(exampleText).should.equal('var x=function(_dereq_,module,exports){var process=_dereq_(\'__browserify_process\')}');
|
|
});
|
|
it('should throw an error if you try to change things of different sizes', function(){
|
|
should.throw(function(){
|
|
derequire('require("x")', 'lalalalla', 'la');
|
|
});
|
|
});
|
|
it("should return notthe code back if it can't parse it", function(){
|
|
derequire("/*").should.equal("/*");
|
|
});
|
|
it("should return the code back if it can't parse it and it has a require", function(){
|
|
derequire("/*require('").should.equal("/*require('");
|
|
});
|
|
it('should work on something big', function(done){
|
|
fs.readFile('./test/pouchdb.js', {encoding:'utf8'}, function(err, data){
|
|
if(err){
|
|
return done(err);
|
|
}
|
|
var transformed = derequire(data);
|
|
hash(transformed).should.equal(compare);
|
|
done();
|
|
});
|
|
});
|
|
it('should not fail on attribute lookups', function(){
|
|
var txt = 'var x=function(require,module,exports){'
|
|
+ 'var W=require("stream").Writable;'
|
|
+ '}'
|
|
;
|
|
var expected = 'var x=function(_dereq_,module,exports){'
|
|
+ 'var W=_dereq_("stream").Writable;'
|
|
+ '}'
|
|
;
|
|
derequire(txt).should.equal(expected);
|
|
});
|
|
it('should fix cjs-smartassery', function (done){
|
|
fs.readFile('./test/cjs-smartass.js', {encoding:'utf8'}, function(err, data){
|
|
if(err){
|
|
return done(err);
|
|
}
|
|
var transformed = derequire(data);
|
|
transformed.should.equal(compareCjsSmartass);
|
|
done();
|
|
});
|
|
|
|
});
|
|
it('should fix not fix cjs-lazy', function (){
|
|
derequire(compareCjslazy).should.equal(compareCjslazy);
|
|
});
|
|
|
|
});
|