Add Catch Errors for slstats

This commit is contained in:
horike37 2016-11-01 05:02:29 +09:00
parent 51764d6996
commit 45f2d82f59
2 changed files with 32 additions and 9 deletions

View File

@ -38,17 +38,22 @@ class SlStats {
const statsDisabledFilePath = path.join(serverlessDirPath, 'stats-disabled');
const statsEnabledFilePath = path.join(serverlessDirPath, 'stats-enabled');
if (this.options.enable && !this.options.disable) {
if (this.serverless.utils.fileExistsSync(statsDisabledFilePath)) {
fse.renameSync(statsDisabledFilePath, statsEnabledFilePath);
try {
if (this.options.enable && !this.options.disable) {
if (fse.lstatSync(statsDisabledFilePath).isFile()) {
fse.renameSync(statsDisabledFilePath, statsEnabledFilePath);
}
this.serverless.cli.log('Stats successfully enabled');
}
this.serverless.cli.log('Stats successfully enabled');
}
if (this.options.disable && !this.options.enable) {
if (this.serverless.utils.fileExistsSync(statsEnabledFilePath)) {
fse.renameSync(statsEnabledFilePath, statsDisabledFilePath);
if (this.options.disable && !this.options.enable) {
if (fse.lstatSync(statsEnabledFilePath).isFile()) {
fse.renameSync(statsEnabledFilePath, statsDisabledFilePath);
}
this.serverless.cli.log('Stats successfully disabled');
}
this.serverless.cli.log('Stats successfully disabled');
} catch (e) {
throw new this.serverless.classes
.Error(`slstats failed. The following message: ${e.message}`);
}
}
}

View File

@ -82,6 +82,24 @@ describe('SlStats', () => {
).to.equal(false);
});
it('should throw error if the stats file is not exists', () => {
// create a stats-disabled file
serverless.utils.writeFileSync(
path.join(serverlessDirPath, 'stats-error-file'),
'some content'
);
slStats.options = { enable: true };
expect(() => slStats.toggleStats()).to.throw();
expect(
serverless.utils.fileExistsSync(path.join(serverlessDirPath, 'stats-enabled'))
).to.equal(false);
expect(
serverless.utils.fileExistsSync(path.join(serverlessDirPath, 'stats-disabled'))
).to.equal(false);
});
afterEach(() => {
// recover the homeDir
process.env.HOME = homeDir;