|
1 | 1 | 'use strict'; |
2 | 2 |
|
| 3 | +var util = require('util'); |
3 | 4 | var gulp = require('gulp-help')(require('gulp')); |
4 | | -var mocha = require('gulp-mocha'); |
5 | | -var eslint = require('gulp-eslint'); |
6 | | -var nodemon = require('gulp-nodemon'); |
| 5 | + |
| 6 | +var PORT = 8000; |
| 7 | +var BASE_URL = util.format('http://localhost:%d/', PORT); |
7 | 8 |
|
8 | 9 | var tasks = [ |
9 | 10 | { |
10 | | - cmd: 'test:all', |
11 | | - help: 'すべてのテストを実行します', |
12 | | - src: 'test/**/*.js' |
13 | | - }, { |
14 | | - cmd: 'test:stage1', |
| 11 | + cmd: 'stage1', |
15 | 12 | help: '意図した DOM を取得できているかテストします', |
| 13 | + url: BASE_URL + 'stage1', |
16 | 14 | src: 'test/stage1.js' |
17 | 15 | }, { |
18 | | - cmd: 'test:stage2', |
| 16 | + cmd: 'stage2', |
19 | 17 | help: '意図通りに DOM の構造・スタイルが変更できているかテストします', |
| 18 | + url: BASE_URL + 'stage2', |
20 | 19 | src: 'test/stage2.js' |
21 | 20 | }, { |
22 | | - cmd: 'test:stage3', |
| 21 | + cmd: 'stage3', |
23 | 22 | help: '意図通りにイベントを利用できているかテストします', |
| 23 | + url: BASE_URL + 'stage3', |
24 | 24 | src: 'test/stage3.js' |
25 | 25 | }, { |
26 | | - cmd: 'test:stage4', |
| 26 | + cmd: 'stage4', |
27 | 27 | help: '意図通りにサーバーと通信できているかテストします', |
| 28 | + url: BASE_URL + 'stage4', |
28 | 29 | src: 'test/stage4.js' |
29 | 30 | }, { |
30 | | - cmd: 'test:stage5', |
| 31 | + cmd: 'stage5', |
31 | 32 | help: '意図通りにモジュールを実装できているかテストします', |
| 33 | + url: BASE_URL + 'stage5', |
32 | 34 | src: 'test/stage5.js' |
33 | 35 | }, { |
34 | | - cmd: 'test:stage6', |
| 36 | + cmd: 'stage6', |
35 | 37 | help: 'よくあるイディオムを読み書きできているかテストします', |
| 38 | + url: BASE_URL + 'stage6', |
36 | 39 | src: 'test/stage6.js' |
37 | 40 | } |
38 | 41 | ]; |
39 | 42 |
|
40 | 43 |
|
41 | 44 | tasks.forEach(function(task) { |
42 | | - gulp.task(task.cmd, task.help, function() { |
43 | | - return gulp.src(task.src, { read: false }). |
44 | | - pipe(eslint()). |
45 | | - pipe(eslint.format()). |
46 | | - pipe(mocha()); |
| 45 | + var run = require('gulp-run'); |
| 46 | + |
| 47 | + gulp.task(task.cmd, task.help, ['lint'], function() { |
| 48 | + // We expected that mocha-phantomjs print colorized results, but it isn't. |
| 49 | + // So, I take a fast way that is using gulp-run. |
| 50 | + return run('`npm bin`/mocha-phantomjs ' + task.url + ' || true').exec(); |
47 | 51 | }); |
48 | 52 | }); |
49 | 53 |
|
50 | 54 |
|
| 55 | +gulp.task('lint', 'ミスのおこりやすいコード・可読性の低いコードがないか検査します', function() { |
| 56 | + var eslint = require('gulp-eslint'); |
| 57 | + |
| 58 | + return gulp.src('test/**/*.js') |
| 59 | + .pipe(eslint()) |
| 60 | + .pipe(eslint.format()); |
| 61 | +}); |
| 62 | + |
| 63 | + |
51 | 64 | gulp.task('serve', 'サーバーを起動し、ブラウザでテストを確認できるようにします', function(){ |
52 | | - nodemon({ |
53 | | - script: './server.js', |
54 | | - watch: ['server.js'], |
55 | | - env: { PORT: 8000 } |
56 | | - }); |
| 65 | + var serve = require('./gulp/serve.js'); |
| 66 | + return serve(); |
57 | 67 | }); |
0 commit comments