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