Skip to content

Commit 69d3fa1

Browse files
mojavelinuxgabrielcsapo
authored andcommitted
return promise from close method if callback method not specified (#46)
resolves #45
1 parent c64d7ef commit 69d3fa1

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

lib/git.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -454,9 +454,14 @@ class Git extends EventEmitter {
454454
* closes the server instance
455455
* @method close
456456
* @memberof Git
457+
* @param {Promise} - will resolve or reject when the server closes or fails to close.
457458
*/
458-
close() {
459-
this.server.close();
459+
close(callback) {
460+
return new Promise((resolve, reject) => {
461+
this.server.close((err) => {
462+
err ? reject(err) : resolve();
463+
});
464+
});
460465
}
461466
}
462467

test/git.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const async = require('async');
1010
const GitServer = require('../');
1111

1212
test('git', (t) => {
13-
t.plan(8);
13+
t.plan(9);
1414

1515
t.test('create, push to, and clone a repo', (t) => {
1616
var lastCommit;
@@ -623,6 +623,20 @@ test('git', (t) => {
623623
});
624624
});
625625

626+
t.test('should return promise that resolves when server is closed if no callback specified', (t) => {
627+
const repoDir = `/tmp/${Math.floor(Math.random() * (1 << 30)).toString(16)}`;
628+
629+
fs.mkdirSync(repoDir, 0700);
630+
631+
const repos = new GitServer(repoDir);
632+
const port = Math.floor(Math.random() * ((1 << 16) - 1e4)) + 1e4;
633+
repos.listen(port, () => {
634+
repos.close().then(() => {
635+
t.end();
636+
});
637+
});
638+
});
639+
626640
t.test('should be able to protect certain routes', (t) => {
627641
const repoDir = `/tmp/${Math.floor(Math.random() * (1 << 30)).toString(16)}`;
628642
const srcDir = `/tmp/${Math.floor(Math.random() * (1 << 30)).toString(16)}`;

0 commit comments

Comments
 (0)