updates and saucelabs desktop support

This commit is contained in:
Patrick Kettner
2015-04-16 00:39:42 -04:00
parent 0c1d28c7ab
commit a2025f5cb5
67 changed files with 492 additions and 294 deletions

1
.coveralls.yml Normal file
View File

@@ -0,0 +1 @@
repo_token: SvXbGOMwbSd26ylxjtyC93P5aSLKX92pq

View File

@@ -6,12 +6,8 @@ node_js:
before_script:
- npm install grunt-cli -g
- export CI_BUILD_NUMBER=$(git rev-parse HEAD)
- if [ "${TRAVIS_NODE_VERSION}" = "0.12" ] && [ "${TRAVIS_REPO_SLUG}" = "modernizr-savage/Modernizr" ]; then export BROWSER_COVERAGE=true; fi
after_success:
# Temporary workaround for:
# https://github.com/travis-ci/travis-ci/issues/929
- python travis_after_all.py
- export $(cat .to_export_back) &> /dev/null
- |
@@ -48,15 +44,15 @@ after_success:
fi
script:
- grunt travis --verbose
- grunt test
- curl -sSLo travis_after_all.py https://raw.github.com/dmakhno/travis_after_all/master/travis_after_all.py
notifications:
webhooks:
- http://patrickkettner.com:8080/savage/travis
env:
global:
- secure: noRIQS5Wv/9SFs4bK+0NZNQ7nnL+WfP6PhkPQR5QxNmXR1S4wjdiHy4/yv4aO/j1URgFw1YiFf+80k7YIn/9vIT+lMzE0wiw5FXTQM9PIB2mPHC2wzc0Y1Xj5kfuFXZemWTt73y1IkT53PjxezslVSduPKTxjXJuPmUk2FG3yaw=
- secure: QUDo7NDflY7K3xrBfcjVmhz6IBKoMOiosABbOEdQo1PiqAa8JBbjd+h02p6k+ZNQNymB1EcBhe20O1dMJYOg2E9BB8vtCsJtXTw1TEKlEwUVPUMkAtP6gpOk8XfmP9o6Ej2uM89+r6vLTDJIH1FPSwYbyxvWzIEi52gjFZUN6Mw=
- secure: F5Xmkr+31YIXvtS1sqt2PDCI1CEQN/zpoJBKzqYXIUZVLvyH/4zVxRRa2LYleLRSIc+YZfzE3YZjfwWUC9vMcEREk380gRwSot9mhVbCOmNd1qhrFocSAzpI0fnwPUMfQknhE/mLuXnFQ0OAJBFzVCFOHHhKTlL8q+I7dNUhErc=
- secure: bSjU9XMTm3bmROc4rNERCPDgoa30dAJTJg16o3yYGjCyLhl6JdXSgh53rFu4IKg8hT4wvZB9/X7wiAk8s5Md+U1q746meTvNe0D6SCmgjtvaqJOY0Gina+MvRgYtqfYZByapotIO6+zy9bURixIQbo1ZIxeuux/0glGYG8yPr6k=
- secure: mBLGOwhFac+42FrM5FMNxsEgHIBnhVzBywuusyIOl3HDF6AU6pMb1KObVdmWzvUWnloQsh8d0xJ36YSq0upJ1kAs/PyAC1mJJgWvTjojBdkqeEndLbupmB1UT4Zh61Gzaln8dueWqVTRM9em0aHzPSKs+sSB7PpOeWzWL+19cOc=
- secure: GijLoFIOjQ0elKMTLa58uS1Cgti+VzBOYXOPKKLikD8IAyNq2LRoochlYopAI2wAEMmX5UZAUpPiziyVGDCNmaDxCk4hmaG/WEFAHByu4PIcQaRGdqYT/kiGsn5vvKadHv34R2Fs3A0q1Fzx5mpAOJwKpANNvOHcHIESlvWzPvM=
- secure: HAztDqXTzRcsZ8StX4rDZiY2116SBQFWF9faf5/pl5UByj55lk6jYuC+DCB5ZHeRvmndMNjGqHLS3AvQZ5wMRVOlHfFMZdXGu+oONjFEWbZ9SHU5YNE8oRWIHB7XsFafvQpyAshReV1ogUj08cKFPC60EG8K3drxH2ybXcSpVi0=

View File

@@ -141,20 +141,21 @@ module.exports = function( grunt ) {
}
}
},
'saucelabs-mocha': {
'saucelabs-custom': {
all: {
options: {
urls: '<%= env.coverage.urls %>',
testname: process.env.CI_BUILD_NUMBER || 'Modernizr Test',
browsers: browsers,
maxRetries: 2
maxRetries: 3
}
}
},
mocha: {
test: {
options: {
urls: '<%= env.coverage.urls %>'
urls: '<%= env.coverage.urls %>',
log: true
},
},
},
@@ -188,8 +189,15 @@ module.exports = function( grunt ) {
dir: 'test/coverage/reports',
print: 'detail'
}
},
coveralls: {
all: {
src: 'test/coverage/reports/lcov.info',
options: {
force: true
}
}
}
});
grunt.registerMultiTask('generate', 'Create a version of Modernizr from Grunt', function() {
@@ -204,24 +212,21 @@ module.exports = function( grunt ) {
});
});
grunt.registerTask('browserTests', ['connect', 'mocha']);
grunt.registerTask('nodeTests', ['mochaTest']);
// Testing tasks
grunt.registerTask('test', ['clean', 'jshint', 'jade', 'instrument', 'env:coverage', 'nodeTests', 'generate', 'storeCoverage', 'browserTests', 'makeReport']);
grunt.registerTask('browserTests', ['connect', 'mocha']);
// Travis CI task.
grunt.registerTask('travis', ['test']);
grunt.registerTask('build', [ 'clean', 'generate' ]);
// Build
grunt.registerTask('build', [
'clean',
'generate'
]);
grunt.registerTask('default', [ 'jshint', 'build' ]);
grunt.registerTask('default', [
'jshint',
'build'
]);
var tests = ['clean', 'jshint', 'jade', 'instrument', 'env:coverage', 'nodeTests' ];
if (process.env.APPVEYOR) {
grunt.registerTask('test', tests);
} else if (process.env.BROWSER_COVERAGE !== 'true') {
grunt.registerTask('test', tests.concat(['generate', 'browserTests']));
} else {
grunt.registerTask('test', tests.concat([ 'generate', 'storeCoverage', 'browserTests', 'saucelabs-custom', 'makeReport', 'coveralls' ]));
}
};

View File

@@ -22,8 +22,11 @@ define(['Modernizr', 'createElement', 'test/canvas'], function( Modernizr, creat
Modernizr.addTest('canvasblending', function() {
if (Modernizr.canvas === false) return false;
var ctx = createElement('canvas').getContext('2d');
// firefox 3 throws an error when setting an invalid `globalCompositeOperation`
try {
ctx.globalCompositeOperation = 'screen';
} catch (e) {}
ctx.globalCompositeOperation = 'screen';
return ctx.globalCompositeOperation === 'screen';
});

View File

@@ -22,7 +22,14 @@ define(['Modernizr', 'createElement', 'test/canvas'], function( Modernizr, creat
return !!Modernizr.canvas && canvas.toDataURL('image/png').indexOf('data:image/png') === 0;
});
Modernizr.addTest('todataurlwebp', function() {
return !!Modernizr.canvas && canvas.toDataURL('image/webp').indexOf('data:image/webp') === 0;
var supports = false;
// firefox 3 throws an error when you use an "invalid" toDataUrl
try {
supports = !!Modernizr.canvas && canvas.toDataURL('image/webp').indexOf('data:image/webp') === 0;
} catch(e) {}
return supports;
});
});

View File

@@ -12,20 +12,15 @@
}]
}
!*/
define(['Modernizr', 'createElement', 'prefixes', 'test/css/supports'], function( Modernizr, createElement, prefixes ) {
// https://github.com/Modernizr/Modernizr/issues/615
// documentMode is needed for false positives in oldIE, please see issue above
define(['Modernizr', 'createElement', 'prefixes', 'testAllProps', 'test/css/supports'], function( Modernizr, createElement, testAllProps, prefixes ) {
Modernizr.addTest('cssfilters', function() {
var el = createElement('div');
el.style.cssText = prefixes.join('filter:blur(2px); ');
if (Modernizr.supports) {
var supports = 'CSS' in window ?
window.CSS.supports('filter', 'url()') :
window.supportsCSS('filter', 'url()');
// older firefox only supports `url` filters;
return supports;
return testAllProps('filter', 'blur(2px)');
} else {
var el = createElement('div');
el.style.cssText = prefixes.join('filter:blur(2px); ');
// https://github.com/Modernizr/Modernizr/issues/615
// documentMode is needed for false positives in oldIE, please see issue above
return !!el.style.length && ((document.documentMode === undefined || document.documentMode > 9));
}
});

View File

@@ -4,6 +4,7 @@
"property": "mathml",
"caniuse": "mathml",
"authors": ["Addy Osmani", "Davide P. Cervone", "David Carlisle"],
"knownBugs": ["Firefox < 4 will likely return a false, however it does support MathML inside XHTML documents"],
"notes": [{
"name": "W3C spec",
"href": "http://www.w3.org/Math/"

View File

@@ -14,7 +14,7 @@
define(['Modernizr', 'testStyles', 'createElement'], function (Modernizr, testStyles, createElement) {
Modernizr.addTest('unicoderange', function () {
return Modernizr.testStyles('@font-face{font-family:"unicodeRange";src:local("Arial");unicode-range:U+0020,U+002E}#modernizr span{font-size:10px;display:inline-block;font-family:"unicodeRange",monospace}#modernizr .mono{font-family:monospace}', function (elem) {
return Modernizr.testStyles('@font-face{font-family:"unicodeRange";src:local("Arial");unicode-range:U+0020,U+002E}#modernizr span{font-size:20px;display:inline-block;font-family:"unicodeRange",monospace}#modernizr .mono{font-family:monospace}', function (elem) {
// we use specify a unicode-range of 002E (the `.` glyph,
// and a monospace font as the fallback. If the first of

View File

@@ -18,12 +18,13 @@ define(['Modernizr', 'addTest', 'docElement', 'createElement', 'test/video'], fu
var waitTime = 300;
var elem = createElement('video');
var elemStyle = elem.style;
var testAutoplay = function(arg) {
function testAutoplay(arg) {
clearTimeout(timeout);
elem.removeEventListener('playing', testAutoplay);
elem.removeEventListener('playing', testAutoplay, false);
addTest('videoautoplay', arg && arg.type === 'playing' || elem.currentTime !== 0);
elem.parentNode.removeChild(elem);
};
}
//skip the test if video itself, or the autoplay
//element on it isn't supported
@@ -55,12 +56,12 @@ define(['Modernizr', 'addTest', 'docElement', 'createElement', 'test/video'], fu
}
elem.setAttribute('autoplay','');
elem.style = 'display:none';
elem.style.cssText = 'display:none';
docElement.appendChild(elem);
// wait for the next tick to add the listener, otherwise the element may
// not have time to play in high load situations (e.g. the test suite)
setTimeout(function() {
elem.addEventListener('playing', testAutoplay);
elem.addEventListener('playing', testAutoplay, false);
timeout = setTimeout(testAutoplay, waitTime);
}, 0);
});

View File

@@ -22,6 +22,7 @@
"grunt-contrib-copy": "^0.8.0",
"grunt-contrib-jade": "^0.14.1",
"grunt-contrib-jshint": "^0.11.0",
"grunt-coveralls": "^1.0.0",
"grunt-env": "^0.4.2",
"grunt-istanbul": "^0.4.0",
"grunt-mocha": "^0.4.11",
@@ -47,11 +48,11 @@
},
"inch": {
"files": {
"included": [
"feature-detects/",
"src/"
]
}
"included": [
"feature-detects/",
"src/"
]
}
},
"keywords": [
"html5",

View File

@@ -35,8 +35,7 @@ define(['contains', 'mStyle', 'createElement', 'nativeTestProps', 'is', 'cssToDO
mStyle.style = mStyle.modElem.style;
}
// Delete the objects if we
// we created them.
// Delete the objects if we created them.
function cleanElems() {
if (afterInit) {
delete mStyle.style;

View File

@@ -57,8 +57,8 @@ window.caniusecb = function(caniuse) {
filereader: 'fileapi',
filesystem: 'filesystem',
flexbox: 'flexbox',
flexboxtweener: 'flexbox',
flexboxlegacy: 'flexbox',
flexboxtweener: 'flexbox',
fontface: 'fontface',
formvalidationapi: 'form-validation',
fullscreen: 'fullscreen',
@@ -145,34 +145,76 @@ window.caniusecb = function(caniuse) {
var ciubool = bool(o.caniuseResult);
/**************************************************************
* `o.caniuseResult` maps to the caniuse `stat` property
*
* y - (Y)es, supported by default
* a - (A)lmost supported (aka Partial support)
* n - (N)o support, or disabled by default
* p - No support, but has (P)olyfill
* u - Support (u)nknown
* x - Requires prefi(x) to work
* d - (D)isabled by default (need to enable flag or something)
**************************************************************/
// caniuse says audio/video are yes/no, Modernizr has more detail which we'll dumb down.
if (_.contains(['video', 'audio', 'webglextensions'], o.feature)) {
o.result = o.result.valueOf();
}
// webgl `partial` support means that not all users with these browsers
// have WebGL access, so we just ignore this test, and only check if the browser
// webgl `partial` support means that not all users with these browsers have
// WebGL access, so we just ignore this test, and only check if the browser
// either fully supports or does not support
if (o.feature === 'webgl' && o.caniuseResult.indexOf('a') === 0) {
return;
}
// change the *documented* false positives
if (!ciubool && (o.feature == 'textshadow' && o.browser == 'firefox' && o.version == 3)) {
if (!ciubool && (o.feature == 'textshadow' && o.browser == 'Firefox' && o.version == 3)) {
ciubool = o.fp = true;
}
// firefox only supports web animation when a flag is enabled, which we
// don't do on sauce
if (o.feature === 'webanimations' && o.caniuseResult.indexOf('a d') === 0) {
return;
}
// firefox only supports the `url` version of css-filters, which we don't
// consider support
if (o.feature === 'cssfilters' && o.browser == 'Firefox' && o.caniuseResult.indexOf('a') === 0) {
return;
}
// before 4.0, firefox only supports MathML on XHTML documents. Since we
// don't run inside of one, we will have a technically false negative
if (o.feature === 'mathml' && o.browser == 'Firefox' && o.version < 4) {
return;
}
// caniuse bundles viewport units, all of which work in IE 9+, save for vmax
// we skip this comparison with a version gate, hoping its fixed in later versions.
if (o.feature === 'cssvmaxunit' && o.caniuseResult.indexOf('a') === 0) {
return;
}
// safari 5 does not support the `FileReader` API, which we test as a requirement
if (o.feature === 'filereader' && o.caniuseResult.indexOf('a') === 0) {
return;
}
// safari 5 and 6 only support the old version of WebSockets, which breaks most servers.
// As a result, we mark it as not supported, and ignore the caniuse match
if (o.feature === 'websockets' && o.caniuseResult.indexOf('a') === 0) {
return;
}
// safari 7 recognizes the `seamless` attribute but does not actually support it
if (o.feature === 'seamless' && o.browser === 'Safari' && o.version === 7) {
return;
}
// caniuse counts a partial support for CORS via the XDomainRequest,
// but thats not really cors - so skip the comparison.
if (o.feature === 'cors' && o.browser == 'IE' && o.version < 10) {

View File

@@ -1,38 +1,90 @@
[
{
"browserName": "firefox",
"platform": "WIN7"
"browserName": "internet explorer",
"platform": "XP",
"version": "7"
}, {
"browserName": "internet explorer",
"platform": "WIN7",
"version": "8"
}, {
"browserName": "internet explorer",
"platform": "WIN7",
"version": "9"
}, {
"browserName": "internet explorer",
"platform": "WIN8",
"version": "10"
}, {
"browserName": "internet explorer",
"platform": "WIN8.1",
"version": "11"
},
{
"browserName": "firefox",
"platform": "WINXP",
"browserVersion": "3"
"platform": "WIN8",
"version": "3.6"
}, {
"browserName": "firefox",
"platform": "WIN8",
"version": "35"
}, {
"browserName": "firefox",
"platform": "WIN8",
"version": "36"
}, {
"browserName": "firefox",
"platform": "WIN8",
"version": "37"
}, {
"browserName": "firefox",
"version": "beta"
},
{
"browserName": "opera",
"platform": "Linux",
"version": "12"
},
{
"browserName": "chrome",
"platform": "WIN7"
},
{
"browserName": "internet explorer",
"platform": "WIN8"
},
{
"browserName": "safari",
"platform": "OS X 10.6",
"version": "5"
"platform": "WIN8",
"version": "39"
}, {
"browserName": "chrome",
"platform": "WIN8",
"version": "40"
}, {
"browserName": "chrome",
"platform": "WIN8",
"version": "41"
}, {
"browserName": "chrome",
"platform": "WIN8",
"version": "beta"
}, {
"browserName": "chrome",
"platform": "WIN8",
"version": "dev"
},
{
"browserName": "safari",
"platform": "OS X 10.8",
"version": "6"
},
{
"browserName": "iphone",
"platform": "OS X 10.8"
},
{
"browserName": "android",
"platform": "Linux",
"version": "4.0"
}, {
"browserName": "safari",
"platform": "OS X 10.9",
"version": "7"
}, {
"browserName": "safari",
"platform": "OS X 10.10",
"version": "8"
}
]

View File

@@ -2,25 +2,31 @@
$(document).ready(function() {
var runner = mocha.run();
var failedTests = [];
var results = {
passed: 0,
failed: 0,
total: 0,
tests: []
};
runner.once('suite', function() {
mocha.suite.afterAll('send coverage', function(done) {
window.mochaResults = runner.stats;
window.mochaResults.reports = failedTests;
// opera 12 can't handle the defualt `window.mochaResults`, so we build
// generic test data instead
window.global_test_results = results;
if (window.__coverage__) {
$.ajax({
type: 'POST',
url: '/coverage/client',
data: JSON.stringify(__coverage__),
success: function() {
done();
}
});
} else {
done();
}
if (window.__coverage__) {
$.ajax({
type: 'POST',
url: '/coverage/client',
data: JSON.stringify(__coverage__),
success: function() {
done();
}
});
} else {
done();
}
});
});
@@ -28,6 +34,14 @@ $(document).ready(function() {
function logFailure(test, err) {
if (err) {
results.failed += 1;
} else {
results.passed += 1;
}
results.total += 1;
var flattenTitles = function(test) {
var titles = [];
while (test.parent.title) {
@@ -37,11 +51,11 @@ $(document).ready(function() {
return titles.reverse();
};
failedTests.push({
results.tests.push({
name: test.title,
result: false,
message: err.message,
stack: err.stack,
result: err ? false : true,
message: err ? err.message : 'passe',
stack: err ? err.stack : undefined,
titles: flattenTitles(test)
});
}

View File

@@ -6,12 +6,13 @@ describe('Modernizr Base', function() {
define('package', [], function() {return {};});
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: {cleanup: '../test/cleanup'}
});
requirejs(['Modernizr', 'cleanup'], function(_ModernizrBase, _cleanup) {
req(['Modernizr', 'cleanup'], function(_ModernizrBase, _cleanup) {
modernizrBase = _ModernizrBase;
cleanup = _cleanup;
done();

View File

@@ -2,16 +2,18 @@ describe('ModernizrProto', function() {
var ModernizrProto;
var cleanup;
var tests;
var req;
before(function() {
define('package', [], function() {return {version: 'v9999'};});
requirejs.config({
req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: {cleanup: '../test/cleanup'}
});
requirejs(['cleanup'], function(_cleanup) {
req(['cleanup'], function(_cleanup) {
cleanup = _cleanup;
});
});
@@ -21,7 +23,7 @@ describe('ModernizrProto', function() {
tests = [];
define('tests', function() {return tests;});
requirejs(['ModernizrProto', 'tests'], function(_ModernizrProto, _tests) {
req(['ModernizrProto', 'tests'], function(_ModernizrProto, _tests) {
ModernizrProto = _ModernizrProto;
tests = _tests;
done();
@@ -30,8 +32,8 @@ describe('ModernizrProto', function() {
});
afterEach(function() {
requirejs.undef('tests');
requirejs.undef('ModernizrProto');
req.undef('tests');
req.undef('ModernizrProto');
});
it('should define a version', function() {

View File

@@ -5,10 +5,12 @@ describe('addTest', function() {
var addTest;
var cleanup;
var sinon;
var req;
before(function(done) {
requirejs.config({
req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: {
cleanup: '../test/cleanup',
@@ -16,7 +18,7 @@ describe('addTest', function() {
}
});
requirejs(['cleanup', 'sinon'], function(_cleanup, _sinon) {
req(['cleanup', 'sinon'], function(_cleanup, _sinon) {
cleanup = _cleanup;
sinon = _sinon;
done();
@@ -35,18 +37,18 @@ describe('addTest', function() {
define('setClasses', [], function() {return setClasses;});
define('package', [], function() {return {};});
requirejs(['addTest'], function(_addTest) {
req(['addTest'], function(_addTest) {
addTest = _addTest;
done();
});
});
afterEach(function() {
requirejs.undef('ModernizrProto');
requirejs.undef('setClasses');
requirejs.undef('Modernizr');
requirejs.undef('package');
requirejs.undef('addTest');
req.undef('ModernizrProto');
req.undef('setClasses');
req.undef('Modernizr');
req.undef('package');
req.undef('addTest');
});
describe('setup', function() {

View File

@@ -13,12 +13,13 @@ describe('atRule', function() {
define('cssomPrefixes', [], function(){return prefixes;});
define('package', [], function() {return {};});
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['atRule', 'cleanup'], function(_atRule, _cleanup) {
req(['atRule', 'cleanup'], function(_atRule, _cleanup) {
atRule = _atRule;
cleanup = _cleanup;
done();

View File

@@ -4,12 +4,13 @@ describe('attrs', function() {
before(function(done) {
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['attrs', 'cleanup'], function(_attrs, _cleanup) {
req(['attrs', 'cleanup'], function(_attrs, _cleanup) {
attrs = _attrs;
cleanup = _cleanup;
done();

View File

@@ -4,12 +4,13 @@ describe('classes', function() {
before(function(done) {
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['classes', 'cleanup'], function(_classes, _cleanup) {
req(['classes', 'cleanup'], function(_classes, _cleanup) {
classes = _classes;
cleanup = _cleanup;
done();

View File

@@ -4,12 +4,13 @@ describe('contains', function() {
before(function(done) {
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['contains', 'cleanup'], function(_contains, _cleanup) {
req(['contains', 'cleanup'], function(_contains, _cleanup) {
contains = _contains;
cleanup = _cleanup;
done();

View File

@@ -4,12 +4,13 @@ describe('createElement', function() {
before(function(done) {
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['createElement', 'cleanup'], function(_createElement, _cleanup) {
req(['createElement', 'cleanup'], function(_createElement, _cleanup) {
createElement = _createElement;
cleanup = _cleanup;
done();

View File

@@ -4,12 +4,13 @@ describe('cssToDOM', function() {
before(function(done) {
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['cssToDOM', 'cleanup'], function(_cssToDOM, _cleanup) {
req(['cssToDOM', 'cleanup'], function(_cssToDOM, _cleanup) {
cssToDOM = _cssToDOM;
cleanup = _cleanup;
done();

View File

@@ -3,30 +3,33 @@ describe('cssomPrefixes', function() {
return (function() {
define('ModernizrProto', [], function() {return {_config: {usePrefixes: bool}};});
requirejs(['cssomPrefixes'], function(_cssomPrefixes) {
req(['cssomPrefixes'], function(_cssomPrefixes) {
cssomPrefixes = _cssomPrefixes;
done();
});
})();
};
var teardown = function() {
cssomPrefixes = undefined;
requirejs.undef('cssomPrefixes');
requirejs.undef('ModernizrProto');
req.undef('cssomPrefixes');
req.undef('ModernizrProto');
};
var cssomPrefixes;
var cleanup;
var req;
before(function(done) {
define('package', [], function() {return {version: 'v9999'};});
requirejs.config({
req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['cleanup'], function(_cleanup) {
req(['cleanup'], function(_cleanup) {
cleanup = _cleanup;
done();
});
@@ -40,7 +43,7 @@ describe('cssomPrefixes', function() {
after(teardown);
it('returns prefixes', function(done) {
requirejs(['cssomPrefixes'], function(cssomPrefixes) {
req(['cssomPrefixes'], function(cssomPrefixes) {
expect(cssomPrefixes).to.not.have.length(0);
done();
});
@@ -55,7 +58,7 @@ describe('cssomPrefixes', function() {
after(teardown);
it('returns no prefixes', function(done) {
requirejs(['cssomPrefixes'], function(cssomPrefixes) {
req(['cssomPrefixes'], function(cssomPrefixes) {
expect(cssomPrefixes).to.have.length(0);
done();
});

View File

@@ -4,12 +4,13 @@ describe('docElement', function() {
before(function(done) {
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['docElement', 'cleanup'], function(_docElement, _cleanup) {
req(['docElement', 'cleanup'], function(_docElement, _cleanup) {
docElement = _docElement;
cleanup = _cleanup;
done();

View File

@@ -1,9 +1,11 @@
describe('domPrefixes', function() {
var req;
var setup = function(done, bool) {
return (function() {
define('ModernizrProto', [], function() {return {_config: {usePrefixes: bool}};});
requirejs(['domPrefixes'], function(_domPrefixes) {
req(['domPrefixes'], function(_domPrefixes) {
domPrefixes = _domPrefixes;
done();
});
@@ -12,8 +14,8 @@ describe('domPrefixes', function() {
var teardown = function() {
domPrefixes = undefined;
requirejs.undef('domPrefixes');
requirejs.undef('ModernizrProto');
req.undef('domPrefixes');
req.undef('ModernizrProto');
};
var domPrefixes;
var cleanup;
@@ -21,12 +23,13 @@ describe('domPrefixes', function() {
before(function(done) {
define('package', [], function() {return {version: 'v9999'};});
requirejs.config({
req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['cleanup'], function(_cleanup) {
req(['cleanup'], function(_cleanup) {
cleanup = _cleanup;
done();
});
@@ -40,7 +43,7 @@ describe('domPrefixes', function() {
after(teardown);
it('returns prefixes', function(done) {
requirejs(['domPrefixes'], function(domPrefixes) {
req(['domPrefixes'], function(domPrefixes) {
expect(domPrefixes).to.not.have.length(0);
done();
});
@@ -55,7 +58,7 @@ describe('domPrefixes', function() {
after(teardown);
it('returns no prefixes', function(done) {
requirejs(['domPrefixes'], function(domPrefixes) {
req(['domPrefixes'], function(domPrefixes) {
expect(domPrefixes).to.have.length(0);
done();
});

View File

@@ -4,12 +4,13 @@ describe('domToCSS', function() {
before(function(done) {
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['domToCSS', 'cleanup'], function(_domToCSS, _cleanup) {
req(['domToCSS', 'cleanup'], function(_domToCSS, _cleanup) {
domToCSS = _domToCSS;
cleanup = _cleanup;
done();

View File

@@ -4,12 +4,13 @@ describe('fnBind', function() {
before(function(done) {
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['fnBind', 'cleanup'], function(_fnBind, _cleanup) {
req(['fnBind', 'cleanup'], function(_fnBind, _cleanup) {
fnBind = _fnBind;
cleanup = _cleanup;
done();

View File

@@ -5,13 +5,18 @@ describe('generate', function() {
before(function(done) {
define('package', [], function() {return {};});
define('Modernizr', [], function() {return {};});
define('testRunner', [], function() {return {};});
define('lodash', [], function() {return window._;});
define('ModernizrProto', [], function() {return {};});
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['generate', 'cleanup'], function(_generate, _cleanup) {
req(['generate', 'cleanup'], function(_generate, _cleanup) {
generate = _generate;
cleanup = _cleanup;
done();
@@ -74,12 +79,18 @@ describe('generate', function() {
it('outputs a valid function', function() {
var output = generate({});
var stashedRequire = window.require;
window.require = function() {};
expect(function(){eval(output);}).to.not.throwError();
window.require = stashedRequire;
});
it('outputs a valid function when minified', function() {
var output = generate({minify: true});
var stashedRequire = window.require;
window.require = function() {};
expect(function(){eval(output);}).to.not.throwError();
window.require = stashedRequire;
});
after(function() {

View File

@@ -4,12 +4,13 @@ describe('getBody', function() {
before(function(done) {
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['getBody', 'cleanup'], function(_getBody, _cleanup) {
req(['getBody', 'cleanup'], function(_getBody, _cleanup) {
getBody = _getBody;
cleanup = _cleanup;
done();

View File

@@ -8,12 +8,13 @@ describe('hasEvent', function() {
define('ModernizrProto', [], function(){return ModernizrProto;});
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['hasEvent', 'isEventSupported', 'cleanup'], function(_hasEvent, _isEventSupported, _cleanup) {
req(['hasEvent', 'isEventSupported', 'cleanup'], function(_hasEvent, _isEventSupported, _cleanup) {
isEventSupported = _isEventSupported;
hasEvent = _hasEvent;
cleanup = _cleanup;

View File

@@ -4,12 +4,13 @@ describe('hasOwnProp', function() {
before(function(done) {
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: {cleanup: '../test/cleanup'}
});
requirejs(['hasOwnProp', 'cleanup'], function(_hasOwnProp, _cleanup) {
req(['hasOwnProp', 'cleanup'], function(_hasOwnProp, _cleanup) {
hasOwnProp = _hasOwnProp;
cleanup = _cleanup;
done();

View File

@@ -9,7 +9,8 @@ describe('injectElementWithStyles', function() {
define('package', [], function() {return {};});
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: {
cleanup: '../test/cleanup',
@@ -17,7 +18,7 @@ describe('injectElementWithStyles', function() {
}
});
requirejs(['injectElementWithStyles', 'sinon', 'cleanup'], function(_injectElementWithStyles, _sinon, _cleanup) {
req(['injectElementWithStyles', 'sinon', 'cleanup'], function(_injectElementWithStyles, _sinon, _cleanup) {
injectElementWithStyles = _injectElementWithStyles;
sinon = _sinon;
cleanup = _cleanup;

View File

@@ -4,12 +4,13 @@ describe('inputElem', function() {
before(function(done) {
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['inputElem', 'cleanup'], function(_inputElem, _cleanup) {
req(['inputElem', 'cleanup'], function(_inputElem, _cleanup) {
inputElem = _inputElem;
cleanup = _cleanup;
done();

View File

@@ -4,12 +4,13 @@ describe('inputattrs', function() {
before(function(done) {
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['inputattrs', 'cleanup'], function(_inputattrs, _cleanup) {
req(['inputattrs', 'cleanup'], function(_inputattrs, _cleanup) {
inputattrs = _inputattrs;
cleanup = _cleanup;
done();

View File

@@ -4,12 +4,13 @@ describe('inputs', function() {
before(function(done) {
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['inputs', 'cleanup'], function(_inputs, _cleanup) {
req(['inputs', 'cleanup'], function(_inputs, _cleanup) {
inputs = _inputs;
cleanup = _cleanup;
done();

View File

@@ -4,12 +4,13 @@ describe('inputtypes', function() {
before(function(done) {
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['inputtypes', 'cleanup'], function(_inputtypes, _cleanup) {
req(['inputtypes', 'cleanup'], function(_inputtypes, _cleanup) {
inputtypes = _inputtypes;
cleanup = _cleanup;
done();

View File

@@ -4,12 +4,13 @@ describe('is', function() {
before(function(done) {
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['is', 'cleanup'], function(_is, _cleanup) {
req(['is', 'cleanup'], function(_is, _cleanup) {
is = _is;
cleanup = _cleanup;
done();

View File

@@ -1,17 +1,19 @@
describe('isEventSupported', function() {
var isEventSupported;
var cleanup;
var req;
before(function(done) {
define('package', [], function() {return {};});
requirejs.config({
req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['isEventSupported', 'cleanup'], function(_isEventSupported, _cleanup) {
req(['isEventSupported', 'cleanup'], function(_isEventSupported, _cleanup) {
isEventSupported = _isEventSupported;
cleanup = _cleanup;
done();
@@ -54,8 +56,8 @@ describe('isEventSupported', function() {
delete document.documentElement.onblur;
} catch (e) {}
requirejs.undef('isEventSupported');
requirejs.undef('createElement');
req.undef('isEventSupported');
req.undef('createElement');
define('createElement', [], function() {
return function() {
@@ -77,7 +79,7 @@ describe('isEventSupported', function() {
};
});
requirejs(['isEventSupported'], function(_isEventSupported) {
req(['isEventSupported'], function(_isEventSupported) {
isEventSupported = _isEventSupported;
done();
});

View File

@@ -9,7 +9,8 @@ describe('load', function() {
define('ModernizrProto', [], function(){return {};});
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: {
sinon: '../test/js/lib/sinon',
@@ -17,7 +18,7 @@ describe('load', function() {
}
});
requirejs(['ModernizrProto', 'sinon', 'load', 'cleanup'], function(_ModernizrProto, _sinon, _load, _cleanup) {
req(['ModernizrProto', 'sinon', 'load', 'cleanup'], function(_ModernizrProto, _sinon, _load, _cleanup) {
ModernizrProto = _ModernizrProto;
cleanup = _cleanup;
sinon = _sinon;

View File

@@ -2,10 +2,12 @@ describe('mStyle', function() {
var Modernizr;
var mStyle;
var cleanup;
var req;
before(function() {
requirejs.config({
req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
@@ -16,12 +18,13 @@ describe('mStyle', function() {
Modernizr = {_q: []};
define('Modernizr', [], function() {return Modernizr;});
requirejs.config({
req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['mStyle', 'cleanup'], function(_mStyle, _cleanup) {
req(['mStyle', 'cleanup'], function(_mStyle, _cleanup) {
mStyle = _mStyle;
cleanup = _cleanup;
done();
@@ -44,8 +47,8 @@ describe('mStyle', function() {
});
afterEach(function() {
requirejs.undef('Modernizr');
requirejs.undef('mStyle');
req.undef('Modernizr');
req.undef('mStyle');
});
after(function() {

View File

@@ -2,26 +2,19 @@ describe('modElem', function() {
var Modernizr;
var modElem;
var cleanup;
before(function() {
requirejs.config({
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
});
var req;
beforeEach(function(done) {
Modernizr = {_q: []};
define('Modernizr', [], function() {return Modernizr;});
requirejs.config({
req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['modElem', 'cleanup'], function(_modElem, _cleanup) {
req(['modElem', 'cleanup'], function(_modElem, _cleanup) {
modElem = _modElem;
cleanup = _cleanup;
done();
@@ -45,8 +38,8 @@ describe('modElem', function() {
});
afterEach(function() {
requirejs.undef('Modernizr');
requirejs.undef('modElem');
req.undef('Modernizr');
req.undef('modElem');
});
after(function() {

View File

@@ -8,12 +8,13 @@ describe('mq', function() {
define('ModernizrProto', [], function(){return ModernizrProto;});
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['mq', 'testMediaQuery', 'cleanup'], function(_mq, _testMediaQuery, _cleanup) {
req(['mq', 'testMediaQuery', 'cleanup'], function(_mq, _testMediaQuery, _cleanup) {
testMediaQuery = _testMediaQuery;
mq = _mq;
cleanup = _cleanup;

View File

@@ -6,12 +6,13 @@ describe('nativeTestProps', function() {
define('package', [], function() {return {};});
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['nativeTestProps', 'cleanup'], function(_nativeTestProps, _cleanup) {
req(['nativeTestProps', 'cleanup'], function(_nativeTestProps, _cleanup) {
nativeTestProps = _nativeTestProps;
cleanup = _cleanup;
done();

View File

@@ -4,12 +4,13 @@ describe('omPrefixes', function() {
before(function(done) {
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['omPrefixes', 'cleanup'], function(_omPrefixes, _cleanup) {
req(['omPrefixes', 'cleanup'], function(_omPrefixes, _cleanup) {
omPrefixes = _omPrefixes;
cleanup = _cleanup;
done();

View File

@@ -6,10 +6,12 @@ describe('prefixed', function() {
var cleanup;
var atRule;
var sinon;
var req;
before(function(done) {
requirejs.config({
req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: {
sinon: '../test/js/lib/sinon',
@@ -17,7 +19,7 @@ describe('prefixed', function() {
}
});
requirejs(['sinon', 'cleanup'], function(_sinon, _cleanup) {
req(['sinon', 'cleanup'], function(_sinon, _cleanup) {
sinon = _sinon;
cleanup = _cleanup;
done();
@@ -37,7 +39,7 @@ describe('prefixed', function() {
define('atRule', [], function(){return atRule;});
requirejs(['prefixed'], function(_prefixed) {
req(['prefixed'], function(_prefixed) {
prefixed = _prefixed;
done();
@@ -70,11 +72,11 @@ describe('prefixed', function() {
});
afterEach(function() {
requirejs.undef('ModernizrProto');
requirejs.undef('testPropsAll');
requirejs.undef('cssToDOM');
requirejs.undef('prefixed');
requirejs.undef('atRule');
req.undef('ModernizrProto');
req.undef('testPropsAll');
req.undef('cssToDOM');
req.undef('prefixed');
req.undef('atRule');
});
after(function() {

View File

@@ -8,12 +8,13 @@ describe('prefixedCSS', function() {
define('package', [], function() {return {version: 'v9999'};});
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['cleanup', 'prefixedCSS'], function(_cleanup, _prefixedCSS) {
req(['cleanup', 'prefixedCSS'], function(_cleanup, _prefixedCSS) {
prefixedCSS = _prefixedCSS;
cleanup = _cleanup;
done();

View File

@@ -3,7 +3,7 @@ describe('prefixes', function() {
return (function() {
define('ModernizrProto', [], function() {return {_config: {usePrefixes: bool}};});
requirejs(['prefixes'], function(_prefixes) {
req(['prefixes'], function(_prefixes) {
prefixes = _prefixes;
done();
});
@@ -11,22 +11,24 @@ describe('prefixes', function() {
};
var teardown = function() {
prefixes = undefined;
requirejs.undef('prefixes');
requirejs.undef('ModernizrProto');
req.undef('prefixes');
req.undef('ModernizrProto');
};
var prefixes;
var cleanup;
var req;
before(function(done) {
define('package', [], function() {return {};});
requirejs.config({
req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['cleanup'], function(_cleanup) {
req(['cleanup'], function(_cleanup) {
cleanup = _cleanup;
done();
});
@@ -40,7 +42,7 @@ describe('prefixes', function() {
after(teardown);
it('returns prefixes', function(done) {
requirejs(['prefixes'], function(prefixes) {
req(['prefixes'], function(prefixes) {
expect(prefixes).to.be.an('array');
expect(prefixes).to.not.have.length(0);
done();
@@ -56,7 +58,7 @@ describe('prefixes', function() {
after(teardown);
it('returns no prefixes', function(done) {
requirejs(['prefixes'], function(prefixes) {
req(['prefixes'], function(prefixes) {
expect(prefixes).to.be.an('array');
expect(prefixes).to.have.length(0);
done();

View File

@@ -4,12 +4,13 @@ describe('roundedEquals', function() {
before(function(done) {
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['roundedEquals', 'cleanup'], function(_roundedEquals, _cleanup) {
req(['roundedEquals', 'cleanup'], function(_roundedEquals, _cleanup) {
roundedEquals = _roundedEquals;
cleanup = _cleanup;
done();

View File

@@ -2,6 +2,7 @@ describe('setClasses', function() {
var setClasses;
var cleanup;
var elm;
var req;
var setup = function(done, config, defaultClassName) {
return (function() {
@@ -15,7 +16,7 @@ describe('setClasses', function() {
define('Modernizr', [], function() {return modConfig;});
define('docElement', [], function() {return elm;});
requirejs(['setClasses'], function(_setClasses) {
req(['setClasses'], function(_setClasses) {
setClasses = _setClasses;
done();
});
@@ -23,21 +24,22 @@ describe('setClasses', function() {
};
var teardown = function() {
setClasses = undefined;
requirejs.undef('setClasses');
requirejs.undef('docElement');
requirejs.undef('Modernizr');
req.undef('setClasses');
req.undef('docElement');
req.undef('Modernizr');
};
before(function(done) {
define('package', [], function() {return {};});
requirejs.config({
req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['cleanup'], function(_cleanup) {
req(['cleanup'], function(_cleanup) {
cleanup = _cleanup;
done();
});
@@ -52,7 +54,7 @@ describe('setClasses', function() {
});
it('should not add anything', function(done) {
requirejs(['setClasses'], function(setClasses) {
req(['setClasses'], function(setClasses) {
setClasses(['detect']);
expect(elm.className).to.not.contain('fakedetect');
done();
@@ -71,7 +73,7 @@ describe('setClasses', function() {
});
it('adds a class with a prefix', function(done) {
requirejs(['setClasses'], function(setClasses) {
req(['setClasses'], function(setClasses) {
setClasses(['detect']);
expect(elm.className).to.contain('fakedetect');
done();
@@ -91,7 +93,7 @@ describe('setClasses', function() {
after(teardown);
it('adds a class without a prefix', function(done) {
requirejs(['setClasses'], function(setClasses) {
req(['setClasses'], function(setClasses) {
setClasses(['detect']);
expect(elm.className).to.contain('detect');
done();
@@ -110,7 +112,7 @@ describe('setClasses', function() {
});
it('changes the `js` class, and adds a class with a prefix', function(done) {
requirejs(['setClasses'], function(setClasses) {
req(['setClasses'], function(setClasses) {
var classNames = elm.className.split(' ');
expect(classNames).to.contain('fakeno-js');
setClasses(['detect']);
@@ -140,7 +142,7 @@ describe('setClasses', function() {
after(teardown);
it('changes the `js` class, and adds a class without a prefix', function(done) {
requirejs(['setClasses'], function(setClasses) {
req(['setClasses'], function(setClasses) {
var classNames = elm.className.split(' ');
expect(classNames).to.contain('no-js');
setClasses(['detect']);

View File

@@ -7,12 +7,13 @@ describe('setCss', function() {
elm = document.createElement('div');
define('mStyle', [], function() {return elm;});
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['setCss', 'cleanup'], function(_setCss, _cleanup) {
req(['setCss', 'cleanup'], function(_setCss, _cleanup) {
setCss = _setCss;
cleanup = _cleanup;
done();

View File

@@ -4,12 +4,13 @@ describe('slice', function() {
before(function(done) {
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['slice', 'cleanup'], function(_slice, _cleanup) {
req(['slice', 'cleanup'], function(_slice, _cleanup) {
slice = _slice;
cleanup = _cleanup;
done();

View File

@@ -4,12 +4,13 @@ describe('smile', function() {
before(function(done) {
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['smile', 'cleanup'], function(_smile, _cleanup) {
req(['smile', 'cleanup'], function(_smile, _cleanup) {
smile = _smile;
cleanup = _cleanup;
done();

View File

@@ -4,10 +4,12 @@ describe('testAllProps', function() {
var testPropsAll;
var cleanup;
var sinon;
var req;
before(function(done) {
requirejs.config({
req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: {
sinon: '../test/js/lib/sinon',
@@ -18,7 +20,7 @@ describe('testAllProps', function() {
define('ModernizrProto', [], function(){return ModernizrProto;});
define('package', [], function() {return {};});
requirejs(['cleanup', 'sinon'], function(_cleanup, _sinon) {
req(['cleanup', 'sinon'], function(_cleanup, _sinon) {
cleanup = _cleanup;
sinon = _sinon;
done();
@@ -30,7 +32,7 @@ describe('testAllProps', function() {
define('testPropsAll', function() {return testPropsAll;});
requirejs(['testAllProps'], function(_testAllProps) {
req(['testAllProps'], function(_testAllProps) {
testAllProps = _testAllProps;
done();
});

View File

@@ -2,15 +2,17 @@ describe('testDOMProps', function() {
var elm = document.createElement('div');
var testDOMProps;
var cleanup;
var req;
before(function(done) {
requirejs.config({
req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['cleanup'], function(_cleanup) {
req(['cleanup'], function(_cleanup) {
cleanup = _cleanup;
done();
});
@@ -18,7 +20,7 @@ describe('testDOMProps', function() {
});
beforeEach(function(done) {
requirejs(['testDOMProps'], function(_testDOMProps) {
req(['testDOMProps'], function(_testDOMProps) {
testDOMProps = _testDOMProps;
done();
});

View File

@@ -3,6 +3,8 @@ describe('testMediaQuery', function() {
var testMediaQuery;
var cleanup;
var sinon;
var req;
var media = window.matchMedia || (function() {
// adapted from jQuery Mobile
// http://git.io/NFWo
@@ -36,7 +38,8 @@ describe('testMediaQuery', function() {
before(function(done) {
requirejs.config({
req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: {
sinon: '../test/js/lib/sinon',
@@ -44,7 +47,7 @@ describe('testMediaQuery', function() {
}
});
requirejs(['injectElementWithStyles', 'cleanup', 'sinon'], function(_injectElementWithStyles, _cleanup, _sinon) {
req(['injectElementWithStyles', 'cleanup', 'sinon'], function(_injectElementWithStyles, _cleanup, _sinon) {
injectElementWithStyles = _injectElementWithStyles;
cleanup = _cleanup;
sinon = _sinon;
@@ -56,7 +59,7 @@ describe('testMediaQuery', function() {
if (window.matchMedia || window.msMatchMedia) {
describe('matchMedia version', function() {
before(function(done) {
requirejs(['testMediaQuery'], function(_testMediaQuery) {
req(['testMediaQuery'], function(_testMediaQuery) {
testMediaQuery = _testMediaQuery;
done();
});
@@ -72,12 +75,12 @@ describe('testMediaQuery', function() {
before(function(done) {
injectElementWithStyles = sinon.spy(injectElementWithStyles);
requirejs.undef('injectElementWithStyles');
requirejs.undef('testMediaQuery');
req.undef('injectElementWithStyles');
req.undef('testMediaQuery');
define('injectElementWithStyles', [], function() {return injectElementWithStyles;});
requirejs(['testMediaQuery'], function(_testMediaQuery) {
req(['testMediaQuery'], function(_testMediaQuery) {
testMediaQuery = _testMediaQuery;
done();
});
@@ -95,7 +98,7 @@ describe('testMediaQuery', function() {
}
afterEach(function() {
requirejs.undef('testMediaQuery');
req.undef('testMediaQuery');
});
after(function() {

View File

@@ -4,10 +4,12 @@ describe('testProp', function() {
var testProps;
var cleanup;
var sinon;
var req;
before(function(done) {
requirejs.config({
req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: {
sinon: '../test/js/lib/sinon',
@@ -18,7 +20,7 @@ describe('testProp', function() {
define('ModernizrProto', [], function(){return ModernizrProto;});
define('package', [], function() {return {};});
requirejs(['cleanup', 'sinon'], function(_cleanup, _sinon) {
req(['cleanup', 'sinon'], function(_cleanup, _sinon) {
cleanup = _cleanup;
sinon = _sinon;
done();
@@ -30,7 +32,7 @@ describe('testProp', function() {
define('testProps', function() {return testProps;});
requirejs(['testProp'], function(_testProp) {
req(['testProp'], function(_testProp) {
testProp = _testProp;
done();
});

View File

@@ -4,10 +4,12 @@ describe('testProps', function() {
var testProps;
var cleanup;
var sinon;
var req;
before(function(done) {
requirejs.config({
req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: {
sinon: '../test/js/lib/sinon',
@@ -19,7 +21,7 @@ describe('testProps', function() {
define('Modernizr', function() {return Modernizr;});
define('package', [], function() {return {};});
requirejs(['cleanup', 'sinon'], function(_cleanup, _sinon) {
req(['cleanup', 'sinon'], function(_cleanup, _sinon) {
cleanup = _cleanup;
sinon = _sinon;
done();
@@ -40,7 +42,7 @@ describe('testProps', function() {
define('contains', function() {return contains;});
define('nativeTestProps', sinon.spy(function() {return nativeTestProps;}));
requirejs(['testProps'], function(_testProps) {
req(['testProps'], function(_testProps) {
testProps = _testProps;
done();
});
@@ -59,11 +61,11 @@ describe('testProps', function() {
});
afterEach(function() {
requirejs.undef('mStyle');
requirejs.undef('cssToDOM');
requirejs.undef('contains');
requirejs.undef('testProps');
requirejs.undef('nativeTestProps');
req.undef('mStyle');
req.undef('cssToDOM');
req.undef('contains');
req.undef('testProps');
req.undef('nativeTestProps');
});
});
@@ -84,7 +86,7 @@ describe('testProps', function() {
define('contains', function() {return contains;});
define('mStyle', function() {return mStyle;});
requirejs(['testProps'], function(_testProps) {
req(['testProps'], function(_testProps) {
testProps = _testProps;
done();
});
@@ -134,12 +136,12 @@ describe('testProps', function() {
afterEach(function() {
requirejs.undef('mStyle');
requirejs.undef('cssToDOM');
requirejs.undef('contains');
requirejs.undef('testProps');
requirejs.undef('ModernizrProto');
requirejs.undef('nativeTestProps');
req.undef('mStyle');
req.undef('cssToDOM');
req.undef('contains');
req.undef('testProps');
req.undef('ModernizrProto');
req.undef('nativeTestProps');
});
});

View File

@@ -5,10 +5,12 @@ describe('testPropsAll', function() {
var testDOMProps;
var testProps;
var cleanup;
var req;
before(function(done) {
requirejs.config({
req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: {
sinon: '../test/js/lib/sinon',
@@ -20,7 +22,7 @@ describe('testPropsAll', function() {
define('Modernizr', [], function(){return Modernizr;});
define('package', [], function() {return {};});
requirejs(['testDOMProps', 'testProps', 'cleanup', 'sinon'], function(_testDOMProps, _testProps, _cleanup, _sinon) {
req(['testDOMProps', 'testProps', 'cleanup', 'sinon'], function(_testDOMProps, _testProps, _cleanup, _sinon) {
testDOMProps = _sinon.spy(_testDOMProps);
testProps = _sinon.spy(_testProps);
cleanup = _cleanup;
@@ -31,8 +33,8 @@ describe('testPropsAll', function() {
});
beforeEach(function(done) {
requirejs.undef('testDOMProps');
requirejs.undef('testProps');
req.undef('testDOMProps');
req.undef('testProps');
testDOMProps.reset();
testProps.reset();
@@ -40,7 +42,7 @@ describe('testPropsAll', function() {
define('testDOMProps', function() {return testDOMProps;});
define('testProps', function() {return testProps;});
requirejs(['testPropsAll'], function(_testPropsAll) {
req(['testPropsAll'], function(_testPropsAll) {
testPropsAll = _testPropsAll;
expect(testDOMProps.callCount).to.be(0);
@@ -70,9 +72,9 @@ describe('testPropsAll', function() {
});
afterEach(function() {
requirejs.undef('testPropsAll');
requirejs.undef('testDOMProps');
requirejs.undef('testProps');
req.undef('testPropsAll');
req.undef('testDOMProps');
req.undef('testProps');
});
after(function() {

View File

@@ -1,10 +1,12 @@
describe('testRunner', function() {
var Modernizr = {};
var cleanup;
var req;
before(function(done) {
requirejs.config({
req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
@@ -46,7 +48,7 @@ describe('testRunner', function() {
];
});
requirejs(['testRunner', 'cleanup'], function(_testRunner, _cleanup) {
req(['testRunner', 'cleanup'], function(_testRunner, _cleanup) {
_testRunner();
cleanup = _cleanup;
done();
@@ -76,8 +78,8 @@ describe('testRunner', function() {
});
afterEach(function() {
requirejs.undef('testRunner');
requirejs.undef('Modernizr');
req.undef('testRunner');
req.undef('Modernizr');
});
after(function() {

View File

@@ -9,12 +9,13 @@ describe('testStyles', function() {
define('ModernizrProto', [], function(){return {};});
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['ModernizrProto', 'testStyles', 'injectElementWithStyles', 'cleanup'], function(_ModernizrProto, _testStyles, _injectElementWithStyles, _cleanup) {
req(['ModernizrProto', 'testStyles', 'injectElementWithStyles', 'cleanup'], function(_ModernizrProto, _testStyles, _injectElementWithStyles, _cleanup) {
injectElementWithStyles = _injectElementWithStyles;
ModernizrProto = _ModernizrProto;
testStyles = _testStyles;

View File

@@ -1,16 +1,18 @@
describe('testXhrType', function() {
var cleanup;
var req;
before(function(done) {
requirejs.config({
req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: {
cleanup: '../test/cleanup'
}
});
requirejs(['cleanup'], function(_cleanup) {
req(['cleanup'], function(_cleanup) {
cleanup = _cleanup;
done();
});
@@ -21,7 +23,7 @@ describe('testXhrType', function() {
var originalXhr = XMLHttpRequest;
XMLHttpRequest = undefined;
requirejs(['testXhrType'], function(testXhrType) {
req(['testXhrType'], function(testXhrType) {
expect(testXhrType('json')).to.equal(false);
XMLHttpRequest = originalXhr;
done();
@@ -33,7 +35,7 @@ describe('testXhrType', function() {
// http://git.io/AemZ
afterEach(function() {
requirejs.undef('testXhrType');
req.undef('testXhrType');
});
after(function() {

View File

@@ -4,12 +4,13 @@ describe('tests', function() {
before(function(done) {
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['tests', 'cleanup'], function(_tests, _cleanup) {
req(['tests', 'cleanup'], function(_tests, _cleanup) {
tests = _tests;
cleanup = _cleanup;
done();

View File

@@ -4,12 +4,13 @@ describe('toStringFn', function() {
before(function(done) {
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
baseUrl: '../src',
paths: { cleanup: '../test/cleanup' }
});
requirejs(['toStringFn', 'cleanup'], function(_toStringFn, _cleanup) {
req(['toStringFn', 'cleanup'], function(_toStringFn, _cleanup) {
toStringFn = _toStringFn;
cleanup = _cleanup;
done();

View File

@@ -11,6 +11,7 @@ html
#fixtures
script(src='../node_modules/json3/lib/json3.min.js')
script(src='../node_modules/jquery/dist/jquery.min.js')
script(src='../node_modules/lodash/index.js')
script(src='../node_modules/requirejs/require.js')
script(src='../node_modules/mocha/mocha.js')
script.

View File

@@ -11,13 +11,16 @@ if (typeof define !== 'function') {
var filesRoot = '..';
}
var cleanup;
var req;
describe('build-hash', function() {
var buildHash;
before(function(done) {
requirejs.config({
req = requirejs.config({
context: Math.random().toString().slice(2),
paths: {
lib: filesRoot + '/lib',
lodash: projectRoot + '/node_modules/lodash/index',
@@ -26,7 +29,7 @@ describe('build-hash', function() {
}
});
requirejs(['lib/build-hash', 'cleanup'], function(_buildHash, _cleanup) {
req(['lib/build-hash', 'cleanup'], function(_buildHash, _cleanup) {
buildHash = _buildHash;
cleanup = _cleanup;
done();

View File

@@ -8,6 +8,7 @@ if (typeof define !== 'function') {
var pkg = require(projectRoot + '/package');
var expect = require('expect.js');
var domain = 'modernizr.com';
var _ = require('lodash');
var def = function() {
return requirejs.define.apply(this, arguments);
};
@@ -16,6 +17,7 @@ if (typeof define !== 'function') {
var projectRoot = '..';
var filesRoot = '..';
var pkg = {};
var _ = window.lodash;
var def = function() {
return define.apply(this, arguments);
};
@@ -26,17 +28,19 @@ var cleanup;
describe('generate-banner', function() {
before(function(done) {
requirejs.config({
var req = requirejs.config({
context: Math.random().toString().slice(2),
paths: {
'lib': projectRoot + '/test/mocks/lib',
'generateBanner': filesRoot + '/lib/generate-banner',
'cleanup': projectRoot + '/test/cleanup'
lib: projectRoot + '/test/mocks/lib',
generateBanner: filesRoot + '/lib/generate-banner',
cleanup: projectRoot + '/test/cleanup'
}
});
def('package', [], function() {return pkg;});
def('lodash', [], function() {return _;});
requirejs(['generateBanner', 'package', 'cleanup'], function(_generateBanner, _pkg, _cleanup) {
req(['generateBanner', 'package', 'cleanup'], function(_generateBanner, _pkg, _cleanup) {
generateBanner = _generateBanner;
cleanup = _cleanup;
pkg = _pkg;