1
+ 'use strict' ;
2
+
3
+ var chalk = require ( 'chalk' ) ;
4
+ var Command = require ( 'ember-cli/lib/models/command' ) ;
5
+ var Promise = require ( 'ember-cli/lib/ext/promise' ) ;
6
+ var Project = require ( 'ember-cli/lib/models/project' ) ;
7
+ var SilentError = require ( 'silent-error' ) ;
8
+ var validProjectName = require ( 'ember-cli/lib/utilities/valid-project-name' ) ;
9
+ var normalizeBlueprint = require ( 'ember-cli/lib/utilities/normalize-blueprint-option' ) ;
10
+
11
+ var TestCommand = require ( 'ember-cli/lib/commands/test' ) ;
12
+ var win = require ( 'ember-cli/lib/utilities/windows-admin' ) ;
13
+ var path = require ( 'path' ) ;
14
+
15
+ // require dependencies within the target project
16
+ function requireDependency ( root , moduleName ) {
17
+ var packageJson = require ( path . join ( root , 'node_modules' , moduleName , 'package.json' ) ) ;
18
+ var main = path . normalize ( packageJson . main ) ;
19
+ return require ( path . join ( root , 'node_modules' , moduleName , main ) ) ;
20
+ }
21
+
22
+ module . exports = TestCommand . extend ( {
23
+ availableOptions : [
24
+ { name : 'single-run' , type : Boolean , default : true } ,
25
+ { name : 'auto-watch' , type : Boolean } ,
26
+ { name : 'browsers' , type : String } ,
27
+ { name : 'colors' , type : Boolean } ,
28
+ { name : 'log-level' , type : String } ,
29
+ { name : 'port' , type : Number } ,
30
+ { name : 'reporters' , type : String } ,
31
+ ] ,
32
+
33
+ run : function ( commandOptions , rawArgs ) {
34
+ var BuildTask = this . tasks . Build ;
35
+ var buildTask = new BuildTask ( {
36
+ ui : this . ui ,
37
+ analytics : this . analytics ,
38
+ project : this . project
39
+ } ) ;
40
+
41
+ var buildCommandOptions = {
42
+ environment : 'development' ,
43
+ outputPath : 'dist/' ,
44
+ watch : false
45
+ } ;
46
+
47
+ var projectRoot = this . project . root ;
48
+
49
+ return win . checkWindowsElevation ( this . ui )
50
+ . then ( function ( ) {
51
+ return buildTask . run ( buildCommandOptions ) ;
52
+ } )
53
+ . then ( function ( ) {
54
+ return new Promise ( function ( ) {
55
+ var karma = requireDependency ( projectRoot , 'karma' ) ;
56
+ var karmaConfig = path . join ( projectRoot , 'karma.conf' ) ;
57
+ commandOptions . configFile = karmaConfig ;
58
+ var karmaServer = new karma . Server ( commandOptions ) ;
59
+ karmaServer . start ( ) ;
60
+ } ) ;
61
+ } ) ;
62
+ }
63
+ } ) ;
64
+
65
+ module . exports . overrideCore = true ;
0 commit comments