Skip to content

Commit 96c1a7a

Browse files
committed
Merge pull request #1823 from angular-fullstack/feat/gen-also-build-test
feat(gen): also build test dir (just like generators dir)
2 parents 621acec + 3b613e7 commit 96c1a7a

File tree

39 files changed

+1375
-849
lines changed

39 files changed

+1375
-849
lines changed

.gitignore

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
node_modules
22
bower_components
3-
test/temp
3+
/generators/*
4+
/test/*
45
demo
56
.idea
67
.DS_Store
7-
release.txt
8-
test/fixtures/bower.json
9-
test/fixtures/package.json
10-
generators
8+
release.txt

gulpfile.js

Lines changed: 97 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,70 @@
11
'use strict';
2-
var fs = require('fs');
3-
var path = require('path');
4-
var Promise = require('bluebird');
5-
var gulp = require('gulp');
6-
var babel = require('gulp-babel');
7-
var del = require('del');
8-
var runSequence = require('run-sequence');
2+
const fs = require('fs');
3+
const path = require('path');
4+
const exec = require('child_process').exec;
5+
const _ = require('lodash');
6+
const Promise = require('bluebird');
7+
const gulp = require('gulp');
8+
const gutil = require('gulp-util');
9+
const babel = require('gulp-babel');
10+
const gulpMocha = require('gulp-mocha');
11+
const plumber = require('gulp-plumber');
12+
const gulpIf = require('gulp-if');
13+
const del = require('del');
14+
const lazypipe = require('lazypipe');
15+
const runSequence = require('run-sequence');
16+
const merge = require('merge-stream');
17+
const shell = require('shelljs');
18+
19+
var watching = false;
20+
21+
const mocha = lazypipe()
22+
.pipe(gulpMocha, {
23+
reporter: 'spec',
24+
timeout: 120000,
25+
slow: 500,
26+
globals: {
27+
should: require('should')
28+
},
29+
require: [
30+
'./mocha.conf'
31+
]
32+
});
33+
34+
const transpile = lazypipe()
35+
.pipe(babel);
936

1037
gulp.task('clean', () => {
1138
return del(['generators/**/*']);
1239
});
1340

1441
gulp.task('babel', () => {
15-
return gulp.src(['src/**/*.js'])
16-
.pipe(babel())
42+
let generators = gulp.src(['src/generators/**/*.js'])
43+
.pipe(gulpIf(watching, plumber()))
44+
.pipe(transpile())
1745
.pipe(gulp.dest('generators'));
46+
47+
let test = gulp.src(['src/test/**/*.js'])
48+
.pipe(gulpIf(watching, plumber()))
49+
.pipe(transpile())
50+
.pipe(gulp.dest('test'));
51+
52+
return merge(generators, test);
1853
});
1954

2055
gulp.task('watch', () => {
56+
watching = true;
2157
return gulp.watch('src/**/*.js', ['babel']);
2258
});
2359

2460
gulp.task('copy', () => {
25-
return gulp.src(['src/**/*', '!src/**/*.js'])
61+
let nonJsGen = gulp.src(['src/generators/**/*', '!src/generators/**/*.js'], {dot: true})
2662
.pipe(gulp.dest('generators'));
63+
64+
let nonJsTest = gulp.src(['src/test/**/*', '!src/test/**/*.js'], {dot: true})
65+
.pipe(gulp.dest('test'));
66+
67+
return merge(nonJsGen, nonJsTest);
2768
});
2869

2970
gulp.task('build', cb => {
@@ -81,3 +122,49 @@ gulp.task('updateFixtures:test', () => {
81122
gulp.task('updateFixtures:deps', () => {
82123
return updateFixtures('deps');
83124
});
125+
126+
function execAsync(cmd, opt) {
127+
return new Promise((resolve, reject) => {
128+
exec(cmd, opt, (err, stdout, stderr) => {
129+
if(err) {
130+
console.log(`stderr: ${stderr}`);
131+
return reject(err);
132+
}
133+
134+
return resolve(stdout);
135+
})
136+
});
137+
}
138+
139+
gulp.task('installFixtures', function() {
140+
gutil.log('installing npm & bower dependencies for generated app');
141+
let progress = setInterval(() => {
142+
process.stdout.write('.');
143+
}, 1 * 1000);
144+
shell.cd('test/fixtures');
145+
146+
return Promise.all([
147+
execAsync('npm install --quiet', {cwd: '../fixtures'}),
148+
execAsync('bower install', {cwd: '../fixtures'})
149+
]).then(() => {
150+
process.stdout.write('\n');
151+
if(!process.env.SAUCE_USERNAME) {
152+
gutil.log('running npm run-script update-webdriver');
153+
return execAsync('npm run-script update-webdriver').then(() => {
154+
clearInterval(progress);
155+
process.stdout.write('\n');
156+
shell.cd('../../');
157+
});
158+
} else {
159+
clearInterval(progress);
160+
process.stdout.write('\n');
161+
shell.cd('../../');
162+
return Promise.resolve();
163+
}
164+
});
165+
});
166+
167+
gulp.task('test', () => {
168+
return gulp.src(['test/pre.test.js', 'test/*.test.js'])
169+
.pipe(mocha());
170+
});

mocha.conf.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
'use strict';
2+
3+
global.DEBUG = !!process.env.DEBUG;
4+
5+
var fs = require('fs');
6+
var Promise = require('bluebird');
7+
Promise.promisifyAll(fs);

package.json

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
"url": "git://github.com/angular-fullstack/generator-angular-fullstack.git"
3232
},
3333
"scripts": {
34-
"test": "gulp build && grunt test",
34+
"test": "gulp updateFixtures:test && gulp installFixtures && gulp build && gulp test",
3535
"prepublish": "gulp build"
3636
},
3737
"dependencies": {
@@ -67,14 +67,23 @@
6767
"grunt-mocha-test": "^0.12.7",
6868
"grunt-release": "^0.13.0",
6969
"gulp": "^3.9.1",
70+
"gulp-if": "^2.0.0",
71+
"gulp-mocha": "^2.2.0",
72+
"gulp-plumber": "^1.1.0",
73+
"gulp-util": "^3.0.7",
7074
"jit-grunt": "~0.10.0",
75+
"jscs": "^3.0.3",
76+
"lazypipe": "^1.0.1",
77+
"merge-stream": "^1.0.0",
78+
"minimatch": "^3.0.0",
7179
"mocha": "^2.2.5",
7280
"q": "^1.0.1",
7381
"recursive-readdir": "^2.0.0",
7482
"run-sequence": "^1.1.5",
7583
"shelljs": "^0.6.0",
84+
"should": "^8.3.1",
7685
"yeoman-assert": "^2.0.0",
77-
"yeoman-test": "^1.1.0"
86+
"yeoman-test": "^1.3.0"
7887
},
7988
"engines": {
8089
"node": "^5.10.1",
File renamed without changes.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export class Generator extends Base {
2222
});
2323

2424
this.option('endpointDirectory', {
25-
desc: 'Parent directory for enpoints',
25+
desc: 'Parent directory for endpoints',
2626
type: String
2727
});
2828
}

0 commit comments

Comments
 (0)