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

39 files changed

+1375
-849
lines changed

Diff for: .gitignore

+3-5
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

Diff for: gulpfile.js

+97-10
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+
});

Diff for: mocha.conf.js

+7
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);

Diff for: package.json

+11-2
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",

Diff for: src/app/USAGE renamed to src/generators/app/USAGE

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

Diff for: src/endpoint/index.js renamed to src/generators/endpoint/index.js

+1-1
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
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

Diff for: src/util.js renamed to src/generators/util.js

File renamed without changes.

0 commit comments

Comments
 (0)