diff --git a/gulpfile.js b/gulpfile.js index 9ce3dc3f4..d7dda48bf 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,52 +1,55 @@ var gulp = require('gulp'), - concat = require('gulp-concat'), - uglify = require('gulp-uglify'), - util = require('gulp-util'), - jshint = require('gulp-jshint'), - size = require('gulp-size'), - connect = require('gulp-connect'), - replace = require('gulp-replace'), - htmlv = require('gulp-html-validator'), - inquirer = require('inquirer'), - semver = require('semver'), - exec = require('child_process').exec, - fs = require('fs'), - package = require('./package.json'), - bower = require('./bower.json'); + concat = require('gulp-concat'), + uglify = require('gulp-uglify'), + util = require('gulp-util'), + jshint = require('gulp-jshint'), + size = require('gulp-size'), + connect = require('gulp-connect'), + replace = require('gulp-replace'), + htmlv = require('gulp-html-validator'), + inquirer = require('inquirer'), + semver = require('semver'), + exec = require('child_process').exec, + fs = require('fs'), + package = require('./package.json'), + bower = require('./bower.json'), + karma = require('gulp-karma'); var srcDir = './src/'; +var testDir = './test/'; /* * Usage : gulp build --types=Bar,Line,Doughnut * Output: - A built Chart.js file with Core and types Bar, Line and Doughnut concatenated together * - A minified version of this code, in Chart.min.js */ +var srcFiles = [ + './src/core/core.js', + './src/core/core.helpers.js', + './src/core/core.chart.js', + './src/core/core.element.js', + './src/core/**', + './src/controllers/**', + './src/scales/**', + './src/elements/**', + './src/charts/**', + './node_modules/color/dist/color.min.js' + ]; + gulp.task('build', function() { - var srcFiles = [ - './src/core/core.js', - './src/core/core.helpers.js', - './src/core/core.chart.js', - './src/core/core.element.js', - './src/core/**', - './src/controllers/**', - './src/scales/**', - './src/elements/**', - './src/charts/**', - './node_modules/color/dist/color.min.js' - ], - isCustom = !!(util.env.types), - outputDir = (isCustom) ? 'custom' : '.'; + var isCustom = !!(util.env.types), + outputDir = (isCustom) ? 'custom' : '.'; - return gulp.src(srcFiles) - .pipe(concat('Chart.js')) - .pipe(replace('{{ version }}', package.version)) - .pipe(gulp.dest(outputDir)) - .pipe(uglify({ - preserveComments: 'some' - })) - .pipe(concat('Chart.min.js')) - .pipe(gulp.dest(outputDir)); + return gulp.src(srcFiles) + .pipe(concat('Chart.js')) + .pipe(replace('{{ version }}', package.version)) + .pipe(gulp.dest(outputDir)) + .pipe(uglify({ + preserveComments: 'some' + })) + .pipe(concat('Chart.min.js')) + .pipe(gulp.dest(outputDir)); }); @@ -57,66 +60,80 @@ gulp.task('build', function() { */ gulp.task('bump', function(complete) { - util.log('Current version:', util.colors.cyan(package.version)); - var choices = ['major', 'premajor', 'minor', 'preminor', 'patch', 'prepatch', 'prerelease'].map(function(versionType) { - return versionType + ' (v' + semver.inc(package.version, versionType) + ')'; - }); - inquirer.prompt({ - type: 'list', - name: 'version', - message: 'What version update would you like?', - choices: choices - }, function(res) { - var increment = res.version.split(' ')[0], - newVersion = semver.inc(package.version, increment); + util.log('Current version:', util.colors.cyan(package.version)); + var choices = ['major', 'premajor', 'minor', 'preminor', 'patch', 'prepatch', 'prerelease'].map(function(versionType) { + return versionType + ' (v' + semver.inc(package.version, versionType) + ')'; + }); + inquirer.prompt({ + type: 'list', + name: 'version', + message: 'What version update would you like?', + choices: choices + }, function(res) { + var increment = res.version.split(' ')[0], + newVersion = semver.inc(package.version, increment); - // Set the new versions into the bower/package object - package.version = newVersion; - bower.version = newVersion; + // Set the new versions into the bower/package object + package.version = newVersion; + bower.version = newVersion; - // Write these to their own files, then build the output - fs.writeFileSync('package.json', JSON.stringify(package, null, 2)); - fs.writeFileSync('bower.json', JSON.stringify(bower, null, 2)); + // Write these to their own files, then build the output + fs.writeFileSync('package.json', JSON.stringify(package, null, 2)); + fs.writeFileSync('bower.json', JSON.stringify(bower, null, 2)); - complete(); - }); + complete(); + }); }); gulp.task('release', ['build'], function() { - exec('git tag -a v' + package.version); + exec('git tag -a v' + package.version); }); gulp.task('jshint', function() { - return gulp.src(srcDir + '*.js') - .pipe(jshint()) - .pipe(jshint.reporter('default')); + return gulp.src(srcDir + '*.js') + .pipe(jshint()) + .pipe(jshint.reporter('default')); }); gulp.task('valid', function() { - return gulp.src('samples/*.html') - .pipe(htmlv()); + return gulp.src('samples/*.html') + .pipe(htmlv()); +}); + +gulp.task('unittest', function() { + var files = srcFiles.slice(); + files.push(testDir + '*.js'); + + return gulp.src(files) + .pipe(karma({ + configFile: 'karma.conf.js', + action: 'run' + })) + .on('error', function(err) { + throw err; + }); }); gulp.task('library-size', function() { - return gulp.src('Chart.min.js') - .pipe(size({ - gzip: true - })); + return gulp.src('Chart.min.js') + .pipe(size({ + gzip: true + })); }); gulp.task('module-sizes', function() { - return gulp.src(srcDir + '*.js') - .pipe(uglify({ - preserveComments: 'some' - })) - .pipe(size({ - showFiles: true, - gzip: true - })); + return gulp.src(srcDir + '*.js') + .pipe(uglify({ + preserveComments: 'some' + })) + .pipe(size({ + showFiles: true, + gzip: true + })); }); gulp.task('watch', function() { - gulp.watch('./src/**', ['build']); + gulp.watch('./src/**', ['build']); }); gulp.task('test', ['jshint', 'valid']); @@ -126,15 +143,15 @@ gulp.task('size', ['library-size', 'module-sizes']); gulp.task('default', ['build', 'watch']); gulp.task('server', function() { - connect.server({ - port: 8000 - }); + connect.server({ + port: 8000 + }); }); // Convenience task for opening the project straight from the command line gulp.task('_open', function() { - exec('open http://localhost:8000'); - exec('subl .'); + exec('open http://localhost:8000'); + exec('subl .'); }); gulp.task('dev', ['server', 'default']); diff --git a/karma.conf.js b/karma.conf.js new file mode 100644 index 000000000..a0d60308f --- /dev/null +++ b/karma.conf.js @@ -0,0 +1,9 @@ +module.exports = function(config) { + config.set({ + autoWatch: false, + browsers: ['Chrome', 'Firefox'], + frameworks: ['jasmine'], + reporters: ['progress'], + singleRun: false + }); +}; \ No newline at end of file diff --git a/package.json b/package.json index cf30a6227..27ed2888b 100644 --- a/package.json +++ b/package.json @@ -1,31 +1,38 @@ { - "name": "chart.js", - "homepage": "http://www.chartjs.org", - "description": "Simple HTML5 charts using the canvas element.", - "version": "2.0.0-alpha", - "main": "Chart.js", - "repository": { - "type": "git", - "url": "https://github.com/nnnick/Chart.js.git" - }, - "dependences": {}, - "devDependencies": { - "color": "git://github.com/chartjs/color", - "gulp": "3.5.x", - "gulp-concat": "~2.1.x", - "gulp-connect": "~2.0.5", - "gulp-html-validator": "^0.0.2", - "gulp-jshint": "~1.5.1", - "gulp-replace": "^0.4.0", - "gulp-size": "~0.4.0", - "gulp-uglify": "~0.2.x", - "gulp-util": "~2.2.x", - "inquirer": "^0.5.1", - "jquery": "^2.1.4", - "onecolor": "^2.5.0", - "semver": "^3.0.1" - }, - "spm": { - "main": "Chart.js" - } + "name": "chart.js", + "homepage": "http://www.chartjs.org", + "description": "Simple HTML5 charts using the canvas element.", + "version": "2.0.0-alpha", + "main": "Chart.js", + "repository": { + "type": "git", + "url": "https://github.com/nnnick/Chart.js.git" + }, + "dependences": {}, + "devDependencies": { + "color": "git://github.com/chartjs/color", + "gulp": "3.5.x", + "gulp-concat": "~2.1.x", + "gulp-connect": "~2.0.5", + "gulp-html-validator": "^0.0.2", + "gulp-jshint": "~1.5.1", + "gulp-karma": "0.0.4", + "gulp-replace": "^0.4.0", + "gulp-size": "~0.4.0", + "gulp-uglify": "~0.2.x", + "gulp-util": "~2.2.x", + "inquirer": "^0.5.1", + "jasmine": "^2.3.2", + "jasmine-core": "^2.3.4", + "jquery": "^2.1.4", + "karma": "^0.12.37", + "karma-chrome-launcher": "^0.2.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "onecolor": "^2.5.0", + "semver": "^3.0.1" + }, + "spm": { + "main": "Chart.js" + } }