| | module.exports = function (grunt) { |
| |
|
| | var autoStartBrowsers = ['Chrome', 'Firefox', 'Safari']; |
| |
|
| | var STREAM_SOURCE_PORT = 4567; |
| |
|
| | |
| | var OBOE_BROWSER_SOURCE_FILES = [ |
| | 'build/version.js' |
| | , 'src/LICENCE.js' |
| | , 'src/functional.js' |
| | , 'src/util.js' |
| | , 'src/lists.js' |
| | , 'src/libs/clarinet.js' |
| | , 'src/clarinetListenerAdaptor.js' |
| | , 'src/parseResponseHeaders.browser.js' |
| | , 'src/streamingHttp.browser.js' |
| | , 'src/jsonPathSyntax.js' |
| | , 'src/ascent.js' |
| | , 'src/incrementalContentBuilder.js' |
| | , 'src/jsonPath.js' |
| | , 'src/singleEventPubSub.js' |
| | , 'src/pubSub.js' |
| | , 'src/events.js' |
| | , 'src/patternAdapter.js' |
| | , 'src/instanceApi.js' |
| | , 'src/instanceController.js' |
| | , 'src/wire.js' |
| | , 'src/publicApi.js' |
| | ]; |
| | |
| | var OBOE_NODE_SOURCE_FILES = [ |
| | 'build/version.js' |
| | , 'src/functional.js' |
| | , 'src/util.js' |
| | , 'src/lists.js' |
| | , 'src/clarinetListenerAdaptor.js' |
| | , 'src/streamingHttp.node.js' |
| | , 'src/jsonPathSyntax.js' |
| | , 'src/ascent.js' |
| | , 'src/incrementalContentBuilder.js' |
| | , 'src/jsonPath.js' |
| | , 'src/singleEventPubSub.js' |
| | , 'src/pubSub.js' |
| | , 'src/events.js' |
| | , 'src/patternAdapter.js' |
| | , 'src/instanceApi.js' |
| | , 'src/instanceController.js' |
| | , 'src/wire.js' |
| | , 'src/publicApi.js' |
| | ]; |
| | |
| | var FILES_TRIGGERING_KARMA = [ |
| | 'src/**/*.js', |
| | 'test/specs/*.spec.js', |
| | 'test/libs/*.js' |
| | ]; |
| | |
| | grunt.initConfig({ |
| |
|
| | pkg:grunt.file.readJSON("package.json") |
| | |
| | , clean: ['dist/*.js', 'build/*.js'] |
| | |
| | , concat: { |
| | browser:{ |
| | src: OBOE_BROWSER_SOURCE_FILES, |
| | dest: 'build/oboe-browser.concat.js' |
| | }, |
| | node:{ |
| | src: OBOE_NODE_SOURCE_FILES, |
| | dest: 'build/oboe-node.concat.js' |
| | } |
| | } |
| | |
| | , wrap: { |
| | browserPackage: { |
| | src: 'build/oboe-browser.concat.js', |
| | dest: '.', |
| | wrapper: [ |
| | '// This file is the concatenation of many js files. \n' + |
| | '// See https://github.com/jimhigson/oboe.js for the raw source\n' + |
| | |
| | '(function (window, Object, Array, Error, JSON, undefined ) {\n' |
| | |
| | |
| | |
| | , '\n\n;' + |
| | |
| | 'if ( typeof define === "function" && define.amd ) {' + |
| | 'define( "oboe", [], function () { return oboe; } );' + |
| | '} else {' + |
| | 'window.oboe = oboe;' + |
| | '}' + |
| | '})(window, Object, Array, Error, JSON);' |
| | ] |
| | }, |
| | |
| | nodePackage: { |
| | src: 'build/oboe-node.concat.js', |
| | dest: '.', |
| | wrapper: [ |
| | '// this file is the concatenation of several js files. See https://github.com/jimhigson/oboe-browser.js/tree/master/src ' + |
| | 'for the unconcatenated source\n' + |
| | |
| | 'module.exports = (function () {\n' + |
| | 'var clarinet = require("clarinet");\n' |
| | |
| | |
| | |
| | , '\n\n;return oboe;})();' |
| | ] |
| | } |
| | } |
| | |
| | |
| | , uglify: { |
| | build:{ |
| | files:{ |
| | 'build/oboe-browser.min.js': 'build/oboe-browser.concat.js' |
| | } |
| | } |
| | } |
| | |
| | , karma: { |
| | options:{ |
| | singleRun: true, |
| | proxies: { |
| | '/testServer' : 'http://localhost:' + STREAM_SOURCE_PORT |
| | }, |
| | |
| | |
| | reporters : ['progress'], |
| | |
| | |
| | colors : true |
| | } |
| | |
| | , |
| | 'precaptured-dev': { |
| | |
| | |
| | |
| | browsers: [], |
| | configFile: 'test/unit.conf.js', |
| | singleRun: 'true' |
| | } |
| | , |
| | 'single-dev': { |
| | browsers: autoStartBrowsers, |
| | configFile: 'test/unit.conf.js' |
| | } |
| | , |
| | 'single-concat': { |
| | browsers: autoStartBrowsers, |
| | configFile: 'test/concat.conf.js' |
| | } |
| | , |
| | 'single-minified': { |
| | browsers: autoStartBrowsers, |
| | configFile: 'test/min.conf.js' |
| | } |
| | |
| | , |
| | 'single-amd': { |
| | browsers: autoStartBrowsers, |
| | configFile: 'test/amd.conf.js' |
| | } |
| | |
| | , |
| | 'single-browser-http': { |
| | browsers: autoStartBrowsers, |
| | configFile: 'test/http.conf.js' |
| | } |
| | |
| | , |
| | 'persist': { |
| | |
| | |
| | |
| | |
| | |
| | configFile: 'test/unit.conf.js', |
| | browsers: [], |
| | singleRun:false, |
| | background:true |
| | } |
| | } |
| | |
| | , copy: { |
| | browserDist: { |
| | files: [ |
| | {src: ['build/oboe-browser.min.js'], dest: 'dist/oboe-browser.min.js'} |
| | , {src: ['build/oboe-browser.concat.js'], dest: 'dist/oboe-browser.js' } |
| | ] |
| | }, |
| | nodeDist: { |
| | files: [ |
| | {src: ['build/oboe-node.concat.js'], dest: 'dist/oboe-node.js'} |
| | ] |
| | } |
| | } |
| | |
| | , exec:{ |
| | |
| | reportMinifiedSize:{ |
| | command: "echo minified size is `wc -c < dist/oboe-browser.min.js` bytes" |
| | }, |
| | reportMinifiedAndGzippedSize:{ |
| | command: "echo Size after gzip is `gzip --best --stdout dist/oboe-browser.min.js | wc -c` bytes - max 5120" |
| | }, |
| | createGitVersionJs:{ |
| | command: "echo \"// `git describe`\" > build/version.js" |
| | } |
| | } |
| | |
| | , watch:{ |
| | karma:{ |
| | files:FILES_TRIGGERING_KARMA, |
| | tasks:['karma:persist:run'] |
| | }, |
| | |
| | |
| | |
| | |
| | karmaAndSize:{ |
| | files: FILES_TRIGGERING_KARMA, |
| | tasks:[ |
| | 'karma:persist:run', |
| | 'browser-build', |
| | 'dist-sizes'] |
| | }, |
| | |
| | |
| | |
| | |
| | testNode:{ |
| | files: FILES_TRIGGERING_KARMA, |
| | tasks:[ |
| | 'node-build-run'] |
| | }, |
| | |
| | restartStreamSourceAndRunTests:{ |
| | |
| | |
| | files: ['test/streamsource.js'], |
| | tasks: ['start-stream-source', 'karma:persist:run'] |
| | } |
| | } |
| | |
| | , concurrent:{ |
| | watchDev: { |
| | tasks:[ 'watch:karmaAndSize', 'watch:restartStreamSourceAndRunTests' ], |
| | options:{ |
| | logConcurrentOutput: true |
| | } |
| | } |
| | } |
| | |
| | }); |
| |
|
| | require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks); |
| |
|
| | var streamSource; |
| | |
| | grunt.registerTask('start-stream-source', function () { |
| | grunt.log.ok('do we have a streaming source already?', !!streamSource); |
| | |
| | |
| | if( streamSource ) { |
| | grunt.log.ok('there seems to be a streaming server already, let\'s stop it'); |
| | streamSource.stop(); |
| | } |
| | |
| | streamSource = require('./test/streamsource.js'); |
| | streamSource.start(STREAM_SOURCE_PORT, grunt); |
| | }); |
| |
|
| | grunt.registerTask("jasmine_node_oboe", "Runs jasmine-node.", function() { |
| | |
| | require('jasmine-node').executeSpecsInFolder({ |
| | |
| | "specFolders":[process.cwd() + '/test/specs/'], |
| | "isVerbose":true, |
| | "showColors":true, |
| | "teamcity":false, |
| | "useRequireJs":false, |
| | "regExpSpec":/oboe\.(?:integration|performance)\.spec\.(js)$/, |
| | "junitreport":{"report":false, "savePath":"./reports/", "useDotNotation":true, "consolidate":true}, |
| | "includeStackTrace":true, |
| | "growl":false, |
| | onComplete: this.async() |
| | |
| | }); |
| | }); |
| |
|
| | |
| | |
| | |
| | |
| | grunt.registerTask('headless-mode', function(){ |
| | autoStartBrowsers.length = 0; |
| | autoStartBrowsers.push('PhantomJS'); |
| | }) |
| | |
| | grunt.registerTask('test-start-server', [ |
| | 'karma:persist' |
| | ]); |
| | |
| | grunt.registerTask('test-run', [ |
| | 'karma:persist:run' |
| | ]); |
| | |
| | grunt.registerTask('dist-sizes', [ |
| | 'exec:reportMinifiedAndGzippedSize' |
| | ]); |
| | |
| | grunt.registerTask('node-build', [ |
| | 'exec:createGitVersionJs', |
| | 'concat:node', |
| | 'wrap:nodePackage', |
| | 'copy:nodeDist' |
| | ]); |
| |
|
| | grunt.registerTask('node-build-test', [ |
| | 'node-build', |
| | 'jasmine_node_oboe' |
| | ]); |
| | |
| | grunt.registerTask('node', [ |
| | 'start-stream-source', |
| | 'node-build-test' |
| | ]); |
| |
|
| | grunt.registerTask('browser-build', [ |
| | 'exec:createGitVersionJs', |
| | 'concat:browser', |
| | 'concat:node', |
| | 'wrap:browserPackage', |
| | 'uglify', |
| | 'copy:browserDist' |
| | ]); |
| | |
| | grunt.registerTask('browser-build-test', [ |
| | 'karma:single-dev', |
| | 'karma:single-browser-http', |
| | 'browser-build', |
| | 'karma:single-concat', |
| | 'karma:single-minified', |
| | 'karma:single-amd' |
| | ]); |
| | |
| | grunt.registerTask('build', [ |
| | 'browser-build', |
| | 'node-build' |
| | ]); |
| | |
| | |
| | grunt.registerTask('build-integration-test', [ |
| | 'build', |
| | 'start-stream-source', |
| | 'karma:single-concat', |
| | 'jasmine_node_oboe', |
| | 'dist-sizes' |
| | ]); |
| | |
| | grunt.registerTask('default', [ |
| | |
| | 'clear', |
| | 'clean', |
| | 'start-stream-source', |
| | |
| | 'browser-build-test', |
| |
|
| | 'node-build-test', |
| | |
| | 'dist-sizes' |
| | ]); |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | grunt.registerTask('browser-test-auto-run', [ |
| | 'start-stream-source', |
| | 'karma:persist', |
| | 'concurrent:watchDev' |
| | ]); |
| | grunt.registerTask('node-test-auto-run', [ |
| | 'start-stream-source', |
| | 'watch:testNode' |
| | ]); |
| | }; |
| |
|