From 7c23b77af2477417205fda9bde5208a81e57e40e Mon Sep 17 00:00:00 2001
From: Rick Waldron <waldron.rick@gmail.com>
Date: Mon, 4 Jun 2012 12:48:18 -0400
Subject: Strips IIFEs from modules; Always require built jQuery for tests.

---
 .gitignore                              |   1 +
 Makefile                                | 124 ++------------------------------
 README.md                               |  73 ++++++++++++-------
 grunt.js                                |  67 ++++++++++++++---
 src/ajax.js                             |   4 --
 src/ajax/jsonp.js                       |   4 --
 src/ajax/script.js                      |   4 --
 src/ajax/xhr.js                         |   4 --
 src/attributes.js                       |   4 --
 src/callbacks.js                        |   4 --
 src/core.js                             |  29 ++++----
 src/css.js                              |  93 ++++++++++++------------
 src/data.js                             |   4 --
 src/deferred.js                         |   6 +-
 src/dimensions.js                       |   4 --
 src/effects.js                          |   2 +-
 src/event.js                            |   4 --
 src/exports.js                          |   4 --
 src/intro.js                            |   5 --
 src/manipulation.js                     |   4 --
 src/offset.js                           |   4 --
 src/queue.js                            |   4 --
 src/support.js                          |   4 --
 src/traversing.js                       |   5 --
 test/csp.php                            |   2 +-
 test/data/dimensions/documentLarge.html |   4 +-
 test/data/dimensions/documentSmall.html |   4 +-
 test/data/event/asyncReady.html         |   2 +-
 test/data/event/promiseReady.html       |   4 +-
 test/data/event/syncReady.html          |   4 +-
 test/data/offset/absolute.html          |   2 +-
 test/data/offset/body.html              |   2 +-
 test/data/offset/fixed.html             |   2 +-
 test/data/offset/relative.html          |   2 +-
 test/data/offset/scroll.html            |   2 +-
 test/data/offset/static.html            |   2 +-
 test/data/offset/table.html             |   2 +-
 test/data/selector/html5_selector.html  |   2 +-
 test/data/selector/sizzle_cache.html    |   4 +-
 test/data/support/bodyBackground.html   |   2 +-
 test/data/support/testElementCrash.html |   2 +-
 test/delegatetest.html                  |   6 +-
 test/hovertest.html                     |   4 +-
 test/index.html                         |   4 +-
 test/localfile.html                     |   4 +-
 test/networkerror.html                  |   4 +-
 test/readywait.html                     |   4 +-
 47 files changed, 209 insertions(+), 322 deletions(-)

diff --git a/.gitignore b/.gitignore
index e40d864aa..0973197c1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,5 +7,6 @@ dist
 *.patch
 /*.html
 .DS_Store
+dist/.sizecache.json
 build/.sizecache.json
 node_modules
diff --git a/Makefile b/Makefile
index 3d8566abf..f33a61c1a 100644
--- a/Makefile
+++ b/Makefile
@@ -1,122 +1,13 @@
-SRC_DIR = src
-TEST_DIR = test
-BUILD_DIR = build
 
-PREFIX = .
-DIST_DIR = ${PREFIX}/dist
+all: update_submodules
 
-JS_ENGINE ?= `which node nodejs 2>/dev/null`
-COMPILER = ${JS_ENGINE} ${BUILD_DIR}/uglify.js --unsafe
-POST_COMPILER = ${JS_ENGINE} ${BUILD_DIR}/post-compile.js
-
-BASE_FILES = ${SRC_DIR}/core.js\
-	${SRC_DIR}/callbacks.js\
-	${SRC_DIR}/deferred.js\
-	${SRC_DIR}/support.js\
-	${SRC_DIR}/data.js\
-	${SRC_DIR}/queue.js\
-	${SRC_DIR}/attributes.js\
-	${SRC_DIR}/event.js\
-	${SRC_DIR}/selector.js\
-	${SRC_DIR}/traversing.js\
-	${SRC_DIR}/manipulation.js\
-	${SRC_DIR}/css.js\
-	${SRC_DIR}/ajax.js\
-	${SRC_DIR}/ajax/jsonp.js\
-	${SRC_DIR}/ajax/script.js\
-	${SRC_DIR}/ajax/xhr.js\
-	${SRC_DIR}/effects.js\
-	${SRC_DIR}/offset.js\
-	${SRC_DIR}/dimensions.js\
-	${SRC_DIR}/exports.js
-
-MODULES = ${SRC_DIR}/intro.js\
-	${BASE_FILES}\
-	${SRC_DIR}/outro.js
-
-JQ = ${DIST_DIR}/jquery.js
-JQ_MIN = ${DIST_DIR}/jquery.min.js
-
-SIZZLE_DIR = ${SRC_DIR}/sizzle
-
-JQ_VER = $(shell cat version.txt)
-VER = sed "s/@VERSION/${JQ_VER}/"
-
-DATE=$(shell git log -1 --pretty=format:%ad)
-
-all: update_submodules core
-
-core: jquery min hint size
-	@@echo "jQuery build complete."
-
-${DIST_DIR}:
-	@@mkdir -p ${DIST_DIR}
-
-jquery: ${JQ}
-
-${JQ}: ${MODULES} | ${DIST_DIR}
-	@@echo "Building" ${JQ}
-
-	@@cat ${MODULES} | \
-		sed 's/.function..jQuery...{//' | \
-		sed 's/}...jQuery..;//' | \
-		sed 's/@DATE/'"${DATE}"'/' | \
-		${VER} > ${JQ};
-
-${SRC_DIR}/selector.js: ${SIZZLE_DIR}/sizzle.js
-	@@echo "Building selector code from Sizzle"
-	@@sed '/EXPOSE/r src/sizzle-jquery.js' ${SIZZLE_DIR}/sizzle.js | grep -v window.Sizzle > ${SRC_DIR}/selector.js
-
-hint: jquery
-	@@if test ! -z ${JS_ENGINE}; then \
-		echo "Checking jQuery against JSHint..."; \
-		${JS_ENGINE} build/jshint-check.js; \
-	else \
-		echo "You must have NodeJS installed in order to test jQuery against JSHint."; \
-	fi
-
-size: jquery min
-	@@if test ! -z ${JS_ENGINE}; then \
-		gzip -c ${JQ_MIN} > ${JQ_MIN}.gz; \
-		wc -c ${JQ} ${JQ_MIN} ${JQ_MIN}.gz | ${JS_ENGINE} ${BUILD_DIR}/sizer.js; \
-		rm ${JQ_MIN}.gz; \
-	else \
-		echo "You must have NodeJS installed in order to size jQuery."; \
-	fi
-
-freq: jquery min
-	@@if test ! -z ${JS_ENGINE}; then \
-		${JS_ENGINE} ${BUILD_DIR}/freq.js; \
-	else \
-		echo "You must have NodeJS installed to report the character frequency of minified jQuery."; \
-	fi
-
-min: jquery ${JQ_MIN}
-
-${JQ_MIN}: ${JQ}
-	@@if test ! -z ${JS_ENGINE}; then \
-		echo "Minifying jQuery" ${JQ_MIN}; \
-		${COMPILER} ${JQ} > ${JQ_MIN}.tmp; \
-		${POST_COMPILER} ${JQ_MIN}.tmp; \
-		rm -f ${JQ_MIN}.tmp; \
-	else \
-		echo "You must have NodeJS installed in order to minify jQuery."; \
-	fi
-
-clean:
-	@@echo "Removing Distribution directory:" ${DIST_DIR}
-	@@rm -rf ${DIST_DIR}
-
-	@@echo "Removing built copy of Sizzle"
-	@@rm -f src/selector.js
-
-distclean: clean
+submoduleclean: clean
 	@@echo "Removing submodules"
 	@@rm -rf test/qunit src/sizzle
 
 # change pointers for submodules and update them to what is specified in jQuery
-# --merge  doesn't work when doing an initial clone, thus test if we have non-existing
-#  submodules, then do an real update
+# --merge	doesn't work when doing an initial clone, thus test if we have non-existing
+#	submodules, then do an real update
 update_submodules:
 	@@if [ -d .git ]; then \
 		if git submodule status | grep -q -E '^-'; then \
@@ -129,9 +20,6 @@ update_submodules:
 # update the submodules to the latest at the most logical branch
 pull_submodules:
 	@@git submodule foreach "git pull \$$(git config remote.origin.url)"
-	@@git submodule summary
-
-pull: pull_submodules
-	@@git pull ${REMOTE} ${BRANCH}
+	#@@git submodule summary
 
-.PHONY: all jquery hint min clean distclean update_submodules pull_submodules pull core
+.PHONY: all submoduleclean update_submodules pull_submodules
diff --git a/README.md b/README.md
index b97886bb0..0d1b1bf05 100644
--- a/README.md
+++ b/README.md
@@ -11,21 +11,10 @@ In the spirit of open source software development, jQuery always encourages comm
 3. [Tips For Bug Patching](http://docs.jquery.com/Tips_for_jQuery_Bug_Patching)
 
 
-Running the Unit Tests
---------------------------------------
-
-Run the unit tests with a local server that supports PHP. No database is required. Pre-configured php local servers are available for Windows and Mac. Here are some options:
-
-- Windows: [WAMP download](http://www.wampserver.com/en/)
-- Mac: [MAMP download](http://www.mamp.info/en/index.html)
-- Linux: [Setting up LAMP](https://www.linux.com/learn/tutorials/288158-easy-lamp-server-installation)
-- [Mongoose (most platforms)](http://code.google.com/p/mongoose/)
-
-
 What you need to build your own jQuery
 --------------------------------------
 
-In order to build jQuery, you need to have GNU make 3.8 or later, Node.js 0.4.12 or later, and git 1.7 or later.
+In order to build jQuery, you need to have GNU make 3.8 or later, Node.js/npm latest, and git 1.7 or later.
 (Earlier versions might work OK, but are not tested.)
 
 Windows users have two options:
@@ -50,32 +39,66 @@ if you swing that way. Easy-peasy.
 How to build your own jQuery
 ----------------------------
 
-First, clone a copy of the main jQuery git repo by running `git clone git://github.com/jquery/jquery.git`.
+First, clone a copy of the main jQuery git repo by running:
+
+`git clone git://github.com/jquery/jquery.git`
+
+Enter the directory and install the node dependencies:
+
+`cd jquery && npm install`
+
+
+Make sure you have `grunt` installed by testing:
+
+`grunt -version`
+
+
+
+Then, to get a complete, minified (w/ Ugligy.js), linted (w/ JSHint) version of jQuery, type the following:
+
+`grunt`
 
-Then, to get a complete, minified, jslinted version of jQuery, simply `cd` to the `jquery` directory and type
-`make`. If you don't have Node installed and/or want to make a basic, uncompressed, unlinted version of jQuery, use
-`make jquery` instead of `make`.
 
 The built version of jQuery will be put in the `dist/` subdirectory.
 
-To remove all built files, run `make clean`.
+
+Running the Unit Tests
+--------------------------------------
+
+
+Start grunt to auto-build jQuery as you work:
+
+`cd jquery && grunt watch`
+
+
+
+Run the unit tests with a local server that supports PHP. No database is required. Pre-configured php local servers are available for Windows and Mac. Here are some options:
+
+- Windows: [WAMP download](http://www.wampserver.com/en/)
+- Mac: [MAMP download](http://www.mamp.info/en/index.html)
+- Linux: [Setting up LAMP](https://www.linux.com/learn/tutorials/288158-easy-lamp-server-installation)
+- [Mongoose (most platforms)](http://code.google.com/p/mongoose/)
+
+
 
 
 Building to a different directory
 ---------------------------------
 
-If you want to build jQuery to a directory that is different from the default location, you can specify the PREFIX
-directory: `make PREFIX=/home/jquery/test/ [command]`
+If you want to build jQuery to a directory that is different from the default location:
 
-With this example, the output files would end up in `/home/jquery/test/dist/`.
+`grunt && grunt dist:/Users/you/Dropbox/Public/`
 
+With this example, the output files would be:
+
+```bash
+
+/Users/you/Dropbox/Public/jquery.js
+/Users/you/Dropbox/Public/jquery.min.js
+
+```
 
-Troubleshooting
----------------
 
-Sometimes, the various git repositories get into an inconsistent state where builds don't complete properly
-(usually this results in the jquery.js or jquery.min.js being 0 bytes). If this happens, run `make clean`, then
-run `make` again.
 
 Git for dummies
 ---------------
diff --git a/grunt.js b/grunt.js
index bdc6e8a1d..a09b5d822 100644
--- a/grunt.js
+++ b/grunt.js
@@ -13,6 +13,10 @@ module.exports = function( grunt ) {
 	var option = grunt.option;
 	var config = grunt.config;
 	var template = grunt.template;
+	var distpaths = [
+		"dist/jquery.js",
+		"dist/jquery.min.js"
+	];
 
 	grunt.initConfig({
 		pkg: "<json:package.json>",
@@ -20,10 +24,7 @@ module.exports = function( grunt ) {
 			banner: "/*! jQuery v@<%= pkg.version %> jquery.com | jquery.org/license */"
 		},
 		compare_size: {
-			files: [
-				"dist/jquery.js",
-				"dist/jquery.min.js"
-			]
+			files: distpaths
 		},
 		selector: {
 			"src/selector.js": [
@@ -67,8 +68,8 @@ module.exports = function( grunt ) {
 			files: "test/index.html"
 		},
 		watch: {
-			files: "<config:lint.files>",
-			tasks: "concat lint"
+			files: [ "<config:lint.files>", "src/**/*.js" ],
+			tasks: "default"
 		},
 		jshint: {
 			options: {
@@ -103,7 +104,7 @@ module.exports = function( grunt ) {
 	});
 
 	// Default grunt.
-	grunt.registerTask( "default", "selector build:*:* lint min compare_size" );
+	grunt.registerTask( "default", "submodules selector build:*:* dist:* lint min compare_size" );
 
 	grunt.loadNpmTasks("grunt-compare-size");
 
@@ -184,13 +185,14 @@ module.exports = function( grunt ) {
 				}
 
 				// Unwrap redundant IIFEs
-				compiled += file.read( filepath ).replace( /^\(function\( jQuery \) \{|\}\)\( jQuery \);\s*$/g, "" );
+				compiled += file.read( filepath );
+				//.replace( /^\(function\( jQuery \) \{|\}\)\( jQuery \);\s*$/g, "" );
 			});
 
 			// Embed Date
 			// Embed Version
 			compiled = compiled.replace( "@DATE", new Date() )
-										.replace( "@VERSION", config("pkg.version") );
+				.replace( "@VERSION", config("pkg.version") );
 
 			// Write concatenated source to file
 			file.write( name, compiled );
@@ -203,4 +205,51 @@ module.exports = function( grunt ) {
 			// Otherwise, print a success message.
 			log.writeln( "File '" + name + "' created." );
 		});
+
+	grunt.registerTask( "submodules", function() {
+		var done = this.async();
+
+		grunt.verbose.write( "Updating submodules..." );
+
+		// TODO: migrate remaining `make` to grunt tasks
+		//
+		grunt.utils.spawn({
+			cmd: "make"
+		}, function( err, result ) {
+			if ( err ) {
+				grunt.verbose.error();
+				done( err );
+				return;
+			}
+
+			grunt.log.writeln( result );
+
+			done();
+		});
+	});
+
+	// Allow custom dist file locations
+	grunt.registerTask( "dist", function() {
+		var keys, dir;
+
+		keys = Object.keys( this.flags );
+
+		if ( keys.length ) {
+			dir = keys[0];
+
+			if ( !/\/$/.test( dir ) ) {
+				dir += "/";
+			}
+
+			// 'distpaths' is declared at the top of the
+			// module.exports function scope.
+			distpaths.forEach(function( filename ) {
+				var created = dir + filename.replace( "dist/", "" );
+
+				file.write( created, file.read( filename ) );
+
+				log.writeln( "File '" + created + "' created." );
+			});
+		}
+	});
 };
diff --git a/src/ajax.js b/src/ajax.js
index c402f2153..cb8af47c9 100644
--- a/src/ajax.js
+++ b/src/ajax.js
@@ -1,5 +1,3 @@
-(function( jQuery ) {
-
 var r20 = /%20/g,
 	rbracket = /\[\]$/,
 	rCRLF = /\r?\n/g,
@@ -993,5 +991,3 @@ function ajaxConvert( s, response ) {
 
 	return { state: "success", data: response };
 }
-
-})( jQuery );
diff --git a/src/ajax/jsonp.js b/src/ajax/jsonp.js
index 3e3ea85a3..c39913fac 100644
--- a/src/ajax/jsonp.js
+++ b/src/ajax/jsonp.js
@@ -1,5 +1,3 @@
-(function( jQuery ) {
-
 var oldCallbacks = [],
 	rquestion = /\?/,
 	rjsonp = /(=)\?(?=&|$)|\?\?/,
@@ -87,5 +85,3 @@ jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
 		return "script";
 	}
 });
-
-})( jQuery );
diff --git a/src/ajax/script.js b/src/ajax/script.js
index f7a918010..48b329ae3 100644
--- a/src/ajax/script.js
+++ b/src/ajax/script.js
@@ -1,5 +1,3 @@
-(function( jQuery ) {
-
 // Install script dataType
 jQuery.ajaxSetup({
 	accepts: {
@@ -85,5 +83,3 @@ jQuery.ajaxTransport( "script", function(s) {
 		};
 	}
 });
-
-})( jQuery );
diff --git a/src/ajax/xhr.js b/src/ajax/xhr.js
index 186432f61..fb431034d 100644
--- a/src/ajax/xhr.js
+++ b/src/ajax/xhr.js
@@ -1,5 +1,3 @@
-(function( jQuery ) {
-
 var // #5280: Internet Explorer will keep connections alive if we don't abort on unload
 	xhrOnUnloadAbort = window.ActiveXObject ? function() {
 		// Abort all pending requests
@@ -222,5 +220,3 @@ if ( jQuery.support.ajax ) {
 		}
 	});
 }
-
-})( jQuery );
diff --git a/src/attributes.js b/src/attributes.js
index cc2256f88..1b79ae44a 100644
--- a/src/attributes.js
+++ b/src/attributes.js
@@ -1,5 +1,3 @@
-(function( jQuery ) {
-
 var rclass = /[\n\t\r]/g,
 	rspace = /\s+/,
 	rreturn = /\r/g,
@@ -652,5 +650,3 @@ jQuery.each([ "radio", "checkbox" ], function() {
 		}
 	});
 });
-
-})( jQuery );
diff --git a/src/callbacks.js b/src/callbacks.js
index 5516d551f..12f2956ce 100644
--- a/src/callbacks.js
+++ b/src/callbacks.js
@@ -1,5 +1,3 @@
-(function( jQuery ) {
-
 // String to Object options format cache
 var optionsCache = {};
 
@@ -192,5 +190,3 @@ jQuery.Callbacks = function( options ) {
 
 	return self;
 };
-
-})( jQuery );
diff --git a/src/core.js b/src/core.js
index 3fcc9e46c..c9ed81d2a 100644
--- a/src/core.js
+++ b/src/core.js
@@ -1,7 +1,18 @@
-var jQuery = (function() {
+// Use the correct document accordingly with window argument (sandbox)
+var document = window.document,
+	navigator = window.navigator,
+	location = window.location,
 
-// Define a local copy of jQuery
-var jQuery = function( selector, context ) {
+	// Save a reference to some core methods
+	toString = Object.prototype.toString,
+	hasOwn = Object.prototype.hasOwnProperty,
+	push = Array.prototype.push,
+	slice = Array.prototype.slice,
+	trim = String.prototype.trim,
+	indexOf = Array.prototype.indexOf,
+
+	// Define a local copy of jQuery
+	jQuery = function( selector, context ) {
 		// The jQuery object is actually just the init constructor 'enhanced'
 		return new jQuery.fn.init( selector, context, rootjQuery );
 	},
@@ -71,14 +82,6 @@ var jQuery = function( selector, context ) {
 		jQuery.ready();
 	},
 
-	// Save a reference to some core methods
-	toString = Object.prototype.toString,
-	hasOwn = Object.prototype.hasOwnProperty,
-	push = Array.prototype.push,
-	slice = Array.prototype.slice,
-	trim = String.prototype.trim,
-	indexOf = Array.prototype.indexOf,
-
 	// [[Class]] -> type pairs
 	class2type = {};
 
@@ -933,7 +936,3 @@ function doScrollCheck() {
 	// and execute any waiting functions
 	jQuery.ready();
 }
-
-return jQuery;
-
-})();
diff --git a/src/css.js b/src/css.js
index 67559e950..4497878e4 100644
--- a/src/css.js
+++ b/src/css.js
@@ -1,5 +1,3 @@
-(function( jQuery ) {
-
 // order is important!
 jQuery.cssExpand = [ "Top", "Right", "Bottom", "Left" ];
 
@@ -66,7 +64,7 @@ function showHide( elements, show ) {
 			// for such an element
 			if ( (elem.style.display === "" && curCSS( elem, "display" ) === "none") ||
 				!jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
-				values[ index ] = jQuery._data( elem, "olddisplay", jQuery.defaultDisplay(elem.nodeName) );
+				values[ index ] = jQuery._data( elem, "olddisplay", defaultDisplay(elem.nodeName) );
 			}
 		} else {
 			display = curCSS( elem, "display" );
@@ -264,49 +262,6 @@ jQuery.extend({
 		}
 
 		return ret;
-	},
-
-	// Try to determine the default display value of an element
-	defaultDisplay: function( nodeName ) {
-		if ( elemdisplay[ nodeName ] ) {
-			return elemdisplay[ nodeName ];
-		}
-
-		var elem = jQuery( "<" + nodeName + ">" ).appendTo( document.body ),
-			display = elem.css("display");
-		elem.remove();
-
-		// If the simple way fails,
-		// get element's real default display by attaching it to a temp iframe
-		if ( display === "none" || display === "" ) {
-			// Use the already-created iframe if possible
-			iframe = document.body.appendChild(
-				iframe || jQuery.extend( document.createElement("iframe"), {
-					frameBorder: 0,
-					width: 0,
-					height: 0
-				})
-			);
-
-			// Create a cacheable copy of the iframe document on first call.
-			// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML
-			// document to it; WebKit & Firefox won't allow reusing the iframe document.
-			if ( !iframeDoc || !iframe.createElement ) {
-				iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;
-				iframeDoc.write("<!doctype html><html><body>");
-				iframeDoc.close();
-			}
-
-			elem = iframeDoc.body.appendChild( iframeDoc.createElement(nodeName) );
-
-			display = curCSS( elem, "display" );
-			document.body.removeChild( iframe );
-		}
-
-		// Store the correct default display
-		elemdisplay[ nodeName ] = display;
-
-		return display;
 	}
 });
 
@@ -466,6 +421,50 @@ function getWidthOrHeight( elem, name, extra ) {
 	) + "px";
 }
 
+
+// Try to determine the default display value of an element
+function defaultDisplay( nodeName ) {
+	if ( elemdisplay[ nodeName ] ) {
+		return elemdisplay[ nodeName ];
+	}
+
+	var elem = jQuery( "<" + nodeName + ">" ).appendTo( document.body ),
+		display = elem.css("display");
+	elem.remove();
+
+	// If the simple way fails,
+	// get element's real default display by attaching it to a temp iframe
+	if ( display === "none" || display === "" ) {
+		// Use the already-created iframe if possible
+		iframe = document.body.appendChild(
+			iframe || jQuery.extend( document.createElement("iframe"), {
+				frameBorder: 0,
+				width: 0,
+				height: 0
+			})
+		);
+
+		// Create a cacheable copy of the iframe document on first call.
+		// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML
+		// document to it; WebKit & Firefox won't allow reusing the iframe document.
+		if ( !iframeDoc || !iframe.createElement ) {
+			iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;
+			iframeDoc.write("<!doctype html><html><body>");
+			iframeDoc.close();
+		}
+
+		elem = iframeDoc.body.appendChild( iframeDoc.createElement(nodeName) );
+
+		display = curCSS( elem, "display" );
+		document.body.removeChild( iframe );
+	}
+
+	// Store the correct default display
+	elemdisplay[ nodeName ] = display;
+
+	return display;
+}
+
 jQuery.each([ "height", "width" ], function( i, name ) {
 	jQuery.cssHooks[ name ] = {
 		get: function( elem, computed, extra ) {
@@ -594,5 +593,3 @@ jQuery.each({
 		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
 	}
 });
-
-})( jQuery );
diff --git a/src/data.js b/src/data.js
index ff4309f1e..4b5b22fda 100644
--- a/src/data.js
+++ b/src/data.js
@@ -1,5 +1,3 @@
-(function( jQuery ) {
-
 var rbrace = /^(?:\{.*\}|\[.*\])$/,
 	rmultiDash = /([A-Z])/g;
 
@@ -368,5 +366,3 @@ function isEmptyDataObject( obj ) {
 
 	return true;
 }
-
-})( jQuery );
diff --git a/src/deferred.js b/src/deferred.js
index 6c42583a5..a8410c8be 100644
--- a/src/deferred.js
+++ b/src/deferred.js
@@ -1,5 +1,3 @@
-(function( jQuery ) {
-
 var // Static reference to slice
 	sliceDeferred = [].slice;
 
@@ -116,7 +114,7 @@ jQuery.extend({
 					}
 				};
 			},
-			
+
 			progressValues, progressContexts, resolveContexts;
 
 		// add listeners to Deferred subordinates; treat others as resolved
@@ -144,5 +142,3 @@ jQuery.extend({
 		return deferred.promise();
 	}
 });
-
-})( jQuery );
diff --git a/src/dimensions.js b/src/dimensions.js
index d81fb327e..172df647d 100644
--- a/src/dimensions.js
+++ b/src/dimensions.js
@@ -1,5 +1,3 @@
-(function( jQuery ) {
-
 // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
 jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
 	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
@@ -44,5 +42,3 @@ jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
 		};
 	});
 });
-
-})( jQuery );
diff --git a/src/effects.js b/src/effects.js
index c2f04a049..bd2ac816d 100644
--- a/src/effects.js
+++ b/src/effects.js
@@ -253,7 +253,7 @@ function defaultPrefilter( elem, props, opts ) {
 
 			// inline-level elements accept inline-block;
 			// block-level elements need to be inline with layout
-			if ( !jQuery.support.inlineBlockNeedsLayout || jQuery.defaultDisplay( elem.nodeName ) === "inline" ) {
+			if ( !jQuery.support.inlineBlockNeedsLayout || defaultDisplay( elem.nodeName ) === "inline" ) {
 				style.display = "inline-block";
 
 			} else {
diff --git a/src/event.js b/src/event.js
index b4a76c710..03049a5c4 100644
--- a/src/event.js
+++ b/src/event.js
@@ -1,5 +1,3 @@
-(function( jQuery ) {
-
 var rformElems = /^(?:textarea|input|select)$/i,
 	rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/,
 	rhoverHack = /(?:^|\s)hover(\.\S+)?\b/,
@@ -1071,5 +1069,3 @@ jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblcl
 		jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;
 	}
 });
-
-})( jQuery );
diff --git a/src/exports.js b/src/exports.js
index 7d8964f01..88def50ba 100644
--- a/src/exports.js
+++ b/src/exports.js
@@ -1,5 +1,3 @@
-(function( jQuery ) {
-
 // Expose jQuery to the global object
 window.jQuery = window.$ = jQuery;
 
@@ -18,5 +16,3 @@ window.jQuery = window.$ = jQuery;
 if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
 	define( "jquery", [], function () { return jQuery; } );
 }
-
-})( jQuery );
diff --git a/src/intro.js b/src/intro.js
index a81c86f92..8c3272068 100644
--- a/src/intro.js
+++ b/src/intro.js
@@ -14,8 +14,3 @@
  * Date: @DATE
  */
 (function( window, undefined ) {
-
-// Use the correct document accordingly with window argument (sandbox)
-var document = window.document,
-	navigator = window.navigator,
-	location = window.location;
diff --git a/src/manipulation.js b/src/manipulation.js
index a6b8edc6f..e53daa9b6 100644
--- a/src/manipulation.js
+++ b/src/manipulation.js
@@ -1,5 +1,3 @@
-(function( jQuery ) {
-
 function createSafeFragment( document ) {
 	var list = nodeNames.split( "|" ),
 	safeFrag = document.createDocumentFragment();
@@ -799,5 +797,3 @@ jQuery.extend({
 		}
 	}
 });
-
-})( jQuery );
diff --git a/src/offset.js b/src/offset.js
index 362c1329b..fcd39ed05 100644
--- a/src/offset.js
+++ b/src/offset.js
@@ -1,5 +1,3 @@
-(function( jQuery ) {
-
 var rroot = /^(?:body|html)$/i;
 
 jQuery.fn.offset = function( options ) {
@@ -180,5 +178,3 @@ function getWindow( elem ) {
 			elem.defaultView || elem.parentWindow :
 			false;
 }
-
-})( jQuery );
\ No newline at end of file
diff --git a/src/queue.js b/src/queue.js
index 175603781..e47f721b8 100644
--- a/src/queue.js
+++ b/src/queue.js
@@ -1,5 +1,3 @@
-(function( jQuery ) {
-
 jQuery.extend({
 	queue: function( elem, type, data ) {
 		var queue;
@@ -142,5 +140,3 @@ jQuery.fn.extend({
 		return defer.promise( object );
 	}
 });
-
-})( jQuery );
diff --git a/src/support.js b/src/support.js
index 3a51ba74b..16ce528f2 100644
--- a/src/support.js
+++ b/src/support.js
@@ -1,5 +1,3 @@
-(function( jQuery ) {
-
 jQuery.support = (function() {
 
 	var support,
@@ -268,5 +266,3 @@ jQuery.support = (function() {
 
 	return support;
 })();
-
-})( jQuery );
diff --git a/src/traversing.js b/src/traversing.js
index a5c08fba5..3544f5be8 100644
--- a/src/traversing.js
+++ b/src/traversing.js
@@ -1,11 +1,8 @@
-(function( jQuery ) {
-
 var runtil = /Until$/,
 	rparentsprev = /^(?:parents|prevUntil|prevAll)/,
 	// Note: This RegExp should be improved, or likely pulled from Sizzle
 	rmultiselector = /,/,
 	isSimple = /^.[^:#\[\.,]*$/,
-	slice = Array.prototype.slice,
 	POS = jQuery.expr.match.globalPOS,
 	// methods guaranteed to produce a unique set when starting from a unique set
 	guaranteedUnique = {
@@ -299,5 +296,3 @@ function winnow( elements, qualifier, keep ) {
 		return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;
 	});
 }
-
-})( jQuery );
diff --git a/test/csp.php b/test/csp.php
index 3a029eb42..9c90300bf 100644
--- a/test/csp.php
+++ b/test/csp.php
@@ -5,7 +5,7 @@
 	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 	<title>CSP Test Page</title>
 
-	<script src="data/include_js.php"></script>
+	<script src="/dist/jquery.js"></script>
 </head>
 <body>
 	<p>CSP Test Page</p>
diff --git a/test/data/dimensions/documentLarge.html b/test/data/dimensions/documentLarge.html
index 8b434e719..ee9a709ae 100644
--- a/test/data/dimensions/documentLarge.html
+++ b/test/data/dimensions/documentLarge.html
@@ -11,7 +11,7 @@
 </head>
 <body>
 	<div>
-		<script src="../include_js.php"></script>
+		<script src="/dist/jquery.js"></script>
 	</div>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/test/data/dimensions/documentSmall.html b/test/data/dimensions/documentSmall.html
index 2d2663328..fe55d2125 100644
--- a/test/data/dimensions/documentSmall.html
+++ b/test/data/dimensions/documentSmall.html
@@ -15,7 +15,7 @@
 </head>
 <body>
 	<div>
-		<script src="../include_js.php"></script>
+		<script src="/dist/jquery.js"></script>
 	</div>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/test/data/event/asyncReady.html b/test/data/event/asyncReady.html
index 1d18efc17..f1f6aa20f 100644
--- a/test/data/event/asyncReady.html
+++ b/test/data/event/asyncReady.html
@@ -19,7 +19,7 @@ if ( document.attachEvent ) {
 			});
 		}
 		document.getElementsByTagName("head")[ 0 ].appendChild( el );
-		el.src = "../include_js.php";
+		el.src = "/dist/jquery.js";
 	}, 1000 );
 }
 </script>
diff --git a/test/data/event/promiseReady.html b/test/data/event/promiseReady.html
index f799a7e3e..04e45ae8d 100644
--- a/test/data/event/promiseReady.html
+++ b/test/data/event/promiseReady.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="content-type" content="text/html; charset=utf-8">
 <title>Test case for jQuery ticket #11470</title>
-<script type="text/javascript" src="../include_js.php"></script>
+<script type="text/javascript" src="/dist/jquery.js"></script>
 <script type="text/javascript">
 jQuery.when( jQuery.ready ).done(function() {
 	jQuery("body").append("<div>modifying DOM</div>");
@@ -14,4 +14,4 @@ jQuery.when( jQuery.ready ).done(function() {
 <body>
 <!-- long loading iframe -->
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/test/data/event/syncReady.html b/test/data/event/syncReady.html
index 1b85ce0a8..fcd2ac23a 100644
--- a/test/data/event/syncReady.html
+++ b/test/data/event/syncReady.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="content-type" content="text/html; charset=utf-8">
 <title>Test case for jQuery ticket #10067</title>
-<script type="text/javascript" src="../include_js.php"></script>
+<script type="text/javascript" src="/dist/jquery.js"></script>
 </head>
 <body>
 <script type="text/javascript">
@@ -15,4 +15,4 @@ jQuery( document ).ready(function () {
 <!-- long loading iframe -->
 <iframe src="longLoad.php?sleep=10&return=false" style="width: 1px; height: 1px"></iframe>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/test/data/offset/absolute.html b/test/data/offset/absolute.html
index 5a0e4afb4..7d659a382 100644
--- a/test/data/offset/absolute.html
+++ b/test/data/offset/absolute.html
@@ -15,7 +15,7 @@
 			p.instructions { position: absolute; bottom: 0; }
 			#positionTest { position: absolute; }
 		</style>
-		<script src="../include_js.php"></script>
+		<script src="/dist/jquery.js"></script>
 		<script type="text/javascript" charset="utf-8">
 			jQuery(function($) {
 				$('.absolute').click(function() {
diff --git a/test/data/offset/body.html b/test/data/offset/body.html
index ec7668c10..5e955ea73 100644
--- a/test/data/offset/body.html
+++ b/test/data/offset/body.html
@@ -8,7 +8,7 @@
 			body { margin: 1px; padding: 5px; }
 			#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
 		</style>
-		<script src="../include_js.php"></script>
+		<script src="/dist/jquery.js"></script>
 		<script type="text/javascript" charset="utf-8">
 			jQuery(function($) {
 				$('body').click(function() {
diff --git a/test/data/offset/fixed.html b/test/data/offset/fixed.html
index 8a7b31f19..25e1010f4 100644
--- a/test/data/offset/fixed.html
+++ b/test/data/offset/fixed.html
@@ -12,7 +12,7 @@
 			#forceScroll { width: 5000px; height: 5000px; }
 			#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
 		</style>
-		<script src="../include_js.php"></script>
+		<script src="/dist/jquery.js"></script>
 		<script type="text/javascript" charset="utf-8">
 			jQuery(function($) {
 				window.scrollTo(1000,1000);
diff --git a/test/data/offset/relative.html b/test/data/offset/relative.html
index 361d4b294..8a1203abf 100644
--- a/test/data/offset/relative.html
+++ b/test/data/offset/relative.html
@@ -10,7 +10,7 @@
 			#relative-2 { top: 20px; left: 20px; }
 			#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
 		</style>
-		<script src="../include_js.php"></script>
+		<script src="/dist/jquery.js"></script>
 		<script type="text/javascript" charset="utf-8">
 			jQuery(function($) {
 				$('.relative').click(function() {
diff --git a/test/data/offset/scroll.html b/test/data/offset/scroll.html
index 17f01d8fc..26cd6fcaf 100644
--- a/test/data/offset/scroll.html
+++ b/test/data/offset/scroll.html
@@ -13,7 +13,7 @@
 			#forceScroll { width: 5000px; height: 5000px; }
 			#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
 		</style>
-		<script src="../include_js.php"></script>
+		<script src="/dist/jquery.js"></script>
 		<script type="text/javascript" charset="utf-8">
 			jQuery(function($) {
 				window.scrollTo(1000,1000);
diff --git a/test/data/offset/static.html b/test/data/offset/static.html
index cb5ed03eb..64f1d7ec0 100644
--- a/test/data/offset/static.html
+++ b/test/data/offset/static.html
@@ -10,7 +10,7 @@
 			#static-2 { top: 20px; left: 20px; }
 			#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
 		</style>
-		<script src="../include_js.php"></script>
+		<script src="/dist/jquery.js"></script>
 		<script type="text/javascript" charset="utf-8">
 			jQuery(function($) {
 				$('.static').click(function() {
diff --git a/test/data/offset/table.html b/test/data/offset/table.html
index 4a6a7a470..f5bfbb693 100644
--- a/test/data/offset/table.html
+++ b/test/data/offset/table.html
@@ -10,7 +10,7 @@
 			th, td { border: 1px solid #000; width: 100px; height: 100px; }
 			#marker { position: absolute; border: 2px solid #000; width: 50px; height: 50px; background: #ccc; }
 		</style>
-		<script src="../include_js.php"></script>
+		<script src="/dist/jquery.js"></script>
 		<script type="text/javascript" charset="utf-8">
 			jQuery(function($) {
 				$('table, th, td').click(function() {
diff --git a/test/data/selector/html5_selector.html b/test/data/selector/html5_selector.html
index ed0bfbc94..99c5bdbfe 100644
--- a/test/data/selector/html5_selector.html
+++ b/test/data/selector/html5_selector.html
@@ -4,7 +4,7 @@
 	<meta http-equiv="Content-type" content="text/html; charset=utf-8">
 	<title>jQuery selector - attributes</title>
 
-	<script src="../include_js.php"></script>
+	<script src="/dist/jquery.js"></script>
 
 	<script id="script1"
 			defer
diff --git a/test/data/selector/sizzle_cache.html b/test/data/selector/sizzle_cache.html
index 6221263fa..6260e2ab9 100644
--- a/test/data/selector/sizzle_cache.html
+++ b/test/data/selector/sizzle_cache.html
@@ -4,11 +4,11 @@
 	<meta http-equiv="Content-type" content="text/html; charset=utf-8">
 	<title>jQuery selector - sizzle cache</title>
 
-	<script src="../include_js.php"></script>
+	<script src="/dist/jquery.js"></script>
 	<script>
 		var $cached = jQuery.noConflict(true);
 	</script>
-	<script src="../include_js.php"></script>
+	<script src="/dist/jquery.js"></script>
 
 </head>
 <body>
diff --git a/test/data/support/bodyBackground.html b/test/data/support/bodyBackground.html
index 4f0105a1d..d1d118843 100644
--- a/test/data/support/bodyBackground.html
+++ b/test/data/support/bodyBackground.html
@@ -17,7 +17,7 @@
 </head>
 <body>
 	<div>
-		<script src="../include_js.php"></script>
+		<script src="/dist/jquery.js"></script>
 	</div>
 	<script>
 		jQuery(function() {
diff --git a/test/data/support/testElementCrash.html b/test/data/support/testElementCrash.html
index 6ef9651da..5ea5464b3 100644
--- a/test/data/support/testElementCrash.html
+++ b/test/data/support/testElementCrash.html
@@ -7,7 +7,7 @@
 			background: url('http://s1.postimage.org/2d2r8xih0/body_background.png');
 		}
 	</style>
-	<script src="../include_js.php"></script>
+	<script src="/dist/jquery.js"></script>
 </head>
 <body>
 	<script>
diff --git a/test/delegatetest.html b/test/delegatetest.html
index b16771d3d..387005e41 100644
--- a/test/delegatetest.html
+++ b/test/delegatetest.html
@@ -2,7 +2,7 @@
 <html>
 <head>
 <title>Event Delegation Tests</title>
-<script src="data/include_js.php"></script>
+<script src="/dist/jquery.js"></script>
 <style>
 table {
 	border-collapse: collapse;
@@ -122,7 +122,7 @@ th, td {
 </table>
 
 	<form id="autosub"><input type=submit name=subme /></form>
-	
+
 <script type='text/javascript'>
 
 $("#fileversion").text($.fn.jquery);
@@ -168,7 +168,7 @@ for ( var i=0; i < events.length; i++ ) {
 		api = m[0],
 		type = m[1],
 		$row = $("<tr><th>"+type+" "+api+"</th></tr>");
-	
+
 	$("#changes thead td").each(function(){
 		var id = "#"+this.id,
 			$cell = $('<td></td>');
diff --git a/test/hovertest.html b/test/hovertest.html
index a0efd9f4f..5d5355d4c 100644
--- a/test/hovertest.html
+++ b/test/hovertest.html
@@ -1,7 +1,7 @@
 <html>
 <head>
 <title>Hover tests</title>
-<script src="data/include_js.php"></script>
+<script src="/dist/jquery.js"></script>
 <style>
 /* Remove body dimensions so we can test enter/leave to surrounding browser chrome */
 body, html {
@@ -108,7 +108,7 @@ $(function(){
 		};
 
 	// Tests can be activated separately or in combination to check for interference
-		
+
 	$("#hoverbox button").click(function(){
 		$("#hoverbox")
 			.data({ ins: 0, outs: 0 })
diff --git a/test/index.html b/test/index.html
index 62b633c78..2457f11de 100644
--- a/test/index.html
+++ b/test/index.html
@@ -6,9 +6,9 @@
 	<link rel="Stylesheet" media="screen" href="qunit/qunit/qunit.css" />
 	<link rel="Stylesheet" media="screen" href="data/testsuite.css" />
 	<!-- Includes -->
-	<script src="data/testinit.js"></script>
 
-	<script src="data/include_js.php"></script>
+	<script src="data/testinit.js"></script>
+	<script src="/dist/jquery.js"></script>
 
 	<script src="qunit/qunit/qunit.js"></script>
 	<script src="data/testrunner.js"></script>
diff --git a/test/localfile.html b/test/localfile.html
index 2c089c4d2..2cfd13004 100644
--- a/test/localfile.html
+++ b/test/localfile.html
@@ -4,7 +4,7 @@
 	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 	<title>jQuery Local File Test</title>
 	<!-- Includes -->
-	<script src="data/include_js.php"></script>
+	<script src="/dist/jquery.js"></script>
 	<style>
 		.error { color: red; }
 		.success { color: green; }
@@ -72,4 +72,4 @@
 			this.addClass( "error" ).text( "FAIL" );
 		});
 	</script>
-</body>
\ No newline at end of file
+</body>
diff --git a/test/networkerror.html b/test/networkerror.html
index e258d83d8..64b59f93d 100644
--- a/test/networkerror.html
+++ b/test/networkerror.html
@@ -15,7 +15,7 @@
 	<style>
 		div { margin-top: 10px; }
 	</style>
-	<script src="data/include_js.php"></script>
+	<script src="/dist/jquery.js"></script>
 	<script type="text/javascript">
 	$('button').live('click', function () {
 		$.ajax({
@@ -81,4 +81,4 @@
 		Test fails if the browser notifies an exception.
 	</div>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/test/readywait.html b/test/readywait.html
index a9eab3961..cd749a49d 100644
--- a/test/readywait.html
+++ b/test/readywait.html
@@ -14,7 +14,7 @@
 		#output { background-color: green }
 		#expectedOutput { background-color: green }
 	</style>
-	<script src="data/include_js.php"></script>
+	<script src="/dist/jquery.js"></script>
 
 	<!-- Load the script loader that uses
 		jQuery.readyWait -->
@@ -37,7 +37,7 @@
 		jQuery.holdReady Test
 	</h1>
 	<p>
-		This is a test page for jQuery.readyWait and jQuery.holdReady, 
+		This is a test page for jQuery.readyWait and jQuery.holdReady,
 		see
 		<a href="http://bugs.jquery.com/ticket/6781">#6781</a>
 		and
-- 
cgit v1.2.3