Made it so that you no longer need to build jQuery in order to run the test suite (but you'll still need a checkout of QUnit and Sizzle, at least).
This commit is contained in:
parent
ba8938d444
commit
8effe3a7de
|
@ -1,4 +1,4 @@
|
||||||
var jsc = now(),
|
var jsc = jQuery.now(),
|
||||||
rscript = /<script(.|\s)*?\/script>/gi,
|
rscript = /<script(.|\s)*?\/script>/gi,
|
||||||
rselectTextarea = /select|textarea/i,
|
rselectTextarea = /select|textarea/i,
|
||||||
rinput = /color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,
|
rinput = /color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,
|
||||||
|
@ -259,7 +259,7 @@ jQuery.extend({
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( s.cache === false && type === "GET" ) {
|
if ( s.cache === false && type === "GET" ) {
|
||||||
var ts = now();
|
var ts = jQuery.now();
|
||||||
|
|
||||||
// try replacing _= if it is there
|
// try replacing _= if it is there
|
||||||
var ret = s.url.replace(rts, "$1_=" + ts + "$2");
|
var ret = s.url.replace(rts, "$1_=" + ts + "$2");
|
||||||
|
|
|
@ -9,7 +9,7 @@ var rclass = /[\n\t]/g,
|
||||||
|
|
||||||
jQuery.fn.extend({
|
jQuery.fn.extend({
|
||||||
attr: function( name, value ) {
|
attr: function( name, value ) {
|
||||||
return access( this, name, value, true, jQuery.attr );
|
return jQuery.access( this, name, value, true, jQuery.attr );
|
||||||
},
|
},
|
||||||
|
|
||||||
removeAttr: function( name, fn ) {
|
removeAttr: function( name, fn ) {
|
||||||
|
|
87
src/core.js
87
src/core.js
|
@ -1,3 +1,5 @@
|
||||||
|
(function() {
|
||||||
|
|
||||||
// Define a local copy of jQuery
|
// Define a local copy of jQuery
|
||||||
var jQuery = function( selector, context ) {
|
var jQuery = function( selector, context ) {
|
||||||
// The jQuery object is actually just the init constructor 'enhanced'
|
// The jQuery object is actually just the init constructor 'enhanced'
|
||||||
|
@ -11,7 +13,7 @@ var jQuery = function( selector, context ) {
|
||||||
_$ = window.$,
|
_$ = window.$,
|
||||||
|
|
||||||
// Use the correct document accordingly with window argument (sandbox)
|
// Use the correct document accordingly with window argument (sandbox)
|
||||||
document = window.document,
|
//document = window.document,
|
||||||
|
|
||||||
// A central reference to the root jQuery(document)
|
// A central reference to the root jQuery(document)
|
||||||
rootjQuery,
|
rootjQuery,
|
||||||
|
@ -699,6 +701,39 @@ jQuery.extend({
|
||||||
return proxy;
|
return proxy;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Mutifunctional method to get and set values to a collection
|
||||||
|
// The value/s can be optionally by executed if its a function
|
||||||
|
access: function( elems, key, value, exec, fn, pass ) {
|
||||||
|
var length = elems.length;
|
||||||
|
|
||||||
|
// Setting many attributes
|
||||||
|
if ( typeof key === "object" ) {
|
||||||
|
for ( var k in key ) {
|
||||||
|
jQuery.access( elems, k, key[k], exec, fn, value );
|
||||||
|
}
|
||||||
|
return elems;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setting one attribute
|
||||||
|
if ( value !== undefined ) {
|
||||||
|
// Optionally, function values get executed if exec is true
|
||||||
|
exec = !pass && exec && jQuery.isFunction(value);
|
||||||
|
|
||||||
|
for ( var i = 0; i < length; i++ ) {
|
||||||
|
fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
|
||||||
|
}
|
||||||
|
|
||||||
|
return elems;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getting an attribute
|
||||||
|
return length ? fn( elems[0], key ) : undefined;
|
||||||
|
},
|
||||||
|
|
||||||
|
now: function() {
|
||||||
|
return (new Date()).getTime();
|
||||||
|
},
|
||||||
|
|
||||||
// Use of jQuery.browser is frowned upon.
|
// Use of jQuery.browser is frowned upon.
|
||||||
// More details: http://docs.jquery.com/Utilities/jQuery.browser
|
// More details: http://docs.jquery.com/Utilities/jQuery.browser
|
||||||
uaMatch: function( ua ) {
|
uaMatch: function( ua ) {
|
||||||
|
@ -779,51 +814,7 @@ function doScrollCheck() {
|
||||||
jQuery.ready();
|
jQuery.ready();
|
||||||
}
|
}
|
||||||
|
|
||||||
function evalScript( i, elem ) {
|
// Expose jQuery to the global object
|
||||||
if ( elem.src ) {
|
window.jQuery = window.$ = jQuery;
|
||||||
jQuery.ajax({
|
|
||||||
url: elem.src,
|
|
||||||
async: false,
|
|
||||||
dataType: "script"
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( elem.parentNode ) {
|
})();
|
||||||
elem.parentNode.removeChild( elem );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mutifunctional method to get and set values to a collection
|
|
||||||
// The value/s can be optionally by executed if its a function
|
|
||||||
function access( elems, key, value, exec, fn, pass ) {
|
|
||||||
var length = elems.length;
|
|
||||||
|
|
||||||
// Setting many attributes
|
|
||||||
if ( typeof key === "object" ) {
|
|
||||||
for ( var k in key ) {
|
|
||||||
access( elems, k, key[k], exec, fn, value );
|
|
||||||
}
|
|
||||||
return elems;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setting one attribute
|
|
||||||
if ( value !== undefined ) {
|
|
||||||
// Optionally, function values get executed if exec is true
|
|
||||||
exec = !pass && exec && jQuery.isFunction(value);
|
|
||||||
|
|
||||||
for ( var i = 0; i < length; i++ ) {
|
|
||||||
fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
|
|
||||||
}
|
|
||||||
|
|
||||||
return elems;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Getting an attribute
|
|
||||||
return length ? fn( elems[0], key ) : undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
function now() {
|
|
||||||
return (new Date()).getTime();
|
|
||||||
}
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ var rexclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
|
||||||
};
|
};
|
||||||
|
|
||||||
jQuery.fn.css = function( name, value ) {
|
jQuery.fn.css = function( name, value ) {
|
||||||
return access( this, name, value, true, function( elem, name, value ) {
|
return jQuery.access( this, name, value, true, function( elem, name, value ) {
|
||||||
if ( value === undefined ) {
|
if ( value === undefined ) {
|
||||||
return jQuery.curCSS( elem, name );
|
return jQuery.curCSS( elem, name );
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
var expando = "jQuery" + now(), uuid = 0, windowData = {};
|
var expando = "jQuery" + jQuery.now(), uuid = 0, windowData = {};
|
||||||
|
|
||||||
jQuery.extend({
|
jQuery.extend({
|
||||||
cache: {},
|
cache: {},
|
||||||
|
|
4
src/effects.js
vendored
4
src/effects.js
vendored
|
@ -320,7 +320,7 @@ jQuery.fx.prototype = {
|
||||||
|
|
||||||
// Start an animation from one number to another
|
// Start an animation from one number to another
|
||||||
custom: function( from, to, unit ) {
|
custom: function( from, to, unit ) {
|
||||||
this.startTime = now();
|
this.startTime = jQuery.now();
|
||||||
this.start = from;
|
this.start = from;
|
||||||
this.end = to;
|
this.end = to;
|
||||||
this.unit = unit || this.unit || "px";
|
this.unit = unit || this.unit || "px";
|
||||||
|
@ -366,7 +366,7 @@ jQuery.fx.prototype = {
|
||||||
|
|
||||||
// Each step of an animation
|
// Each step of an animation
|
||||||
step: function( gotoEnd ) {
|
step: function( gotoEnd ) {
|
||||||
var t = now(), done = true;
|
var t = jQuery.now(), done = true;
|
||||||
|
|
||||||
if ( gotoEnd || t >= this.options.duration + this.startTime ) {
|
if ( gotoEnd || t >= this.options.duration + this.startTime ) {
|
||||||
this.now = this.end;
|
this.now = this.end;
|
||||||
|
|
|
@ -554,7 +554,7 @@ jQuery.Event = function( src ) {
|
||||||
|
|
||||||
// timeStamp is buggy for some events on Firefox(#3843)
|
// timeStamp is buggy for some events on Firefox(#3843)
|
||||||
// So we won't rely on the native value
|
// So we won't rely on the native value
|
||||||
this.timeStamp = now();
|
this.timeStamp = jQuery.now();
|
||||||
|
|
||||||
// Mark it as fixed
|
// Mark it as fixed
|
||||||
this[ expando ] = true;
|
this[ expando ] = true;
|
||||||
|
|
|
@ -584,3 +584,19 @@ jQuery.extend({
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function evalScript( i, elem ) {
|
||||||
|
if ( elem.src ) {
|
||||||
|
jQuery.ajax({
|
||||||
|
url: elem.src,
|
||||||
|
async: false,
|
||||||
|
dataType: "script"
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( elem.parentNode ) {
|
||||||
|
elem.parentNode.removeChild( elem );
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,4 +1 @@
|
||||||
// Expose jQuery to the global object
|
|
||||||
window.jQuery = window.$ = jQuery;
|
|
||||||
|
|
||||||
})(window);
|
})(window);
|
||||||
|
|
|
@ -2,6 +2,6 @@ jQuery.find = Sizzle;
|
||||||
jQuery.expr = Sizzle.selectors;
|
jQuery.expr = Sizzle.selectors;
|
||||||
jQuery.expr[":"] = jQuery.expr.filters;
|
jQuery.expr[":"] = jQuery.expr.filters;
|
||||||
jQuery.unique = Sizzle.uniqueSort;
|
jQuery.unique = Sizzle.uniqueSort;
|
||||||
jQuery.text = getText;
|
jQuery.text = Sizzle.getText;
|
||||||
jQuery.isXMLDoc = isXML;
|
jQuery.isXMLDoc = Sizzle.isXML;
|
||||||
jQuery.contains = contains;
|
jQuery.contains = Sizzle.contains;
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
var root = document.documentElement,
|
var root = document.documentElement,
|
||||||
script = document.createElement("script"),
|
script = document.createElement("script"),
|
||||||
div = document.createElement("div"),
|
div = document.createElement("div"),
|
||||||
id = "script" + now();
|
id = "script" + jQuery.now();
|
||||||
|
|
||||||
div.style.display = "none";
|
div.style.display = "none";
|
||||||
div.innerHTML = " <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
|
div.innerHTML = " <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
|
||||||
|
|
|
@ -1,37 +1,9 @@
|
||||||
var runtil = /Until$/,
|
var runtil = /Until$/,
|
||||||
rparentsprev = /^(?:parents|prevUntil|prevAll)/,
|
rparentsprev = /^(?:parents|prevUntil|prevAll)/,
|
||||||
// Note: This RegExp should be improved, or likely pulled from Sizzle
|
// Note: This RegExp should be improved, or likely pulled from Sizzle
|
||||||
rmultiselector = /,/;
|
rmultiselector = /,/,
|
||||||
|
isSimple = /^.[^:#\[\.,]*$/,
|
||||||
// Implement the identical functionality for filter and not
|
slice = Array.prototype.slice;
|
||||||
var winnow = function( elements, qualifier, keep ) {
|
|
||||||
if ( jQuery.isFunction( qualifier ) ) {
|
|
||||||
return jQuery.grep(elements, function( elem, i ) {
|
|
||||||
var retVal = !!qualifier.call( elem, i, elem );
|
|
||||||
return retVal === keep;
|
|
||||||
});
|
|
||||||
|
|
||||||
} else if ( qualifier.nodeType ) {
|
|
||||||
return jQuery.grep(elements, function( elem, i ) {
|
|
||||||
return (elem === qualifier) === keep;
|
|
||||||
});
|
|
||||||
|
|
||||||
} else if ( typeof qualifier === "string" ) {
|
|
||||||
var filtered = jQuery.grep(elements, function( elem ) {
|
|
||||||
return elem.nodeType === 1;
|
|
||||||
});
|
|
||||||
|
|
||||||
if ( isSimple.test( qualifier ) ) {
|
|
||||||
return jQuery.filter(qualifier, filtered, !keep);
|
|
||||||
} else {
|
|
||||||
qualifier = jQuery.filter( qualifier, filtered );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return jQuery.grep(elements, function( elem, i ) {
|
|
||||||
return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
jQuery.fn.extend({
|
jQuery.fn.extend({
|
||||||
find: function( selector ) {
|
find: function( selector ) {
|
||||||
|
@ -269,3 +241,33 @@ jQuery.extend({
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Implement the identical functionality for filter and not
|
||||||
|
function winnow( elements, qualifier, keep ) {
|
||||||
|
if ( jQuery.isFunction( qualifier ) ) {
|
||||||
|
return jQuery.grep(elements, function( elem, i ) {
|
||||||
|
var retVal = !!qualifier.call( elem, i, elem );
|
||||||
|
return retVal === keep;
|
||||||
|
});
|
||||||
|
|
||||||
|
} else if ( qualifier.nodeType ) {
|
||||||
|
return jQuery.grep(elements, function( elem, i ) {
|
||||||
|
return (elem === qualifier) === keep;
|
||||||
|
});
|
||||||
|
|
||||||
|
} else if ( typeof qualifier === "string" ) {
|
||||||
|
var filtered = jQuery.grep(elements, function( elem ) {
|
||||||
|
return elem.nodeType === 1;
|
||||||
|
});
|
||||||
|
|
||||||
|
if ( isSimple.test( qualifier ) ) {
|
||||||
|
return jQuery.filter(qualifier, filtered, !keep);
|
||||||
|
} else {
|
||||||
|
qualifier = jQuery.filter( qualifier, filtered );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return jQuery.grep(elements, function( elem, i ) {
|
||||||
|
return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
|
||||||
|
});
|
||||||
|
};
|
|
@ -6,23 +6,39 @@
|
||||||
<link rel="Stylesheet" media="screen" href="qunit/qunit/qunit.css" />
|
<link rel="Stylesheet" media="screen" href="qunit/qunit/qunit.css" />
|
||||||
<link rel="Stylesheet" media="screen" href="data/testsuite.css" />
|
<link rel="Stylesheet" media="screen" href="data/testsuite.css" />
|
||||||
<!-- Includes -->
|
<!-- Includes -->
|
||||||
<script type="text/javascript" src="data/testinit.js"></script>
|
<script src="data/testinit.js"></script>
|
||||||
<script type="text/javascript" src="../dist/jquery.js"></script>
|
|
||||||
<script type="text/javascript" src="qunit/qunit/qunit.js"></script>
|
<script src="../src/core.js"></script>
|
||||||
<script type="text/javascript" src="data/testrunner.js"></script>
|
<script src="../src/support.js"></script>
|
||||||
<script type="text/javascript" src="unit/core.js"></script>
|
<script src="../src/sizzle/sizzle.js"></script>
|
||||||
<script type="text/javascript" src="unit/data.js"></script>
|
<script src="../src/sizzle-jquery.js"></script>
|
||||||
<script type="text/javascript" src="unit/queue.js"></script>
|
<script src="../src/data.js"></script>
|
||||||
<script type="text/javascript" src="unit/attributes.js"></script>
|
<script src="../src/queue.js"></script>
|
||||||
<script type="text/javascript" src="unit/css.js"></script>
|
<script src="../src/attributes.js"></script>
|
||||||
<script type="text/javascript" src="unit/traversing.js"></script>
|
<script src="../src/css.js"></script>
|
||||||
<script type="text/javascript" src="unit/manipulation.js"></script>
|
<script src="../src/traversing.js"></script>
|
||||||
<script type="text/javascript" src="unit/dimensions.js"></script>
|
<script src="../src/manipulation.js"></script>
|
||||||
<script type="text/javascript" src="unit/selector.js"></script>
|
<script src="../src/dimensions.js"></script>
|
||||||
<script type="text/javascript" src="unit/event.js"></script>
|
<script src="../src/event.js"></script>
|
||||||
<script type="text/javascript" src="unit/ajax.js"></script>
|
<script src="../src/ajax.js"></script>
|
||||||
<script type="text/javascript" src="unit/effects.js"></script>
|
<script src="../src/effects.js"></script>
|
||||||
<script type="text/javascript" src="unit/offset.js"></script>
|
<script src="../src/offset.js"></script>
|
||||||
|
|
||||||
|
<script src="qunit/qunit/qunit.js"></script>
|
||||||
|
<script src="data/testrunner.js"></script>
|
||||||
|
<script src="unit/core.js"></script>
|
||||||
|
<script src="unit/data.js"></script>
|
||||||
|
<script src="unit/queue.js"></script>
|
||||||
|
<script src="unit/attributes.js"></script>
|
||||||
|
<script src="unit/css.js"></script>
|
||||||
|
<script src="unit/traversing.js"></script>
|
||||||
|
<script src="unit/manipulation.js"></script>
|
||||||
|
<script src="unit/dimensions.js"></script>
|
||||||
|
<script src="unit/selector.js"></script>
|
||||||
|
<script src="unit/event.js"></script>
|
||||||
|
<script src="unit/ajax.js"></script>
|
||||||
|
<script src="unit/effects.js"></script>
|
||||||
|
<script src="unit/offset.js"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body id="body">
|
<body id="body">
|
||||||
|
|
|
@ -482,8 +482,10 @@ test("addClass(Function) with incoming value", function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
div.addClass(function(i, val) {
|
div.addClass(function(i, val) {
|
||||||
|
if ( this.id !== "_firebugConsole" ) {
|
||||||
equals( val, old[i], "Make sure the incoming value is correct." );
|
equals( val, old[i], "Make sure the incoming value is correct." );
|
||||||
return "test";
|
return "test";
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var pass = true;
|
var pass = true;
|
||||||
|
@ -553,8 +555,10 @@ test("removeClass(Function) with incoming value", function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
$divs.removeClass(function(i, val) {
|
$divs.removeClass(function(i, val) {
|
||||||
|
if ( this.id !== "_firebugConsole" ) {
|
||||||
equals( val, old[i], "Make sure the incoming value is correct." );
|
equals( val, old[i], "Make sure the incoming value is correct." );
|
||||||
return "test";
|
return "test";
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
ok( !$divs.is('.test'), "Remove Class" );
|
ok( !$divs.is('.test'), "Remove Class" );
|
||||||
|
|
Loading…
Reference in a new issue