Skip to content

Commit

Permalink
Merge pull request #14 from alibaba/dev
Browse files Browse the repository at this point in the history
[modify] Optimizing execution between parts & updating test cases
  • Loading branch information
Houfeng authored Sep 2, 2017
2 parents 16b3b4d + bf61dd2 commit c228f75
Show file tree
Hide file tree
Showing 9 changed files with 48 additions and 34 deletions.
4 changes: 3 additions & 1 deletion bin/cli-core.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,10 +53,12 @@ cmdline
cmd = ALIAS[cmd] || cmd;
this.set('command', cmd);
try {
let context = new Context(this, {
let downloadCtx = new Context(this, {
template, cmd,
middlewares: [middlewares.init]
});
await downloadCtx.run();
let context = new Context(this, { template, cmd });
await context.run();
cmdline.onDone(context);
} catch (err) {
Expand Down
10 changes: 5 additions & 5 deletions debug/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ const configs = require('../lib/configs');
const sleep = require('../lib/common/sleep');

process.env.DEBUG = 'cli';
process.chdir(path.resolve(__dirname, '../test/demo1'));
//process.chdir(path.resolve(__dirname, '../test/demo1'));

(async () => {
cli.once('done', function (ctx) {
console.log(ctx.opts.value);
process.chdir(path.resolve(__dirname, '../test/demo2'));
cli.once('done', () => {
console.log('done');
});
cli.parse(['node', 'dn', 'run', 'test1']);
await sleep(3000);
cli.parse(['node', 'dn', 'update']);
})();
7 changes: 4 additions & 3 deletions lib/context.js
Original file line number Diff line number Diff line change
Expand Up @@ -133,9 +133,10 @@ class Context {
this.middlewares.push(unhandled);
}
return new Promise((resolve, reject) => {
this.middlewares.push(resolve);
this._execute(null, reject)
.catch(err => reject(err));
this.middlewares.push((next, args) => {
resolve(args);
});
this._execute(null, reject).catch(err => reject(err));
});
}

Expand Down
5 changes: 2 additions & 3 deletions lib/middlewares/init.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ async function renameFiles(target, suffix) {
}));
}

module.exports = async function () {
module.exports = async function (next) {
if (await this.configIsExists() && !process.env.DEBUG) {
throw new Error(`The directory '${this.cwd}' has been initialized`);
}
Expand All @@ -61,6 +61,5 @@ module.exports = async function () {
await renameFiles(this.cwd, 'rename');
await renameFiles(this.cwd, 'template');
this.console.info('Done');
this.middlewares = [];
await this.run();
return next();
};
3 changes: 2 additions & 1 deletion lib/middlewares/unhandled.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@
* @author Houfeng <[email protected]>
*/

module.exports = async function () {
module.exports = async function (next) {
this.console.warn(
[`Unable to process command: ${this.cli.get('command')}`].join(' ')
);
return next();
};
13 changes: 8 additions & 5 deletions test/cli-config.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,16 @@ const configs = require('../lib/configs');

describe('cli', function () {

it('#config', async function () {
it('#config', function (done) {
let ttl1 = Date.now();
cli.once('done', () => {
configs.getRc('cacheTTL').then(ttl2 => {
expect(ttl2).to.be.equal(ttl1);
configs.setLocalRc('cacheTTL', 0);
done();
});
});
cli.parse(['node', 'dn', 'config', 'cacheTTL', ttl1]);
await sleep(2000);
let ttl2 = await configs.getRc('cacheTTL');
expect(ttl2).to.be.equal(ttl1);
configs.setLocalRc('cacheTTL', 0);
});

});
Expand Down
10 changes: 6 additions & 4 deletions test/cli-init.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,19 @@ const fs = require('fs');

describe('cli', function () {

it('#init', async function () {
this.timeout(20000);
it('#init', function (done) {
this.timeout(25000);
process.chdir(path.resolve(__dirname, './demo2'));
let dirname = path.resolve(__dirname, './demo2/.dawn/');
let filename = path.resolve(__dirname, './demo2/.dawn/pipe.yml');
if (fs.existsSync(filename)) fs.unlinkSync(filename);
if (fs.existsSync(dirname)) fs.rmdirSync(dirname);
expect(fs.existsSync(filename)).to.be.equal(false);
cli.once('done', function () {
expect(fs.existsSync(filename)).to.be.equal(true);
done();
});
cli.parse(['node', 'dn', 'init', '-t', 'unit-demo']);
await sleep(18000);
expect(fs.existsSync(filename)).to.be.equal(true);
});

});
Expand Down
26 changes: 16 additions & 10 deletions test/cli.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,37 +7,43 @@ beforeEach(function () {

describe('cli', function () {

it('#update', async function () {
it('#update', function (done) {
cli.once('done', () => {
done();
});
cli.parse(['node', 'dn', 'update']);
await sleep(4000);
});

it('#test1', async function () {
it('#test1', function (done) {
process.chdir(path.resolve(__dirname, './demo1'));
cli.once('done', function (ctx) {
expect(ctx.opts.value).to.be.equal('mw1');
done();
});
cli.parse(['node', 'dn', 'run', 'test1']);
await sleep(3000);
});

it('#test2', async function () {
it('#test2', function (done) {
cli.disabledExit = true;
cli.once('fail', function (err) {
expect(err.message).to.be.equal('mw2');
done();
});
cli.parse(['node', 'dn', 'run', 'test2']);
await sleep(3000);
});

it('#unhandled', async function () {
it('#unhandled', function (done) {
cli.once('done', () => {
done();
});
cli.parse(['node', 'dn', 'dev']);
await sleep(2000);
});

it('#clean', async function () {
it('#clean', function (done) {
cli.once('done', () => {
done();
});
cli.parse(['node', 'dn', '$', 'clean']);
await sleep(4000);
});

});
Expand Down
4 changes: 2 additions & 2 deletions test/sleep.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ describe('sleep', function () {

it('#sleep', async function () {
let time = Date.now();
await sleep(1000);
expect(Date.now() - time >= 1000).to.be.equal(true);
await sleep(100);
expect(Date.now() - time >= 100).to.be.equal(true);
});

});

0 comments on commit c228f75

Please sign in to comment.