Merge in data_nocollide branch. Fixes #6968, improves unit testing framework checks for leaky stuff.
This commit is contained in:
commit
e78d3a7e2d
21 changed files with 556 additions and 242 deletions
|
@ -45,3 +45,52 @@ function t(a,b,c) {
|
|||
function url(value) {
|
||||
return value + (/\?/.test(value) ? "&" : "?") + new Date().getTime() + "" + parseInt(Math.random()*100000);
|
||||
}
|
||||
|
||||
(function () {
|
||||
// Store the old counts so that we only assert on tests that have actually leaked,
|
||||
// instead of asserting every time a test has leaked sometime in the past
|
||||
var oldCacheLength = 0,
|
||||
oldFragmentsLength = 0,
|
||||
oldTimersLength = 0,
|
||||
oldActive = 0;
|
||||
|
||||
/**
|
||||
* Ensures that tests have cleaned up properly after themselves. Should be passed as the
|
||||
* teardown function on all modules' lifecycle object.
|
||||
*/
|
||||
this.moduleTeardown = function () {
|
||||
var i, fragmentsLength = 0, cacheLength = 0;
|
||||
|
||||
// Allow QUnit.reset to clean up any attached elements before checking for leaks
|
||||
QUnit.reset();
|
||||
|
||||
for ( i in jQuery.cache ) {
|
||||
++cacheLength;
|
||||
}
|
||||
|
||||
jQuery.fragments = {};
|
||||
|
||||
for ( i in jQuery.fragments ) {
|
||||
++fragmentsLength;
|
||||
}
|
||||
|
||||
// Because QUnit doesn't have a mechanism for retrieving the number of expected assertions for a test,
|
||||
// if we unconditionally assert any of these, the test will fail with too many assertions :|
|
||||
if ( cacheLength !== oldCacheLength ) {
|
||||
equals( cacheLength, oldCacheLength, "No unit tests leak memory in jQuery.cache" );
|
||||
oldCacheLength = cacheLength;
|
||||
}
|
||||
if ( fragmentsLength !== oldFragmentsLength ) {
|
||||
equals( fragmentsLength, oldFragmentsLength, "No unit tests leak memory in jQuery.fragments" );
|
||||
oldFragmentsLength = fragmentsLength;
|
||||
}
|
||||
if ( jQuery.timers.length !== oldTimersLength ) {
|
||||
equals( jQuery.timers.length, oldTimersLength, "No timers are still running" );
|
||||
oldTimersLength = jQuery.timers.length;
|
||||
}
|
||||
if ( jQuery.active !== oldActive ) {
|
||||
equals( jQuery.active, 0, "No AJAX requests are still active" );
|
||||
oldActive = jQuery.active;
|
||||
}
|
||||
}
|
||||
}());
|
Loading…
Add table
Add a link
Reference in a new issue