Commit 8effe3a7 authored by jeresig's avatar jeresig

Made it so that you no longer need to build jQuery in order to run the test...

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).
parent ba8938d4
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({ ...@@ -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, ...@@ -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 ) {
......
(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 ) { ...@@ -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({ ...@@ -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() { ...@@ -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, ...@@ -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 );
} }
......
var expando = "jQuery" + now(), uuid = 0, windowData = {}; var expando = "jQuery" + jQuery.now(), uuid = 0, windowData = {};
jQuery.extend({ jQuery.extend({
cache: {}, cache: {},
......
...@@ -320,7 +320,7 @@ jQuery.fx.prototype = { ...@@ -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 = { ...@@ -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 ) { ...@@ -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({ ...@@ -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 );
}
}
\ No newline at end of file
// Expose jQuery to the global object
window.jQuery = window.$ = jQuery;
})(window); })(window);
...@@ -2,6 +2,6 @@ jQuery.find = Sizzle; ...@@ -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 @@ ...@@ -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'/>";
......
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({ ...@@ -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;
});
};
\ No newline at end of file
...@@ -6,23 +6,39 @@ ...@@ -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() { ...@@ -482,8 +482,10 @@ test("addClass(Function) with incoming value", function() {
}); });
div.addClass(function(i, val) { div.addClass(function(i, val) {
equals( val, old[i], "Make sure the incoming value is correct." ); if ( this.id !== "_firebugConsole" ) {
return "test"; equals( val, old[i], "Make sure the incoming value is correct." );
return "test";
}
}); });
var pass = true; var pass = true;
...@@ -553,8 +555,10 @@ test("removeClass(Function) with incoming value", function() { ...@@ -553,8 +555,10 @@ test("removeClass(Function) with incoming value", function() {
}); });
$divs.removeClass(function(i, val) { $divs.removeClass(function(i, val) {
equals( val, old[i], "Make sure the incoming value is correct." ); if ( this.id !== "_firebugConsole" ) {
return "test"; equals( val, old[i], "Make sure the incoming value is correct." );
return "test";
}
}); });
ok( !$divs.is('.test'), "Remove Class" ); ok( !$divs.is('.test'), "Remove Class" );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment