@@ -45,8 +45,13 @@ module.exports = function(grunt) {
45
45
'plugins/tools/*.js'
46
46
] ,
47
47
48
- geometry : [ 'src/geometry.js' ] ,
49
- vectorizer : [ 'src/vectorizer.js' ] ,
48
+ geometry : [
49
+ 'src/geometry.js'
50
+ ] ,
51
+
52
+ vectorizer : [
53
+ 'src/vectorizer.js'
54
+ ] ,
50
55
51
56
polyfills : [
52
57
'plugins/polyfills/base64.js' ,
@@ -58,7 +63,6 @@ module.exports = function(grunt) {
58
63
] ,
59
64
60
65
plugins : {
61
-
62
66
'shapes.erd' : [ 'plugins/shapes/joint.shapes.erd.js' ] ,
63
67
'shapes.fsa' : [ 'plugins/shapes/joint.shapes.fsa.js' ] ,
64
68
'shapes.org' : [ 'plugins/shapes/joint.shapes.org.js' ] ,
@@ -67,9 +71,16 @@ module.exports = function(grunt) {
67
71
'shapes.devs' : [ 'plugins/shapes/joint.shapes.devs.js' ] ,
68
72
'shapes.uml' : [ 'plugins/shapes/joint.shapes.uml.js' ] ,
69
73
'shapes.logic' : [ 'plugins/shapes/joint.shapes.logic.js' ] ,
70
-
71
74
'layout.DirectedGraph' : [ 'plugins/layout/DirectedGraph/joint.layout.DirectedGraph.js' ]
72
- }
75
+ } ,
76
+
77
+ dependecies : [
78
+ 'node_modules/jquery/dist/jquery.js' ,
79
+ 'node_modules/lodash/lodash.js' ,
80
+ 'node_modules/backbone/backbone.js' ,
81
+ 'node_modules/graphlib/dist/graphlib.core.js' ,
82
+ 'node_modules/dagre/dist/dagre.core.js' ,
83
+ ]
73
84
} ;
74
85
75
86
var css = {
@@ -473,39 +484,6 @@ module.exports = function(grunt) {
473
484
}
474
485
}
475
486
} ,
476
- qunit : {
477
- all : [
478
- 'test/**/*.html' ,
479
- '!test/**/coverage.html' ,
480
- '!test/**/node_modules/**'
481
- ] ,
482
- all_coverage : [
483
- 'test/**/coverage.html' ,
484
- '!test/**/node_modules/**'
485
- ] ,
486
- joint : [
487
- 'test/jointjs/*.html' ,
488
- '!test/jointjs/coverage.html' ,
489
- '!test/**/node_modules/**'
490
- ] ,
491
- geometry : [ 'test/geometry/*.html' ] ,
492
- vectorizer : [ 'test/vectorizer/*.html' ]
493
- } ,
494
- shell : {
495
-
496
- /*
497
- Run `bower install` in the context of the given directory.
498
- */
499
- bowerInstall : {
500
- command : function ( dir , environment ) {
501
-
502
- var flags = environment && environment === 'production' ? ' --production' : '' ;
503
- var cmd = 'cd ' + dir + ' && bower --allow-root install' + flags ;
504
-
505
- return cmd ;
506
- }
507
- }
508
- } ,
509
487
syntaxHighlighting : {
510
488
docs : {
511
489
src : [
@@ -568,78 +546,112 @@ module.exports = function(grunt) {
568
546
tasks : [ 'newer:concat:types' ]
569
547
}
570
548
} ,
549
+ qunit : {
550
+ joint : [
551
+ 'test/jointjs/requirejs.html' ,
552
+ 'test/jointjs/browserify.html' ,
553
+ 'test/jointjs/lodash3/index.html'
554
+ ] ,
555
+ geometry : [
556
+ 'test/geometry/requirejs.html' ,
557
+ ] ,
558
+ vectorizer : [
559
+ 'test/vectorizer/requirejs.html'
560
+ ]
561
+ } ,
562
+ karma : {
563
+ options : {
564
+ basePath : '' ,
565
+ autoWatch : false ,
566
+ frameworks : [ 'sinon' , 'qunit' ] ,
567
+ browsers : karmaBrowsers ( ) ,
568
+ reporters : [ 'progress' , 'coverage' ] ,
569
+ singleRun : true ,
570
+ exclude : [
571
+ 'test/**/require.js' ,
572
+ 'test/**/browserify.js'
573
+ ]
574
+ } ,
575
+ geometry : {
576
+ options : {
577
+ files : [
578
+ js . geometry ,
579
+ 'test/geometry/*.js'
580
+ ] ,
581
+ preprocessors : karmaPreprocessors ( js . geometry ) ,
582
+ coverageReporter : karmaCoverageReporters ( 'geometry' )
583
+ } ,
584
+ } ,
585
+ vectorizer : {
586
+ options : {
587
+ files : [
588
+ js . geometry ,
589
+ js . vectorizer ,
590
+ 'test/vectorizer/*.js' ,
591
+ ] ,
592
+ preprocessors : karmaPreprocessors ( js . vectorizer ) ,
593
+ coverageReporter : karmaCoverageReporters ( 'vectorizer' )
594
+ }
595
+ } ,
596
+ joint : {
597
+ options : {
598
+ files : [
599
+ js . dependecies ,
600
+ js . geometry ,
601
+ js . vectorizer ,
602
+ js . polyfills ,
603
+ js . core ,
604
+ allJSPlugins ( ) ,
605
+ 'test/utils.js' ,
606
+ 'test/jointjs/**/*.js' ,
607
+ ] ,
608
+ preprocessors : karmaPreprocessors ( [ ] . concat ( js . core , allJSPlugins ( ) ) ) ,
609
+ coverageReporter : karmaCoverageReporters ( 'joint' )
610
+ }
611
+ }
612
+ } ,
571
613
env : {
572
614
573
615
}
574
616
} ;
575
617
576
- var isTestCoverageTask = grunt . cli . tasks . indexOf ( 'test:coverage' ) !== - 1 ;
577
-
578
- if ( isTestCoverageTask ) {
579
-
580
- ( function ( ) {
581
-
582
- // Replace all qunit configurations with the 'urls' method.
583
- // Append all URLs with ?coverage=true&grunt
584
- // This will run all qunit tests with test coverage enabled and report results back to grunt.
585
-
586
- var reporter = grunt . option ( 'reporter' ) || 'lcov' ;
587
-
588
- // Serve up the test files via an express app.
589
- var express = require ( 'express' ) ;
590
- var serveStatic = require ( 'serve-static' ) ;
591
- var app = express ( ) ;
592
- var host = 'localhost' ;
593
- var port = 3000 ;
594
-
595
- app . use ( '/' , serveStatic ( __dirname ) ) ;
596
- app . listen ( port , host ) ;
597
-
598
- var name , files ;
599
-
600
- for ( name in config . qunit ) {
601
-
602
- // Resolve the paths for all files referenced in the task.
603
- files = grunt . file . expand ( config . qunit [ name ] ) ;
604
-
605
- // Overwrite QUnit task config with URLs method.
606
- config . qunit [ name ] = { options : { urls : [ ] } } ;
607
-
608
- files . forEach ( function ( file ) {
609
-
610
- var url = 'http://' + host + ':' + port + '/' + file + '?coverage=true&reporter=' + reporter ;
611
-
612
- config . qunit [ name ] . options . urls . push ( url ) ;
613
- } ) ;
614
- }
615
-
616
- var reporterToFileExtension = {
617
- lcov : 'info'
618
- } ;
619
-
620
- var reports = [ ] ;
621
-
622
- grunt . event . on ( 'qunit.report' , function ( data ) {
623
-
624
- reports . push ( data ) ;
625
- } ) ;
626
-
627
- process . on ( 'exit' , function ( ) {
628
-
629
- var ext = reporterToFileExtension [ reporter ] ;
630
- var outputFile = grunt . option ( 'output' ) || 'coverage' + ( ext ? '.' + ext : '' ) ;
631
- var data ;
632
-
633
- switch ( reporter ) {
634
- case 'lcov' :
635
- data = reports . join ( '\n' ) ;
636
- break ;
637
- }
618
+ function karmaBrowsers ( ) {
619
+ var browser = grunt . option ( 'browser' ) || 'PhantomJS' ;
620
+ return [ browser ] ;
621
+ }
638
622
639
- grunt . file . write ( outputFile , data ) ;
640
- } ) ;
623
+ function karmaPreprocessors ( files ) {
624
+ var preprocessors = [ 'coverage' ] ;
625
+ return files . reduce ( function ( files , file ) {
626
+ files [ file ] = preprocessors ;
627
+ return files ;
628
+ } , { } ) ;
629
+ }
641
630
642
- } ) ( ) ;
631
+ function karmaCoverageReporters ( name ) {
632
+ var reporters ;
633
+ var check ;
634
+ var reporter = grunt . option ( 'reporter' ) || '' ;
635
+ if ( ! reporter && grunt . cli . tasks . indexOf ( 'test:coverage' ) !== - 1 ) {
636
+ reporter = 'html' ;
637
+ }
638
+ switch ( reporter ) {
639
+ case 'lcov' :
640
+ reporters = [ { type : 'lcovonly' , subdir : '.' , file : `${ name } .lcov` } ] ;
641
+ break ;
642
+ case 'html' :
643
+ reporters = [ { type : 'html' } ] ;
644
+ break ;
645
+ case '' :
646
+ reporters = [ { type : 'text-summary' } ] ;
647
+ check = grunt . file . readJSON ( 'coverage.json' ) [ name ] ;
648
+ break ;
649
+ default :
650
+ grunt . log . error ( `Invalid reporter "${ reporter } ". Use "lcov" or "html".` ) ;
651
+ process . exit ( 1 ) ;
652
+ return ;
653
+ }
654
+ return { dir : `coverage/${ name } ` , reporters, check }
643
655
}
644
656
645
657
( function registerPartials ( partials ) {
@@ -823,20 +835,15 @@ module.exports = function(grunt) {
823
835
'concat:types'
824
836
] ) ;
825
837
826
- grunt . registerTask ( 'test:server' , [ 'mochaTest:server' ] ) ;
827
- grunt . registerTask ( 'test:client' , [ 'qunit:all' ] ) ;
838
+ grunt . registerTask ( 'test:bundles' , [ 'qunit:joint' , 'qunit:vectorizer' , 'qunit:geometry' ] )
839
+ grunt . registerTask ( 'test:src' , [ 'karma:geometry' , 'karma:vectorizer' , 'karma:joint' ] ) ;
840
+ grunt . registerTask ( 'test:coverage' , [ 'test:src' ] ) ;
828
841
grunt . registerTask ( 'test:code-style' , [ 'eslint' ] ) ;
842
+ grunt . registerTask ( 'test:server' , [ 'mochaTest:server' ] ) ;
843
+ grunt . registerTask ( 'test:client' , [ 'test:src' , 'test:bundles' ] ) ;
829
844
grunt . registerTask ( 'test' , [ 'test:server' , 'test:client' , 'test:code-style' ] ) ;
830
845
831
- grunt . registerTask ( 'test:coverage' , [
832
- 'qunit:all_coverage'
833
- ] ) ;
834
-
835
- grunt . registerTask ( 'bowerInstall' , [
836
- 'shell:bowerInstall:.'
837
- ] ) ;
838
-
839
- grunt . registerTask ( 'install' , [ 'bowerInstall' , 'build:all' ] ) ;
846
+ grunt . registerTask ( 'install' , [ 'build:all' ] ) ;
840
847
grunt . registerTask ( 'default' , [ 'install' , 'build' , 'watch' ] ) ;
841
848
842
849
var e2eBrowsers = {
0 commit comments