From d5f6a83472183a33f5546cac69dc7f2d83d57416 Mon Sep 17 00:00:00 2001 From: SamuelZhaoY Date: Wed, 2 May 2018 21:04:08 +0800 Subject: [PATCH] refract and start adding test cases --- bin/nosmoke | 18 +----------------- lib/config.js | 3 --- lib/crawler/config.js | 5 +++-- lib/crawler/index.js | 8 +++++--- lib/nosmoke.js | 33 +++++++++++++++------------------ lib/server/router.js | 16 +++++----------- lib/server/server.js | 12 +----------- test/nosmoke.test.js | 4 ++-- 8 files changed, 32 insertions(+), 67 deletions(-) delete mode 100644 lib/config.js diff --git a/bin/nosmoke b/bin/nosmoke index 91c25d3..de58f01 100755 --- a/bin/nosmoke +++ b/bin/nosmoke @@ -39,25 +39,9 @@ program program.parse(process.argv); -var printInfo = function(lines) { - var maxLength = 0; - lines.forEach(line => { - maxLength = line.length > maxLength ? line.length : maxLength; - }); - - var res = [new Array(maxLength + 7).join('*')]; - - lines.forEach(line => { - res.push(`* ${line + new Array(maxLength - line.length + 1).join(' ')} *`); - }); - - res.push(new Array(maxLength + 7).join('*')); - console.log(chalk.white(`${EOL}${res.join(EOL)}${EOL}`)); -}; - function init(error, data) { if (data && data.version && pkg.version !== data.version) { - printInfo([`version ${pkg.version} is outdate`, `run: npm i -g ${pkg.name}@${data.version}`]); + console.log(`version ${pkg.version} is outdate`, `run: npm i -g ${pkg.name}@${data.version}`); return; } diff --git a/lib/config.js b/lib/config.js deleted file mode 100644 index ffe7aca..0000000 --- a/lib/config.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -exports.isDev = process.env.NO_SMOKE === 'dev'; diff --git a/lib/crawler/config.js b/lib/crawler/config.js index 165662c..db658ce 100644 --- a/lib/crawler/config.js +++ b/lib/crawler/config.js @@ -35,14 +35,14 @@ NSCrawlerConfig.prototype.debugDesriptoin = function() { 'targetElements: ' + this.targetElements + '\n'; }; -NSCrawlerConfig.prototype.loadDefault = function() { +NSCrawlerConfig.prototype.loadConfig = function() { let configFile = path.join(__dirname, '..', '..', 'public', 'crawler.config.yml'); if (root.cmdArgs && root.cmdArgs.config) { if (_.isExistedFile(root.cmdArgs.config)) { configFile = root.cmdArgs.config; } else { console.log('invalid config file paths :' + root.cmdArgs.config); - process.exit(); + process.exit(0); } } @@ -56,6 +56,7 @@ NSCrawlerConfig.prototype.loadDefault = function() { this.configFile = configFile; this.platform = this.platform.toLowerCase(); + return this; }; module.exports = NSCrawlerConfig; diff --git a/lib/crawler/index.js b/lib/crawler/index.js index 7dcffcb..06b3377 100644 --- a/lib/crawler/index.js +++ b/lib/crawler/index.js @@ -6,16 +6,18 @@ let root = require('window-or-global'); const WDClient = require('../wd-client'); const NSCrawlerConfig = require('./config'); -let crawlerConfig = new NSCrawlerConfig(); -crawlerConfig.loadDefault(); +let crawlerConfig = new NSCrawlerConfig().loadConfig(); let NSCrawler; if (crawlerConfig.platform.toLowerCase() === 'ios') { NSCrawler = require('./ios').NSCrawler; } else if (crawlerConfig.platform.toLowerCase() === 'pc-web') { NSCrawler = require('./web').NSCrawler; -} else { +} else if (crawlerConfig.platform.toLowerCase() === 'android') { NSCrawler = require('./android').NSCrawler; +} else { + console.info(`invalid platform specified: ${crawlerConfig.platform}, please choose: iOS, Android, or PC-Web`); + process.exit(0); } if (!root.eventEmmiter) { diff --git a/lib/nosmoke.js b/lib/nosmoke.js index 43d4389..2b47de2 100644 --- a/lib/nosmoke.js +++ b/lib/nosmoke.js @@ -12,8 +12,8 @@ const { detectPort } = _; -function *parseOptions(options) { - var port = yield detectPort(options.port); +function *fetchPort(options) { + let port = yield detectPort(options.port); if (port !== parseInt(options.port, 10)) { logger.info('port: %d was occupied, changed port: %d', options.port, port); @@ -21,30 +21,27 @@ function *parseOptions(options) { } } -function *initDevice(options) { - const udid = options.udid; - console.log(`udid: ${udid}`); +function *setupReport(options) { + if (!options.silent) { + yield opn(`http://${_.ipv4}:${options.port}`); + } else { + http.get({ + host: _.ipv4, + port: options.port + }); + } } module.exports = function *(options) { try { - root.cmdArgs = options; - yield parseOptions(options); + yield fetchPort(options); const server = new Server(options); + root.cmdArgs = options; + yield server.start(); - const url = `http://${_.ipv4}:${options.port}`; - yield initDevice(options); yield require('./crawler/index'); - if (!options.silent) { - yield opn(url); - } else { - http.get({ - host: _.ipv4, - port: options.port - }); - } + yield setupReport(options); } catch (e) { console.log(e); } }; - diff --git a/lib/server/router.js b/lib/server/router.js index b94806e..d7a921c 100644 --- a/lib/server/router.js +++ b/lib/server/router.js @@ -5,26 +5,20 @@ const path = require('path'); const EventEmitter = require('events'); const Router = require('koa-router'); const macacaReporterRender = require('macaca-reporter/lib/render'); - const macacaReportTemplate = require('../crawler/reporterTemplate'); - const rootRouter = new Router(); -let root = require('window-or-global'); -root.mockData = require('macaca-reporter/test/mock'); -let date = new Date(); -root.crawlingDateStamp = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}-${date.getHours()}-${date.getMinutes()}-${date.getSeconds()}`; - -macacaReportTemplate.initialize(); - const _ = require('../common/helper'); - const detectPort = _.detectPort; - const server = require('http').createServer(); const io = require('socket.io')(server); +let root = require('window-or-global'); +let date = new Date(); let socketed = false; +root.mockData = require('macaca-reporter/test/mock'); +root.crawlingDateStamp = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}-${date.getHours()}-${date.getMinutes()}-${date.getSeconds()}`; +macacaReportTemplate.initialize(); module.exports = function(app) { diff --git a/lib/server/server.js b/lib/server/server.js index 7660665..56af8c0 100644 --- a/lib/server/server.js +++ b/lib/server/server.js @@ -7,7 +7,6 @@ const bodyParser = require('koa-bodyparser'); const router = require('./router'); const _ = require('../common/helper'); const logger = require('../common/logger'); -const middlewares = require('./middlewares'); const startServer = options => { @@ -16,20 +15,11 @@ const startServer = options => { try { const app = koa(); - app.use(bodyParser()); - - app.use(function *(next) { - this._options = options; - yield next; - }); app.options = options; - - middlewares(app); - + app.listen(options.port, resolve); router(app); - app.listen(options.port, resolve); } catch (e) { logger.debug(`server failed to start: ${e.stack}`); reject(e); diff --git a/test/nosmoke.test.js b/test/nosmoke.test.js index 83c6257..2d9effc 100644 --- a/test/nosmoke.test.js +++ b/test/nosmoke.test.js @@ -10,7 +10,7 @@ const NSCrawler = require('../lib/crawler/crawler').NSCrawler; describe('#Load Configuration', function() { let config = new NSCrawlerConfig(); - config.loadDefault(); + config.loadConfig(); it('clickTypes should have value', function() { assert.ok(config.clickTypes.length, 'clickTypes should have value'); @@ -31,7 +31,7 @@ describe('#Load Configuration', function() { describe('#Check Regex', function() { let config = new NSCrawlerConfig(); - config.loadDefault(); + config.loadConfig(); let crawler = new NSCrawler(config, 'mock session'); it('Regex Check', function() { assert.ok(crawler.checkContentMatch(regexMock, 'android\\s+bootstrap', true), 'when appears');