Skip to content
This repository has been archived by the owner on Aug 25, 2022. It is now read-only.

Commit

Permalink
refract and start adding test cases
Browse files Browse the repository at this point in the history
  • Loading branch information
SamuelZhaoY committed May 2, 2018
1 parent 31e7e6c commit d5f6a83
Show file tree
Hide file tree
Showing 8 changed files with 32 additions and 67 deletions.
18 changes: 1 addition & 17 deletions bin/nosmoke
Expand Up @@ -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;
}

Expand Down
3 changes: 0 additions & 3 deletions lib/config.js

This file was deleted.

5 changes: 3 additions & 2 deletions lib/crawler/config.js
Expand Up @@ -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);
}
}

Expand All @@ -56,6 +56,7 @@ NSCrawlerConfig.prototype.loadDefault = function() {

this.configFile = configFile;
this.platform = this.platform.toLowerCase();
return this;
};

module.exports = NSCrawlerConfig;
8 changes: 5 additions & 3 deletions lib/crawler/index.js
Expand Up @@ -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) {
Expand Down
33 changes: 15 additions & 18 deletions lib/nosmoke.js
Expand Up @@ -12,39 +12,36 @@ 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);
options.port = port;
}
}

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);
}
};

16 changes: 5 additions & 11 deletions lib/server/router.js
Expand Up @@ -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) {

Expand Down
12 changes: 1 addition & 11 deletions lib/server/server.js
Expand Up @@ -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 => {

Expand All @@ -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);
Expand Down
4 changes: 2 additions & 2 deletions test/nosmoke.test.js
Expand Up @@ -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');
Expand All @@ -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');
Expand Down

0 comments on commit d5f6a83

Please sign in to comment.