Skip to content

Commit 0656603

Browse files
authored
Merge pull request #8 from xudafeng/unittest
Unittest
2 parents a7743fd + 0578e6f commit 0656603

File tree

8 files changed

+253
-217
lines changed

8 files changed

+253
-217
lines changed

.travis.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
language: node_js
2-
sudo: false
32
node_js:
4-
- "4.1.2"
3+
- "4"
4+
- "5"
5+
- "6"
6+
sudo: false
57
script: make travis
68
after_script: "npm install coveralls@2 && cat ./coverage/lcov.info | coveralls"

Makefile

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,24 @@ npm_bin= $$(npm bin)
44
all: test
55
install:
66
@npm install
7+
server:
8+
npm i startserver --save-dev
9+
${npm_bin}/startserver -s -p 8080 &
10+
pre-test: server
11+
sleep 5
712
test:
8-
@node --harmony \
13+
@node \
914
${npm_bin}/istanbul cover ${npm_bin}/_mocha \
1015
-- \
1116
--timeout 10000 \
1217
--require co-mocha
13-
travis: install
14-
@NODE_ENV=test $(BIN) $(FLAGS) \
15-
./node_modules/.bin/istanbul cover \
16-
./node_modules/.bin/_mocha \
18+
travis: install pre-test
19+
@node \
20+
${npm_bin}/istanbul cover ${npm_bin}/_mocha \
1721
--report lcovonly \
1822
-- -u exports \
19-
$(REQUIRED) \
20-
$(TESTS) \
23+
--timeout 10000 \
24+
--require co-mocha \
2125
--bail
2226
jshint:
2327
@${npm_bin}/jshint .

README.md

Lines changed: 39 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -17,57 +17,34 @@
1717
[download-image]: https://img.shields.io/npm/dm/detect-port.svg?style=flat-square
1818
[download-url]: https://npmjs.org/package/detect-port
1919

20-
> port detector
20+
> JavaScript Implementation of Port Detector
2121
22-
## Installment
23-
24-
```shell
25-
$ npm i detect-port -g
26-
```
27-
28-
## Quick Start
29-
30-
```shell
31-
# detect port 80
32-
$ detect -p 80
33-
34-
# or like this
35-
$ detect --port 80
36-
37-
# will get result below
38-
$ port: 80 was occupied, try port: 1024
39-
40-
# with verbose
41-
$ detect --port 80 --verbose
42-
43-
# more help?
44-
$ detect -h
45-
```
46-
47-
## Use As Module
22+
## Usage
4823

4924
```shell
5025
$ npm i detect-port --save
5126
```
5227

5328
```javascript
54-
var detect = require('detect-port');
29+
const detect = require('detect-port');
5530

5631
/**
57-
* normal usage
32+
* callback usage
5833
*/
5934

60-
detect(port, function(error, _port) {
35+
detect(port, (err, _port) => {
36+
if (err) {
37+
console.log(err);
38+
}
6139

6240
if (port === _port) {
63-
console.log('port: %d was not occupied', port);
41+
console.log(`port: ${port} was not occupied`);
6442
} else {
65-
console.log('port: %d was occupied, try port: %d', port, _port);
43+
console.log(`port: ${port} was occupied, try port: ${_port}`);
6644
}
6745
});
6846

6947
/**
70-
* use in co v3
7148
* for a yield syntax instead of callback function implement
7249
*/
7350

@@ -77,46 +54,54 @@ co(function *() {
7754
var _port = yield detect(port);
7855

7956
if (port === _port) {
80-
console.log('port: %d was not occupied', port);
57+
console.log(`port: ${port} was not occupied`);
8158
} else {
82-
console.log('port: %d was occupied, try port: %d', port, _port);
59+
console.log(`port: ${port} was occupied, try port: ${_port}`);
8360
}
8461
})();
8562

8663
/**
8764
* use as a promise
8865
*/
8966

90-
var promisePort = detect(port);
91-
92-
promisePort.then(function(_port) {
93-
if (port === _port) {
94-
console.log('port: %d was not occupied', port);
95-
} else {
96-
console.log('port: %d was occupied, try port: %d', port, _port);
97-
}
98-
});
67+
detect(port)
68+
.then(_port => {
69+
if (port === _port) {
70+
console.log(`port: ${port} was not occupied`);
71+
} else {
72+
console.log(`port: ${port} was occupied, try port: ${_port}`);
73+
}
74+
})
75+
.catch(err => {
76+
console.log(err);
77+
});
9978

10079
```
10180

102-
## Clone and Run test
81+
## Cli Tool
10382

10483
```shell
84+
$ npm i detect-port -g
85+
```
10586

106-
# clone from git
107-
$ git clone git://github.com/xudafeng/detect-port.git
87+
### Quick Start
10888

109-
$ cd detect-port
89+
```shell
90+
# get an available port randomly
91+
$ detect
11092

111-
# install dependencies
112-
$ make install
93+
# detect pointed port
94+
$ detect 80
11395

114-
# test and coverage
115-
$ make test
96+
# more help
97+
$ detect --help
11698
```
11799

100+
## Authors
101+
102+
- [xudafeng](//github.com/xudafeng)
103+
- [zenzhu](//github.com/zenzhu)
104+
118105
## License
119106

120107
[MIT](LICENSE)
121-
122-
Copyright (c) 2015 xdf

bin/detect-port

Lines changed: 38 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -14,87 +14,51 @@
1414

1515
'use strict';
1616

17-
var fs = require('fs');
18-
var path = require('path');
19-
var program = require('commander');
20-
var pkg = require('../package');
17+
const pkg = require('../package');
2118

22-
var options = {
23-
port: 8080,
24-
verbose: false
25-
};
19+
const args = process.argv.slice(2);
20+
const arg_0 = args[0];
2621

27-
program
28-
.usage('[options] [arguments]')
29-
.option('-v, --versions', 'show version and exit')
30-
.option('-p, --port <d>', 'set port for detect (default: 8080)')
31-
.option('--verbose', 'show more debugging information')
32-
.helpInformation = function() {
33-
return [
34-
'',
35-
' \u001b[37m' + pkg.description + '\u001b[0m',
36-
'',
37-
' Usage:',
38-
' ' + this._name + ' or detect-port ' + this.usage(),
39-
'',
40-
' Options:',
41-
'' + this.optionHelp().replace(/^/gm, ' '),
42-
'',
43-
' Further help:',
44-
'',
45-
' \u001b[4m' + pkg.homepage + '\u001b[0m',
46-
'',
47-
''
48-
].join('\n');
49-
};
50-
51-
program.parse(process.argv);
52-
53-
if (program.versions) {
54-
console.log('%s version: %s', pkg.name, pkg.version);
22+
if (!!~['-v', '--version'].indexOf(arg_0)) {
23+
console.log(pkg.version);
5524
process.exit(0);
5625
}
5726

58-
var camelcase = function(str) {
59-
return str.split('-').reduce(function(str, word){
60-
return str + word[0].toUpperCase() + word.slice(1);
61-
});
62-
};
63-
64-
var getConfig = function(program) {
65-
var cfg = {};
27+
const port = parseInt(arg_0, 10);
6628

67-
program.options.forEach(function(item) {
68-
var key = camelcase(item.name());
29+
const main = require('..');
6930

70-
if(key in program) {
31+
if (!arg_0) {
32+
const random = Math.floor(9000 + Math.random() * (65535 - 9000));
7133

72-
if (typeof program[key] !== 'function') {
73-
cfg[key] = program[key];
74-
}
34+
main(random, (err, port) => {
35+
if (err) {
36+
console.log(`get available port failed with ${err}`);
7537
}
38+
console.log(`get available port ${port} randomly`);
7639
});
77-
return cfg;
78-
};
79-
80-
var merge = function(r, s) {
81-
for (var i in s) {
82-
r[i] = s[i];
83-
}
84-
};
85-
86-
merge(options, getConfig(program));
87-
88-
global.__detect = global.__detect || {};
89-
global.__detect.options = options;
90-
91-
var detect = require('../lib');
92-
var port = options.port;
93-
94-
detect(port, function(error, _port) {
95-
if (port === _port) {
96-
console.log('port: %d was not occupied', port);
97-
} else {
98-
console.log('port: %d was occupied, try port: %d', port, _port);
99-
}
100-
});
40+
} else if (isNaN(port)) {
41+
console.log();
42+
console.log(` \u001b[37m${pkg.description}\u001b[0m`);
43+
console.log();
44+
console.log(' Usage:');
45+
console.log();
46+
console.log(` ${pkg.name} [port]`);
47+
console.log();
48+
console.log(' Options:');
49+
console.log();
50+
console.log(' -v, --version show version and exit');
51+
console.log(' -h, --help output usage information');
52+
console.log();
53+
console.log(' Further help:');
54+
console.log();
55+
console.log(` ${pkg.homepage}`);
56+
console.log();
57+
} else {
58+
main(port, (err, port) => {
59+
if (err) {
60+
console.log(`get available port failed with ${err}`);
61+
}
62+
console.log(`get available port ${port}`);
63+
});
64+
}

0 commit comments

Comments
 (0)