aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
m---------src/sizzle0
-rw-r--r--test/data/selector/html5_selector.html (renamed from test/data/selector.html)44
-rw-r--r--test/data/selector/sizzle_cache.html40
-rw-r--r--test/unit/selector.js47
4 files changed, 90 insertions, 41 deletions
diff --git a/src/sizzle b/src/sizzle
-Subproject 3ffd629e38c3a1cc31febc010718c985a4f85a4
+Subproject f56f1784961a63f4118e43b1441ffc2f32ef5d4
diff --git a/test/data/selector.html b/test/data/selector/html5_selector.html
index 8ffc6c6b3..28aa2b607 100644
--- a/test/data/selector.html
+++ b/test/data/selector/html5_selector.html
@@ -2,28 +2,28 @@
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
- <title>jQuery selector</title>
-
- <script src="../../src/core.js"></script>
- <script src="../../src/callbacks.js"></script>
- <script src="../../src/deferred.js"></script>
- <script src="../../src/support.js"></script>
- <script src="../../src/data.js"></script>
- <script src="../../src/queue.js"></script>
- <script src="../../src/attributes.js"></script>
- <script src="../../src/event.js"></script>
- <script src="../../src/sizzle/sizzle.js"></script>
- <script src="../../src/sizzle-jquery.js"></script>
- <script src="../../src/traversing.js"></script>
- <script src="../../src/manipulation.js"></script>
- <script src="../../src/css.js"></script>
- <script src="../../src/ajax.js"></script>
- <script src="../../src/ajax/jsonp.js"></script>
- <script src="../../src/ajax/script.js"></script>
- <script src="../../src/ajax/xhr.js"></script>
- <script src="../../src/effects.js"></script>
- <script src="../../src/offset.js"></script>
- <script src="../../src/dimensions.js"></script>
+ <title>jQuery selector - attributes</title>
+
+ <script src="../../../src/core.js"></script>
+ <script src="../../../src/callbacks.js"></script>
+ <script src="../../../src/deferred.js"></script>
+ <script src="../../../src/support.js"></script>
+ <script src="../../../src/data.js"></script>
+ <script src="../../../src/queue.js"></script>
+ <script src="../../../src/attributes.js"></script>
+ <script src="../../../src/event.js"></script>
+ <script src="../../../src/sizzle/sizzle.js"></script>
+ <script src="../../../src/sizzle-jquery.js"></script>
+ <script src="../../../src/traversing.js"></script>
+ <script src="../../../src/manipulation.js"></script>
+ <script src="../../../src/css.js"></script>
+ <script src="../../../src/ajax.js"></script>
+ <script src="../../../src/ajax/jsonp.js"></script>
+ <script src="../../../src/ajax/script.js"></script>
+ <script src="../../../src/ajax/xhr.js"></script>
+ <script src="../../../src/effects.js"></script>
+ <script src="../../../src/offset.js"></script>
+ <script src="../../../src/dimensions.js"></script>
<script id="script1"
defer
diff --git a/test/data/selector/sizzle_cache.html b/test/data/selector/sizzle_cache.html
new file mode 100644
index 000000000..de1a583b2
--- /dev/null
+++ b/test/data/selector/sizzle_cache.html
@@ -0,0 +1,40 @@
+<!doctype html>
+<html>
+<head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <title>jQuery selector - sizzle cache</title>
+
+ <script src="http://code.jquery.com/jquery-git.js"></script>
+ <script>
+ var $git = jQuery.noConflict(true);
+ </script>
+ <script src="../../../src/core.js"></script>
+ <script src="../../../src/callbacks.js"></script>
+ <script src="../../../src/deferred.js"></script>
+ <script src="../../../src/support.js"></script>
+ <script src="../../../src/data.js"></script>
+ <script src="../../../src/queue.js"></script>
+ <script src="../../../src/attributes.js"></script>
+ <script src="../../../src/event.js"></script>
+ <script src="../../../src/sizzle/sizzle.js"></script>
+ <script src="../../../src/sizzle-jquery.js"></script>
+ <script src="../../../src/traversing.js"></script>
+ <script src="../../../src/manipulation.js"></script>
+ <script src="../../../src/css.js"></script>
+ <script src="../../../src/ajax.js"></script>
+ <script src="../../../src/ajax/jsonp.js"></script>
+ <script src="../../../src/ajax/script.js"></script>
+ <script src="../../../src/ajax/xhr.js"></script>
+ <script src="../../../src/effects.js"></script>
+ <script src="../../../src/offset.js"></script>
+ <script src="../../../src/dimensions.js"></script>
+
+</head>
+<body>
+
+ <div class="test">
+ <a href="#" id="collision">Worlds collide</a>
+ </div>
+
+</body>
+</html>
diff --git a/test/unit/selector.js b/test/unit/selector.js
index 441258008..2c9dcec83 100644
--- a/test/unit/selector.js
+++ b/test/unit/selector.js
@@ -17,7 +17,7 @@ var testIframe = function( fileName, name, fn ) {
var loadFixture = function() {
// Creates iframe with cache disabled
- var src = "./data/" + fileName + ".html?" + parseInt( Math.random()*1000, 10 ),
+ var src = "./data/selector/" + fileName + ".html?" + parseInt( Math.random()*1000, 10 ),
iframe = jQuery("<iframe />").css({
width: 500, height: 500, position: "absolute", top: -600, left: -600, visibility: "hidden"
}).appendTo("body")[0];
@@ -38,7 +38,7 @@ var testIframe = function( fileName, name, fn ) {
// continue
start();
// call actual tests passing the correct jQuery instance to use
- fn.call( this, win.jQuery, win );
+ fn.call( this, win.jQuery, win, win.document );
document.body.removeChild( iframe );
iframe = null;
}
@@ -46,23 +46,21 @@ var testIframe = function( fileName, name, fn ) {
});
};
-testIframe("selector", "attributes - jQuery.attr", function( jQuery, window ) {
+testIframe("html5_selector", "attributes - jQuery.attr", function( jQuery, window, document ) {
expect(34);
- var document = window.document;
-
/**
* Returns an array of elements with the given IDs, eg.
*/
- var q = function() {
- var r = [];
-
- for ( var i = 0; i < arguments.length; i++ ) {
- r.push( document.getElementById( arguments[i] ) );
- }
-
- return r;
- };
+ function q() {
+ var r = [],
+ i = 0;
+
+ for ( ; i < arguments.length; i++ ) {
+ r.push( document.getElementById( arguments[i] ) );
+ }
+ return r;
+ }
/**
* Asserts that a select matches the given IDs * @example t("Check for something", "//[a]", ["foo", "baar"]);
@@ -70,15 +68,17 @@ testIframe("selector", "attributes - jQuery.attr", function( jQuery, window ) {
* @param {String} b - Sizzle selector
* @param {String} c - Array of ids to construct what is expected
*/
- var t = function( a, b, c ) {
- var f = jQuery(b).get(), s = "";
+ function t( a, b, c ) {
+ var f = jQuery(b).get(),
+ s = "",
+ i = 0;
- for ( var i = 0; i < f.length; i++ ) {
- s += (s && ",") + '"' + f[i].id + '"';
+ for ( ; i < f.length; i++ ) {
+ s += (s && ",") + '"' + f[i].id + '"';
}
deepEqual(f, q.apply( q, c ), a + " (" + b + ")");
- };
+ }
// ====== All known boolean attributes, including html5 booleans ======
// autobuffer, autofocus, autoplay, async, checked,
@@ -131,3 +131,12 @@ testIframe("selector", "attributes - jQuery.attr", function( jQuery, window ) {
t( "Improperly named form elements do not interfere with form selections (#9570)", "form[name='formName']", ["form1"]);
});
+
+testIframe("sizzle_cache", "Sizzle cache collides with multiple Sizzles on a page", function( jQuery, window, document ) {
+ var $git = window.$git;
+
+ expect(3);
+ deepEqual( $git('.test a').get(), [ document.getElementById('collision') ], "Select collision anchor with first sizzle" );
+ equal( jQuery('.evil a').length, 0, "Select nothing with second sizzle" );
+ equal( jQuery('.evil a').length, 0, "Select nothing again with second sizzle" );
+});