From 03e7cc689e5a8fd491ccf870cd9359b511959533 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=CC=88rn=20Zaefferer?= Date: Tue, 20 Oct 2015 11:47:34 -0400 Subject: [PATCH 1/4] All: Adapt to latest structural changes in 1.12 --- app/src/download.js | 18 +++++++++++++++--- config.json | 5 +++++ lib/jquery-ui-1-12.js | 18 ++++++++++++------ lib/jquery-ui-files-1-12.js | 2 +- lib/package-1-12.js | 2 +- package.json | 4 ++-- 6 files changed, 36 insertions(+), 13 deletions(-) diff --git a/app/src/download.js b/app/src/download.js index 6cfc627d..3724fa8d 100644 --- a/app/src/download.js +++ b/app/src/download.js @@ -208,11 +208,23 @@ if ( !thisName || !thisDependencies ) { return; } - thisDependencies = thisDependencies.split( "," ); + + // Adjust path prefixes to match names + var path = thisName.match( /^(.+)\// ); + thisDependencies = thisDependencies.split( "," ).map(function( dependency ) { + if ( !path ) { + return dependency; + } + if ( /\.\.\//.test( dependency ) ) { + return dependency.replace( /^.+\//, "" ); + } + return path[ 1 ] + "/" + dependency; + }); + dependencies[ thisName ] = $(); $.each( thisDependencies, function() { var dependecy = this, - dependecyElem = $( "[name=" + this + "]" ); + dependecyElem = $( ".components-area input[type=checkbox][name='" + this + "']" ); dependencies[ thisName ] = dependencies[ thisName ].add( dependecyElem ); if ( !dependents[ dependecy ] ) { dependents[ dependecy ] = $(); @@ -318,7 +330,7 @@ }); if ( "version" in changed ) { - versionElement = $( "#download-builder [name=version][value=\"" + model.get( "version" ) + "\"]" ); + versionElement = $( "#download-builder input[type=radio][name=version][value=\"" + model.get( "version" ) + "\"]" ); versionElement.trigger( "click" ); themesLoad.done(function() { $( ".advanced-settings .folder-name-area" ).toggle( !versionElement.data( "no-theme-folder" ) ); diff --git a/config.json b/config.json index 83cc5d5f..b057ba48 100644 --- a/config.json +++ b/config.json @@ -1,5 +1,10 @@ { "jqueryUi": [ + { + "version": "origin/master", + "dependsOn": "jQuery1.7+", + "label": "preview" + }, { "version": "1.11.4", "dependsOn": "jQuery1.6+", diff --git a/lib/jquery-ui-1-12.js b/lib/jquery-ui-1-12.js index 428870b4..f9ef3747 100644 --- a/lib/jquery-ui-1-12.js +++ b/lib/jquery-ui-1-12.js @@ -1,13 +1,12 @@ var categories, orderedComponents, _ = require( "underscore" ), fs = require( "fs" ), - glob = require( "./util" ).glob, path = require( "path" ); categories = { - "UI Core": { - name: "UI Core", - description: "A required dependency, contains basic functions and initializers.", + "Core": { + name: "Core", + description: "Various utilities and helpers", order: 0 }, "Interactions": { @@ -68,9 +67,16 @@ function get( data, key ) { return match && match[ 1 ]; } +function trim( string ) { + return string.trim(); +} + function getDependencies( data ) { - var match = data.match( /define\((\ ?\[[\s\S]*?\]\ ?), factory \);/ ); - return match && JSON.parse( match[ 1 ] ) || []; + var match = data.match( /define\(\[([^\]]*?)\]/ ); + if ( match === null ) { + return []; + } + return match[ 1 ].replace( /\/\/.+/g, "" ).replace( /"/, "" ).split( "," ).map( trim ); } function JqueryUiManifests_1_12_0() { diff --git a/lib/jquery-ui-files-1-12.js b/lib/jquery-ui-files-1-12.js index 5628cd10..64ad2c12 100644 --- a/lib/jquery-ui-files-1-12.js +++ b/lib/jquery-ui-files-1-12.js @@ -17,7 +17,7 @@ function JqueryUiFiles_1_12_0( jqueryUi ) { glob( jqueryUi.path + "!(node_modules|build)" ).filter( noDirectory ).map( stripJqueryUiPath ).map( readFile ); glob( jqueryUi.path + "!(node_modules|build)/**" ).filter( noDirectory ).map( stripJqueryUiPath ).map( readFile ); - this.componentFiles = Files( glob( jqueryUi.path + "ui/*.js" ).map( stripJqueryUiPath ).map( readFile ) ); + this.componentFiles = Files( glob( jqueryUi.path + "ui/**/*.js" ).map( stripJqueryUiPath ).map( readFile ) ); // Convert {path:, data:} into {path: }. files = this.cache; diff --git a/lib/package-1-12.js b/lib/package-1-12.js index 0ac3b1cd..a84c4851 100644 --- a/lib/package-1-12.js +++ b/lib/package-1-12.js @@ -94,7 +94,7 @@ extend( Package.prototype, { } return indexTemplate({ ui: this.runtime.components.reduce(function( sum, component ) { - sum[ component ] = true; + sum[ component.replace( /^.+\//, "" ) ] = true; return sum; }, {}), version: version diff --git a/package.json b/package.json index 102fdb03..178f1524 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "async": "0.1.22", "bower": "1.3.8", "builder-amd": "0.0.x", - "builder-jquery-css": "0.0.x", + "builder-jquery-css": "0.0.3", "connect": "1.9.2", "dateformat": "1.0.2-1.2.3", "formidable": "1.0.9", @@ -26,7 +26,7 @@ "handlebars": "1.0.12", "jquery-ui-themeroller": "0.0.x", "lzma": "1.2.1", - "node-packager": "0.0.5", + "node-packager": "0.0.6", "optimist": "0.3.4", "q": "1.1.2", "requirejs": "2.1.8", From 9991a4f281a139750ea08bc7c6e43567a1a20d7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=CC=88rn=20Zaefferer?= Date: Fri, 23 Oct 2015 12:34:42 -0400 Subject: [PATCH 2/4] All: Improve error handling in 1-12 package and tests --- lib/package-1-12.js | 3 +++ test/package-1-12.0.js | 28 +++++++++++++++++++++------- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/lib/package-1-12.js b/lib/package-1-12.js index a84c4851..4992d650 100644 --- a/lib/package-1-12.js +++ b/lib/package-1-12.js @@ -186,6 +186,9 @@ extend( Package.prototype, { appDir: "ui", include: this.runtime.components, onCssBuildWrite: function( _path, data ) { + if ( data === undefined) { + throw new Error( "onCssBuildWrite failed (data is undefined) for path " + _path ); + } structureCssFileNames.push( path.basename( _path ) ); return stripBanner( data ); }, diff --git a/test/package-1-12.0.js b/test/package-1-12.0.js index d8bfaefe..e6df5501 100644 --- a/test/package-1-12.0.js +++ b/test/package-1-12.0.js @@ -59,7 +59,9 @@ tests = { }); test.expect( COMMON_FILES_TESTCASES + THEME_FILES_TESTCASES + 1 ); pkg.toJson(function( error, files ) { - test.ifError( error ); + if (error) { + return test.done( error ); + } commonFilesCheck( test, files ); themeFilesCheck( test, files, true ); test.done(); @@ -72,7 +74,9 @@ tests = { }); test.expect( COMMON_FILES_TESTCASES + THEME_FILES_TESTCASES + 1 ); pkg.toJson(function( error, files ) { - test.ifError( error ); + if (error) { + return test.done( error ); + } commonFilesCheck( test, files ); themeFilesCheck( test, files, true ); test.done(); @@ -86,7 +90,9 @@ tests = { }); test.expect( COMMON_FILES_TESTCASES + THEME_FILES_TESTCASES + 1 ); pkg.toJson(function( error, files ) { - test.ifError( error ); + if (error) { + return test.done( error ); + } commonFilesCheck( test, files ); themeFilesCheck( test, files, true ); test.done(); @@ -99,7 +105,9 @@ tests = { }); test.expect( COMMON_FILES_TESTCASES + THEME_FILES_TESTCASES + 1 ); pkg.toJson(function( error, files ) { - test.ifError( error ); + if (error) { + return test.done( error ); + } commonFilesCheck( test, files ); themeFilesCheck( test, files, false ); test.done(); @@ -112,7 +120,9 @@ tests = { }); test.expect( COMMON_FILES_TESTCASES + THEME_FILES_TESTCASES + 1 ); pkg.toJson(function( error, files ) { - test.ifError( error ); + if (error) { + return test.done( error ); + } commonFilesCheck( test, files ); themeFilesCheck( test, files, true ); test.done(); @@ -125,7 +135,9 @@ tests = { }); test.expect( COMMON_FILES_TESTCASES + THEME_FILES_TESTCASES + 1 ); pkg.toJson(function( error, files ) { - test.ifError( error ); + if (error) { + return test.done( error ); + } commonFilesCheck( test, files ); themeFilesCheck( test, files, true ); test.done(); @@ -146,7 +158,9 @@ tests = { }); test.expect( filesToCheck.length + 1 ); pkg.toJson(function( error, files ) { - test.ifError( error ); + if (error) { + return test.done( error ); + } filesToCheck.forEach(function( filepath ) { test.ok( scopeRe.test( files[ filepath ] ), "Missing scope selector on \"" + filepath + "\"." ); }); From 494cf37f0aea385219be5cd1a9984ef03dc914aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=CC=88rn=20Zaefferer?= Date: Fri, 23 Oct 2015 12:38:41 -0400 Subject: [PATCH 3/4] Tests: Adjust to 1.12 file structure changes --- test/package-1-12.0.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/test/package-1-12.0.js b/test/package-1-12.0.js index e6df5501..c39e7f8e 100644 --- a/test/package-1-12.0.js +++ b/test/package-1-12.0.js @@ -14,8 +14,8 @@ function filePresent( files, filepath ) { } defaultTheme = themeGallery[ 0 ].vars; -someWidgets1 = "widget core position autocomplete button menu progressbar spinner tabs".split( " " ); -someWidgets2 = "widget core mouse position draggable resizable button datepicker dialog slider tooltip".split( " " ); +someWidgets1 = "widget core position widgets/autocomplete widgets/button widgets/menu widgets/progressbar widgets/spinner widgets/tabs".split( " " ); +someWidgets2 = "widget core widgets/mouse position widgets/draggable widgets/resizable widgets/button widgets/datepicker widgets/dialog widgets/slider widgets/tooltip".split( " " ); commonFiles = [ "external/jquery/jquery.js", @@ -57,7 +57,7 @@ tests = { components: this.allComponents, themeVars: defaultTheme }); - test.expect( COMMON_FILES_TESTCASES + THEME_FILES_TESTCASES + 1 ); + test.expect( COMMON_FILES_TESTCASES + THEME_FILES_TESTCASES ); pkg.toJson(function( error, files ) { if (error) { return test.done( error ); @@ -72,7 +72,7 @@ tests = { components: this.allComponents, themeVars: themeGallery[ 1 ].vars }); - test.expect( COMMON_FILES_TESTCASES + THEME_FILES_TESTCASES + 1 ); + test.expect( COMMON_FILES_TESTCASES + THEME_FILES_TESTCASES ); pkg.toJson(function( error, files ) { if (error) { return test.done( error ); @@ -88,7 +88,7 @@ tests = { components: this.allWidgets, themeVars: defaultTheme }); - test.expect( COMMON_FILES_TESTCASES + THEME_FILES_TESTCASES + 1 ); + test.expect( COMMON_FILES_TESTCASES + THEME_FILES_TESTCASES ); pkg.toJson(function( error, files ) { if (error) { return test.done( error ); @@ -101,9 +101,9 @@ tests = { "test: select all effects": function( test ) { var pkg = new Packager( this.files, Package, { components: this.allEffects, - themeVars: defaultTheme + themeVars: null }); - test.expect( COMMON_FILES_TESTCASES + THEME_FILES_TESTCASES + 1 ); + test.expect( COMMON_FILES_TESTCASES + THEME_FILES_TESTCASES ); pkg.toJson(function( error, files ) { if (error) { return test.done( error ); @@ -118,7 +118,7 @@ tests = { components: someWidgets1, themeVars: defaultTheme }); - test.expect( COMMON_FILES_TESTCASES + THEME_FILES_TESTCASES + 1 ); + test.expect( COMMON_FILES_TESTCASES + THEME_FILES_TESTCASES ); pkg.toJson(function( error, files ) { if (error) { return test.done( error ); @@ -133,7 +133,7 @@ tests = { components: someWidgets2, themeVars: defaultTheme }); - test.expect( COMMON_FILES_TESTCASES + THEME_FILES_TESTCASES + 1 ); + test.expect( COMMON_FILES_TESTCASES + THEME_FILES_TESTCASES ); pkg.toJson(function( error, files ) { if (error) { return test.done( error ); @@ -156,7 +156,7 @@ tests = { themeVars: defaultTheme, scope: scope }); - test.expect( filesToCheck.length + 1 ); + test.expect( filesToCheck.length ); pkg.toJson(function( error, files ) { if (error) { return test.done( error ); From 723747488382e319ebdacf796e24395e499e170c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=CC=88rn=20Zaefferer?= Date: Fri, 23 Oct 2015 13:04:43 -0400 Subject: [PATCH 4/4] Build: Add Travis config Improve grunt error handling when spawning sub grunt process. --- .travis.yml | 7 +++++++ Gruntfile.js | 7 +++++-- 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..f963b7fe --- /dev/null +++ b/.travis.yml @@ -0,0 +1,7 @@ +language: node_js +node_js: + - "0.12" +before_script: + - sudo apt-get install xsltproc + - npm install -g grunt-cli + - grunt prepare diff --git a/Gruntfile.js b/Gruntfile.js index 0aa6b918..2fec18b8 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -102,7 +102,10 @@ grunt.initConfig({ function log( callback, successMsg, errorMsg ) { return function( error, result, code ) { if ( error && errorMsg ) { - grunt.log.error( errorMsg + ": " + error ); + grunt.log.error( errorMsg ); + grunt.log.error( error ); + grunt.log.error( result.stdout ); + grunt.log.error( result.stderr ); } else if ( ! error && successMsg ) { grunt.log.ok( successMsg ); } @@ -306,7 +309,7 @@ function prepare( jqueryUi ) { rimraf.sync( "tmp/api.jqueryui.com/dist" ); grunt.util.spawn({ cmd: "grunt", - args: [ "build" ], + args: [ "build", "--stack" ], opts: { cwd: "tmp/api.jqueryui.com" }