Allow amd builds to test for bizarro methods.

This commit is contained in:
John-David Dalton
2013-12-08 10:44:07 -08:00
parent 8ebe99d4f5
commit de232dd726

View File

@@ -18,6 +18,7 @@
<div id="qunit"></div> <div id="qunit"></div>
<div id="exports"></div> <div id="exports"></div>
<script> <script>
function addBizarroMethods() {
// add extensions // add extensions
Function.prototype._method = function() {}; Function.prototype._method = function() {};
@@ -42,15 +43,9 @@
Object._keys = Object.keys; Object._keys = Object.keys;
Object.keys = function() {}; Object.keys = function() {};
}
// load Lo-Dash and expose it to the bad extensions/shims function removeBizarroMethods() {
document.write('<script src="' + (ui.isModularize ? '../lodash.js' : ui.buildPath) + '"><\/script>');
</script>
<script>
// store Lo-Dash to test for bad extensions/shims
var lodashBizarro = window._;
// restore native methods
if (Array._isArray) { if (Array._isArray) {
Array.isArray = Array._isArray; Array.isArray = Array._isArray;
} else { } else {
@@ -94,7 +89,14 @@
delete Object._defineProperty; delete Object._defineProperty;
delete Object._getPrototypeOf; delete Object._getPrototypeOf;
delete Object._keys; delete Object._keys;
}
addBizarroMethods();
// load Lo-Dash and expose it to the bad extensions/shims
document.write('<script src="' + (ui.isModularize ? '../lodash.js' : ui.buildPath) + '"><\/script>');
</script>
<script>
QUnit.config.hidepassed = true; QUnit.config.hidepassed = true;
// assign results to `global_test_results` for Sauce Labs // assign results to `global_test_results` for Sauce Labs
@@ -103,8 +105,10 @@
global_test_results = results; global_test_results = results;
}); });
// clear existing `_` value // store Lo-Dash to test for bad extensions/shims
var lodashBizarro = window._;
window._ = undefined; window._ = undefined;
removeBizarroMethods();
// load Lo-Dash and test scripts // load Lo-Dash and test scripts
document.write(ui.urlParams.loader == 'none' document.write(ui.urlParams.loader == 'none'
@@ -132,8 +136,8 @@
QUnit.config.autostart = false; QUnit.config.autostart = false;
// load Lo-Dash as a module function getConfig() {
require({ return {
'baseUrl': './', 'baseUrl': './',
'urlArgs': 't=' + (+new Date), 'urlArgs': 't=' + (+new Date),
'packages': [ 'packages': [
@@ -168,8 +172,11 @@
'exports': '_' 'exports': '_'
} }
} }
}, };
['lodash', 'shimmed', 'underscore'], function(lodash, shimmed, underscore) { }
function loadModulesAndTests() {
require(getConfig(), ['lodash', 'shimmed', 'underscore'], function(lodash, shimmed, underscore) {
if (shimmed && shimmed.noConflict) { if (shimmed && shimmed.noConflict) {
shimmedModule = shimmed.noConflict(); shimmedModule = shimmed.noConflict();
shimmedModule.moduleName = 'shimmed'; shimmedModule.moduleName = 'shimmed';
@@ -189,6 +196,20 @@
QUnit.start(); QUnit.start();
}); });
}); });
}
if (window.requirejs) {
addBizarroMethods();
require(getConfig(), ['lodash'], function(lodash) {
lodashBizarro = lodash;
delete requirejs.s.contexts._;
removeBizarroMethods();
loadModulesAndTests();
});
} else {
loadModulesAndTests();
}
}()); }());
// set a more readable browser name // set a more readable browser name