1+ var browserify = require ( 'browserify' ) ;
2+ var source = require ( 'vinyl-source-stream' ) ;
3+ var gulp = require ( 'gulp' ) ;
4+ var gulpif = require ( 'gulp-if' ) ;
5+ var uglify = require ( 'gulp-uglify' ) ;
6+ var concat = require ( 'gulp-concat' ) ;
7+ var streamify = require ( 'gulp-streamify' ) ;
8+ var gutil = require ( 'gulp-util' ) ;
9+ var download = require ( "gulp-download" ) ;
10+ var gunzip = require ( 'gulp-gunzip' ) ;
11+ var untar = require ( 'gulp-untar2' ) ;
12+ var jasmine = require ( 'gulp-jasmine' ) ;
13+ var cucumber = require ( 'gulp-cucumber' ) ;
14+ var reporters = require ( 'jasmine-reporters' ) ;
15+ var jasminePhantomJs = require ( 'gulp-jasmine2-phantomjs' ) ;
16+
17+
18+ var browserifyTask = function ( options ) {
19+
20+ // Our app bundler
21+ var appBundler = browserify ( {
22+ entries : [ options . src ] ,
23+ cache : { } ,
24+ packageCache : { }
25+ } ) ;
26+
27+ // Un-minified browser package
28+ appBundler . bundle ( )
29+ . on ( 'error' , gutil . log )
30+ . pipe ( source ( 'neo4j-web.js' ) )
31+ . pipe ( gulp . dest ( options . dest ) ) ;
32+
33+
34+ appBundler . bundle ( )
35+ . on ( 'error' , gutil . log )
36+ . pipe ( source ( 'neo4j-web.min.js' ) )
37+ . pipe ( gulp . dest ( options . dest ) )
38+ . pipe ( gulpif ( ! options . development , streamify ( uglify ( ) ) ) )
39+ }
40+
41+ gulp . task ( 'default' , [ "test" , "browser" ] ) ;
42+
43+ gulp . task ( 'browser' , function ( ) {
44+
45+ browserifyTask ( {
46+ src : 'lib/neo4j.js' ,
47+ dest : 'build/browser'
48+ } ) ;
49+
50+ } ) ;
51+
52+ gulp . task ( 'test' , [ "test-nodejs" , "test-browser" , "test-tck" ] ) ;
53+
54+ gulp . task ( 'test-nodejs' , function ( ) {
55+ return gulp . src ( 'test/*.test.js' )
56+ . pipe ( jasmine ( {
57+ reporter : new reporters . JUnitXmlReporter ( {
58+ savePath : "build/nodejs-test-reports" ,
59+ consolidateAll : false
60+ } )
61+ } ) ) ;
62+ } ) ;
63+
64+ gulp . task ( 'test-tck' , [ 'download-tck' ] , function ( ) {
65+ return gulp . src ( 'build/tck/*' ) . pipe ( cucumber ( {
66+ 'steps' : 'test/tck/*.steps.js' ,
67+ 'format' : 'summary'
68+ } ) ) ;
69+ } ) ;
70+
71+ gulp . task ( 'download-tck' , function ( ) {
72+ return download ( "http://alpha.neohq.net/dist/driver-tck.tar.gz" )
73+ . pipe ( gunzip ( ) )
74+ . pipe ( untar ( ) )
75+ . pipe ( gulp . dest ( './build' ) ) ;
76+ } ) ;
77+
78+
79+ gulp . task ( 'test-browser' , function ( ) {
80+ // TODO: We should not use PhantomJS directly, instead we should run this via Karma to get wide cross-browser testing
81+ gulp . src ( './test/*.test.js' )
82+ . pipe ( concat ( 'all.test.js' ) )
83+ . pipe ( gulp . dest ( './build/' ) ) ;
84+
85+ browserify ( { entries : [ 'build/all.test.js' ] } )
86+ . bundle ( )
87+ . on ( 'error' , gutil . log )
88+ . pipe ( source ( 'neo4j-web.test.js' ) )
89+ . pipe ( gulp . dest ( './build/browser/' ) ) ;
90+
91+ return gulp . src ( './test/browser/testrunner-phantomjs.html' ) . pipe ( jasminePhantomJs ( ) ) ;
92+ } ) ;
0 commit comments