From 442f51224d01b92b94fbc1828cafed311dcd8c21 Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Tue, 23 Oct 2012 00:36:59 -0700 Subject: [PATCH] Update vendors. Former-commit-id: 1e711564671134b82eed980bccb628af612ae195 --- .travis.yml | 2 +- build/post-install.js | 2 +- vendor/backbone/backbone.js | 11 ++--- vendor/backbone/test/view.js | 7 ++- vendor/qunit/README.md | 14 +++++- vendor/qunit/qunit/qunit.css | 16 ++++--- vendor/qunit/qunit/qunit.js | 89 ++++++++++++++++++++++++++--------- vendor/requirejs/require.js | 91 ++++++++++++++++++++---------------- 8 files changed, 152 insertions(+), 80 deletions(-) diff --git a/.travis.yml b/.travis.yml index 88cb9b6ef..c8e76d5a8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,4 +4,4 @@ node_js: - 0.8 before_script: - "curl -H 'Accept: application/vnd.github.v3.raw' https://api.github.com/repos/bestiejs/lodash/git/blobs/aa29a2ecf6f51d4da5a2a418c0d4ea0e368ee80d | tar xvz -C vendor" - - "curl -H 'Accept: application/vnd.github.v3.raw' https://api.github.com/repos/bestiejs/lodash/git/blobs/827f406a02626c1c6723e8ae281b6785d36375c1 | tar xvz -C vendor" \ No newline at end of file + - "curl -H 'Accept: application/vnd.github.v3.raw' https://api.github.com/repos/bestiejs/lodash/git/blobs/9869c4443fb22598235d1019fcc8245be41e8889 | tar xvz -C vendor" diff --git a/build/post-install.js b/build/post-install.js index a21fd8550..4329c93f0 100644 --- a/build/post-install.js +++ b/build/post-install.js @@ -20,7 +20,7 @@ var closureId = 'aa29a2ecf6f51d4da5a2a418c0d4ea0e368ee80d'; /** The Git object ID of `uglifyjs.tar.gz` */ - var uglifyId = '827f406a02626c1c6723e8ae281b6785d36375c1'; + var uglifyId = '9869c4443fb22598235d1019fcc8245be41e8889'; /*--------------------------------------------------------------------------*/ diff --git a/vendor/backbone/backbone.js b/vendor/backbone/backbone.js index cb0546e38..1f0d11822 100644 --- a/vendor/backbone/backbone.js +++ b/vendor/backbone/backbone.js @@ -62,7 +62,7 @@ Backbone.emulateJSON = false; // Backbone.Events - // ----------------- + // --------------- // Regular expression used to split event strings var eventSplitter = /\s+/; @@ -892,7 +892,7 @@ }); // Backbone.Router - // ------------------- + // --------------- // Routers map faux-URLs to actions, and fire events when routes are // matched. Creating a new one sets its `routes` hash, if not set statically. @@ -1313,10 +1313,7 @@ // attached directly to the view. _configure: function(options) { if (this.options) options = _.extend({}, this.options, options); - for (var i = 0, l = viewOptions.length; i < l; i++) { - var attr = viewOptions[i]; - if (options[attr]) this[attr] = options[attr]; - } + _.extend(this, _.pick(options, viewOptions)); this.options = options; }, @@ -1466,7 +1463,7 @@ return child; }; - // Set up inheritance for the model, collection, router, and view. + // Set up inheritance for the model, collection, router, view and history. Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend; // Throw an error when a URL is needed, and none is supplied. diff --git a/vendor/backbone/test/view.js b/vendor/backbone/test/view.js index 70e4f6d68..9fa56ad14 100644 --- a/vendor/backbone/test/view.js +++ b/vendor/backbone/test/view.js @@ -7,17 +7,20 @@ $(document).ready(function() { setup: function() { view = new Backbone.View({ id : 'test-view', - className : 'test-view' + className : 'test-view', + other : 'non-special-option' }); } }); - test("constructor", 4, function() { + test("constructor", 6, function() { equal(view.el.id, 'test-view'); equal(view.el.className, 'test-view'); + equal(view.el.other, void 0); equal(view.options.id, 'test-view'); equal(view.options.className, 'test-view'); + equal(view.options.other, 'non-special-option'); }); test("jQuery", 1, function() { diff --git a/vendor/qunit/README.md b/vendor/qunit/README.md index 3778a27b4..57ff29e1f 100644 --- a/vendor/qunit/README.md +++ b/vendor/qunit/README.md @@ -1,4 +1,4 @@ -[QUnit](http://docs.jquery.com/QUnit) - A JavaScript Unit Testing framework. +[QUnit](http://qunitjs.com) - A JavaScript Unit Testing framework. ================================ QUnit is a powerful, easy-to-use, JavaScript test suite. It's used by the jQuery @@ -35,7 +35,8 @@ the change, run `grunt` to lint and test it, then commit, push and create a pull Include some background for the change in the commit message and `Fixes #nnn`, referring to the issue number you're addressing. -To run `grunt`, you need `node` and `npm`, then `npm install grunt -g`. +To run `grunt`, you need `node` and `npm`, then `npm install grunt -g`. That gives you a global +grunt binary. For additional grunt tasks, also run `npm install`. Releases -------- @@ -47,3 +48,12 @@ tag, update them again to the next version, commit and push commits and tags Put the 'v' in front of the tag, e.g. `v1.8.0`. Clean up the changelog, removing merge commits or whitespace cleanups. + +To upload to code.jquery.com (replace $version accordingly): + + scp -q qunit/qunit.js jqadmin@code.origin.jquery.com:/var/www/html/code.jquery.com/qunit/qunit-$version.js + scp -q qunit/qunit.css jqadmin@code.origin.jquery.com:/var/www/html/code.jquery.com/qunit/qunit-$version.css + +Then update /var/www/html/code.jquery.com/index.html and purge it with: + + curl -s http://code.origin.jquery.com/?reload \ No newline at end of file diff --git a/vendor/qunit/qunit/qunit.css b/vendor/qunit/qunit/qunit.css index 257b224ff..55970e006 100644 --- a/vendor/qunit/qunit/qunit.css +++ b/vendor/qunit/qunit/qunit.css @@ -1,11 +1,11 @@ /** - * QUnit v1.9.0 - A JavaScript Unit Testing Framework + * QUnit v1.10.0 - A JavaScript Unit Testing Framework * - * http://docs.jquery.com/QUnit + * http://qunitjs.com * - * Copyright (c) 2012 John Resig, Jörn Zaefferer - * Dual licensed under the MIT (MIT-LICENSE.txt) - * or GPL (GPL-LICENSE.txt) licenses. + * Copyright 2012 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license */ /** Font Family and Sizes */ @@ -20,7 +20,7 @@ /** Resets */ -#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult { +#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter { margin: 0; padding: 0; } @@ -67,6 +67,7 @@ padding: 0.5em 0 0.5em 2em; color: #5E740B; background-color: #eee; + overflow: hidden; } #qunit-userAgent { @@ -76,6 +77,9 @@ text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; } +#qunit-modulefilter-container { + float: right; +} /** Tests: Pass/Fail */ diff --git a/vendor/qunit/qunit/qunit.js b/vendor/qunit/qunit/qunit.js index 9efedcb44..d4f17b5ae 100644 --- a/vendor/qunit/qunit/qunit.js +++ b/vendor/qunit/qunit/qunit.js @@ -1,11 +1,11 @@ /** - * QUnit v1.9.0 - A JavaScript Unit Testing Framework + * QUnit v1.10.0 - A JavaScript Unit Testing Framework * - * http://docs.jquery.com/QUnit + * http://qunitjs.com * - * Copyright (c) 2012 John Resig, Jörn Zaefferer - * Dual licensed under the MIT (MIT-LICENSE.txt) - * or GPL (GPL-LICENSE.txt) licenses. + * Copyright 2012 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license */ (function( window ) { @@ -17,6 +17,8 @@ var QUnit, fileName = (sourceFromStacktrace( 0 ) || "" ).replace(/(:\d+)+\)?/, "").replace(/.+\//, ""), toString = Object.prototype.toString, hasOwn = Object.prototype.hasOwnProperty, + // Keep a local reference to Date (GH-283) + Date = window.Date, defined = { setTimeout: typeof window.setTimeout !== "undefined", sessionStorage: (function() { @@ -304,7 +306,8 @@ QUnit = { // call on start of module test to prepend name to all tests module: function( name, testEnvironment ) { config.currentModule = name; - config.currentModuleTestEnviroment = testEnvironment; + config.currentModuleTestEnvironment = testEnvironment; + config.modules[name] = true; }, asyncTest: function( testName, expected, callback ) { @@ -336,7 +339,7 @@ QUnit = { async: async, callback: callback, module: config.currentModule, - moduleTestEnvironment: config.currentModuleTestEnviroment, + moduleTestEnvironment: config.currentModuleTestEnvironment, stack: sourceFromStacktrace( 2 ) }); @@ -349,7 +352,11 @@ QUnit = { // Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through. expect: function( asserts ) { - config.current.expected = asserts; + if (arguments.length === 1) { + config.current.expected = asserts; + } else { + return config.current.expected; + } }, start: function( count ) { @@ -415,6 +422,8 @@ QUnit.assert = { var source, details = { + module: config.current.module, + name: config.current.testName, result: result, message: msg }; @@ -600,6 +609,9 @@ config = { } ], + // Set of all modules. + modules: {}, + // logging callback queues begin: [], done: [], @@ -710,17 +722,10 @@ extend( QUnit, { }, // Resets the test setup. Useful for tests that modify the DOM. - // If jQuery is available, uses jQuery's html(), otherwise just innerHTML. reset: function() { - var fixture; - - if ( window.jQuery ) { - jQuery( "#qunit-fixture" ).html( config.fixture ); - } else { - fixture = id( "qunit-fixture" ); - if ( fixture ) { - fixture.innerHTML = config.fixture; - } + var fixture = id( "qunit-fixture" ); + if ( fixture ) { + fixture.innerHTML = config.fixture; } }, @@ -781,6 +786,8 @@ extend( QUnit, { var output, source, details = { + module: config.current.module, + name: config.current.testName, result: result, message: message, actual: actual, @@ -826,6 +833,8 @@ extend( QUnit, { var output, details = { + module: config.current.module, + name: config.current.testName, result: false, message: message }; @@ -916,7 +925,9 @@ QUnit.load = function() { runLoggingCallbacks( "begin", QUnit, {} ); // Initialize the config, saving the execution queue - var banner, filter, i, label, len, main, ol, toolbar, userAgent, val, urlConfigCheckboxes, + var banner, filter, i, label, len, main, ol, toolbar, userAgent, val, urlConfigCheckboxes, moduleFilter, + numModules = 0, + moduleFilterHtml = "", urlConfigHtml = "", oldconfig = extend( {}, config ); @@ -940,6 +951,15 @@ QUnit.load = function() { urlConfigHtml += ""; } + moduleFilterHtml += ""; + // `userAgent` initialized at top of scope userAgent = id( "qunit-userAgent" ); if ( userAgent ) { @@ -1002,6 +1022,19 @@ QUnit.load = function() { window.location = QUnit.url( params ); }); toolbar.appendChild( urlConfigCheckboxes ); + + if (numModules > 1) { + moduleFilter = document.createElement( 'span' ); + moduleFilter.setAttribute( 'id', 'qunit-modulefilter-container' ); + moduleFilter.innerHTML = moduleFilterHtml; + addEvent( moduleFilter, "change", function() { + var selectBox = moduleFilter.getElementsByTagName("select")[0], + selectedModule = decodeURIComponent(selectBox.options[selectBox.selectedIndex].value); + + window.location = QUnit.url( { module: ( selectedModule === "" ) ? undefined : selectedModule } ); + }); + toolbar.appendChild(moduleFilter); + } } // `main` initialized at top of scope @@ -1039,9 +1072,9 @@ window.onerror = function ( error, filePath, linerNr ) { } QUnit.pushFailure( error, filePath + ":" + linerNr ); } else { - QUnit.test( "global failure", function() { + QUnit.test( "global failure", extend( function() { QUnit.pushFailure( error, filePath + ":" + linerNr ); - }); + }, { validTest: validTest } ) ); } return false; } @@ -1108,6 +1141,11 @@ function done() { } } + // scroll back to top to show results + if ( window.scrollTo ) { + window.scrollTo(0, 0); + } + runLoggingCallbacks( "done", QUnit, { failed: config.stats.bad, passed: passed, @@ -1123,6 +1161,12 @@ function validTest( test ) { module = config.module && config.module.toLowerCase(), fullName = (test.module + ": " + test.testName).toLowerCase(); + // Internally-generated tests are always valid + if ( test.callback && test.callback.validTest === validTest ) { + delete test.callback.validTest; + return true; + } + if ( config.testNumber ) { return test.testNumber === config.testNumber; } @@ -1404,7 +1448,8 @@ QUnit.equiv = (function() { a.global === b.global && // (gmi) ... a.ignoreCase === b.ignoreCase && - a.multiline === b.multiline; + a.multiline === b.multiline && + a.sticky === b.sticky; }, // - skip when the property is a method of an instance (OOP) diff --git a/vendor/requirejs/require.js b/vendor/requirejs/require.js index eb1cde574..39dbad8e3 100644 --- a/vendor/requirejs/require.js +++ b/vendor/requirejs/require.js @@ -1,5 +1,5 @@ /** vim: et:ts=4:sw=4:sts=4 - * @license RequireJS 2.1.0 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved. + * @license RequireJS 2.1.1 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved. * Available via the MIT or new BSD license. * see: http://github.com/jrburke/requirejs for details */ @@ -12,7 +12,7 @@ var requirejs, require, define; (function (global) { var req, s, head, baseElement, dataMain, src, interactiveScript, currentlyAddingScript, mainScript, subPath, - version = '2.1.0', + version = '2.1.1', commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg, cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g, jsSuffixRegExp = /\.js$/, @@ -100,9 +100,6 @@ var requirejs, require, define; /** * Simple function to mix in properties from source into target, * but only if target does not already have a property of the same name. - * This is not robust in IE for transferring methods that match - * Object.prototype names, but the uses of mixin here seem unlikely to - * trigger a problem related to that. */ function mixin(target, source, force, deepStringMixin) { if (source) { @@ -195,7 +192,9 @@ var requirejs, require, define; baseUrl: './', paths: {}, pkgs: {}, - shim: {} + shim: {}, + map: {}, + config: {} }, registry = {}, undefEvents = {}, @@ -1167,6 +1166,25 @@ var requirejs, require, define; }; } + function intakeDefines() { + var args; + + //Any defined modules in the global queue, intake them now. + takeGlobalQueue(); + + //Make sure any remaining defQueue items get properly processed. + while (defQueue.length) { + args = defQueue.shift(); + if (args[0] === null) { + return onError(makeError('mismatch', 'Mismatched anonymous define() module: ' + args[args.length - 1])); + } else { + //args are id, deps, factory. Should be normalized by the + //define() function. + callGetModule(args); + } + } + } + context = { config: config, contextName: contextName, @@ -1194,20 +1212,23 @@ var requirejs, require, define; //they are additive. var pkgs = config.pkgs, shim = config.shim, - paths = config.paths, - map = config.map; + objs = { + paths: true, + config: true, + map: true + }; - //Mix in the config values, favoring the new values over - //existing ones in context.config. - mixin(config, cfg, true); - - //Merge paths. - config.paths = mixin(paths, cfg.paths, true); - - //Merge map - if (cfg.map) { - config.map = mixin(map || {}, cfg.map, true, true); - } + eachProp(cfg, function (value, prop) { + if (objs[prop]) { + if (prop === 'map') { + mixin(config[prop], value, true, true); + } else { + mixin(config[prop], value, true); + } + } else { + config[prop] = value; + } + }); //Merge shim if (cfg.shim) { @@ -1288,8 +1309,8 @@ var requirejs, require, define; makeRequire: function (relMap, options) { options = options || {}; - function require(deps, callback, errback) { - var id, map, requireMod, args; + function localRequire(deps, callback, errback) { + var id, map, requireMod; if (options.enableBuildCallback && callback && isFunction(callback)) { callback.__requireJsBuild = true; @@ -1328,23 +1349,15 @@ var requirejs, require, define; return defined[id]; } - //Any defined modules in the global queue, intake them now. - takeGlobalQueue(); - - //Make sure any remaining defQueue items get properly processed. - while (defQueue.length) { - args = defQueue.shift(); - if (args[0] === null) { - return onError(makeError('mismatch', 'Mismatched anonymous define() module: ' + args[args.length - 1])); - } else { - //args are id, deps, factory. Should be normalized by the - //define() function. - callGetModule(args); - } - } + //Grab defines waiting in the global queue. + intakeDefines(); //Mark all the dependencies as needing to be loaded. context.nextTick(function () { + //Some defines could have been added since the + //require call, collect them. + intakeDefines(); + requireMod = getModule(makeModuleMap(null, relMap)); //Store if map config should be applied to this require @@ -1358,10 +1371,10 @@ var requirejs, require, define; checkLoaded(); }); - return require; + return localRequire; } - mixin(require, { + mixin(localRequire, { isBrowser: isBrowser, /** @@ -1394,7 +1407,7 @@ var requirejs, require, define; //Only allow undef on top level require calls if (!relMap) { - require.undef = function (id) { + localRequire.undef = function (id) { //Bind any waiting define() calls to this context, //fix for #408 takeGlobalQueue(); @@ -1419,7 +1432,7 @@ var requirejs, require, define; }; } - return require; + return localRequire; }, /**