Skip to content

Commit 63e85b7

Browse files
committed
Expose errors running ember
1 parent 8e1fb90 commit 63e85b7

File tree

1 file changed

+26
-13
lines changed

1 file changed

+26
-13
lines changed

node-tests/helpers/skeleton-app.js

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,22 +37,30 @@ module.exports = class SkeletonApp {
3737
this._watched.kill();
3838
}
3939

40-
// Windows doesn't necessarily kill the process immediately, so
41-
// leave a little time before trying to remove the directory.
42-
setTimeout(() => {
43-
try {
44-
fs.removeSync(this.appDir);
45-
} catch (error) {
46-
// eslint-disable-next-line no-console
47-
console.warn(`Warning: unable to remove skeleton-app tmpdir ${this.appDir} (${error.code})`);
48-
}
49-
}, 250);
40+
this._cleanupAppDir({ retries: 1 });
5041
}
5142

5243
_ember(args) {
5344
let ember = require.resolve('ember-cli/bin/ember');
5445
return execa('node', [ember].concat(args), { cwd: this.appDir });
5546
}
47+
48+
_cleanupAppDir(options) {
49+
let retries = options && options.retries || 0;
50+
51+
try {
52+
fs.removeSync(this.appDir);
53+
} catch (error) {
54+
if (retries > 0) {
55+
// Windows doesn't necessarily kill the process immediately, so
56+
// leave a little time before trying to remove the directory.
57+
setTimeout(() => this._cleanupAppDir({ retries: retries - 1 }), 250);
58+
} else {
59+
// eslint-disable-next-line no-console
60+
console.warn(`Warning: unable to remove skeleton-app tmpdir ${this.appDir} (${error.code})`);
61+
}
62+
}
63+
}
5664
}
5765

5866
class WatchedBuild extends EventEmitter {
@@ -62,14 +70,19 @@ class WatchedBuild extends EventEmitter {
6270
this._ember.stdout.on('data', (data) => {
6371
let output = data.toString();
6472
if (output.includes('Build successful')) {
65-
this.emit('rebuild-complete');
73+
this.emit('did-rebuild');
6674
}
6775
});
76+
77+
this._ember.catch((error) => {
78+
this.emit('did-error', error);
79+
});
6880
}
6981

7082
waitForBuild() {
71-
return new Promise((resolve) => {
72-
this.once('rebuild-complete', resolve);
83+
return new Promise((resolve, reject) => {
84+
this.once('did-rebuild', resolve);
85+
this.once('did-error', reject);
7386
});
7487
}
7588

0 commit comments

Comments
 (0)