diff --git a/docs/en/contributing-to-appium/appium-packages.md b/docs/en/contributing-to-appium/appium-packages.md index ee21c79e6..49a95051d 100644 --- a/docs/en/contributing-to-appium/appium-packages.md +++ b/docs/en/contributing-to-appium/appium-packages.md @@ -9,7 +9,7 @@ - contains all available and supported CLI arguments - check for deprecation and mutual exclusion - put logging together - - mixture out of npmlog, winston and appium-logger + - mixture out of npmlog, winston and a custom logger - initiates AppiumDriver (extends Basedriver) - assigns iOS/Android/Selendroid/Fake driver to session - creates/deletes Appium session diff --git a/lib/logger.js b/lib/logger.js index 0cada23ca..314e54c75 100644 --- a/lib/logger.js +++ b/lib/logger.js @@ -1,5 +1,6 @@ -import { getLogger } from 'appium-logger'; +import { logger } from 'appium-support'; -let logger = getLogger('Appium'); -export default logger; +let log = logger.getLogger('Appium'); + +export default log; diff --git a/lib/logsink.js b/lib/logsink.js index 53f869ce5..cb3e12563 100644 --- a/lib/logsink.js +++ b/lib/logsink.js @@ -1,13 +1,12 @@ import npmlog from 'npmlog'; -import { patchLogger } from 'appium-logger'; import winston from 'winston'; -import { fs } from 'appium-support'; +import { fs, logger } from 'appium-support'; import 'date-utils'; import _ from 'lodash'; // set up distributed logging before everything else -patchLogger(npmlog); +logger.patchLogger(npmlog); global._global_npmlog = npmlog; // npmlog is used only for emitting, we use winston for output @@ -36,7 +35,7 @@ const npmToWinstonLevels = { error: 'error', }; -let logger = null; +let log = null; let timeZone = null; function timestamp () { @@ -184,7 +183,7 @@ async function init (args) { // object clear(); - logger = new (winston.Logger)({ + log = new (winston.Logger)({ transports: await _createTransports(args) }); @@ -196,7 +195,7 @@ async function init (args) { let prefix = `[${logObj.prefix}]`; msg = `${prefix.magenta} ${msg}`; } - logger[winstonLevel](msg); + log[winstonLevel](msg); if (args.logHandler && typeof args.logHandler === "function") { args.logHandler(logObj.level, msg); } @@ -204,21 +203,21 @@ async function init (args) { }); - logger.setLevels(levels); + log.setLevels(levels); // 8/19/14 this is a hack to force Winston to print debug messages to stdout rather than stderr. // TODO: remove this if winston provides an API for directing streams. - if (levels[logger.transports.console.level] === levels.debug) { - logger.debug = function (msg) { - logger.info('[debug] ' + msg); + if (levels[log.transports.console.level] === levels.debug) { + log.debug = function (msg) { + log.info('[debug] ' + msg); }; } } function clear () { - if (logger) { - for (let transport of _.keys(logger.transports)) { - logger.remove(transport); + if (log) { + for (let transport of _.keys(log.transports)) { + log.remove(transport); } } npmlog.removeAllListeners('log'); diff --git a/package.json b/package.json index 85fd3e192..80038df1f 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,6 @@ "appium-base-driver": "2.x", "appium-fake-driver": "0.x", "appium-ios-driver": "1.x", - "appium-logger": "2.x", "appium-selendroid-driver": "1.x", "appium-support": "2.x", "appium-uiautomator2-driver": "0.x", @@ -85,7 +84,7 @@ "mocha": "2.x", "pre-commit": "1.x", "sinon": "1.x", - "wd": "0.x" + "wd": "1.x" }, "optionalDependencies": { "fsevents": "1.x" diff --git a/test/driver-specs.js b/test/driver-specs.js index 080cbe368..7239e67aa 100644 --- a/test/driver-specs.js +++ b/test/driver-specs.js @@ -15,6 +15,7 @@ chai.should(); chai.use(chaiAsPromised); const BASE_CAPS = {platformName: 'Fake', deviceName: 'Fake', app: TEST_FAKE_APP}; +const SESSION_ID = 1; describe('AppiumDriver', () => { describe('getAppiumRouter', () => { @@ -37,20 +38,20 @@ describe('AppiumDriver', () => { return [appium, mockFakeDriver]; } describe('createSession', () => { - let appium - , mockFakeDriver; + let appium; + let mockFakeDriver; beforeEach(() => { [appium, mockFakeDriver] = getDriverAndFakeDriver(); }); - afterEach(() => { + afterEach(async () => { mockFakeDriver.restore(); - appium.args.defaultCapabilities = {}; + await appium.deleteSession(SESSION_ID); }); it('should call inner driver\'s createSession with desired capabilities', async () => { mockFakeDriver.expects("createSession") .once().withExactArgs(BASE_CAPS, undefined, []) - .returns([1, BASE_CAPS]); + .returns([SESSION_ID, BASE_CAPS]); await appium.createSession(BASE_CAPS); mockFakeDriver.verify(); }); @@ -60,7 +61,7 @@ describe('AppiumDriver', () => { appium.args.defaultCapabilities = defaultCaps; mockFakeDriver.expects("createSession") .once().withArgs(allCaps) - .returns([1, allCaps]); + .returns([SESSION_ID, allCaps]); await appium.createSession(BASE_CAPS); mockFakeDriver.verify(); }); @@ -71,7 +72,7 @@ describe('AppiumDriver', () => { appium.args.defaultCapabilities = defaultCaps; mockFakeDriver.expects("createSession") .once().withArgs(BASE_CAPS) - .returns([1, BASE_CAPS]); + .returns([SESSION_ID, BASE_CAPS]); await appium.createSession(BASE_CAPS); mockFakeDriver.verify(); }); @@ -99,7 +100,7 @@ describe('AppiumDriver', () => { mockFakeDriver.expects("createSession") .once().withExactArgs(BASE_CAPS, undefined, []) - .returns([1, BASE_CAPS]); + .returns([SESSION_ID, BASE_CAPS]); await appium.createSession(BASE_CAPS); sessions = await appium.getSessions(); @@ -112,14 +113,13 @@ describe('AppiumDriver', () => { }); }); describe('deleteSession', () => { - let appium - , mockFakeDriver; + let appium; + let mockFakeDriver; beforeEach(() => { [appium, mockFakeDriver] = getDriverAndFakeDriver(); }); afterEach(() => { mockFakeDriver.restore(); - appium.args.defaultCapabilities = {}; }); it('should remove the session if it is found', async () => { let [sessionId] = await appium.createSession(BASE_CAPS); @@ -136,22 +136,32 @@ describe('AppiumDriver', () => { .returns(); await appium.deleteSession(sessionId); mockFakeDriver.verify(); + + // cleanup, since we faked the delete session call + await mockFakeDriver.object.deleteSession(); }); }); describe('getSessions', () => { let appium; + let sessions; before(() => { appium = new AppiumDriver({}); }); + afterEach(async () => { + for (let session of sessions) { + await appium.deleteSession(session.id); + } + }); it('should return an empty array of sessions', async () => { - let sessions = await appium.getSessions(); + sessions = await appium.getSessions(); sessions.should.be.an.array; sessions.should.be.empty; }); it('should return sessions created', async () => { let session1 = await appium.createSession(_.extend(_.clone(BASE_CAPS), {cap: 'value'})); let session2 = await appium.createSession(_.extend(_.clone(BASE_CAPS), {cap: 'other value'})); - let sessions = await appium.getSessions(); + + sessions = await appium.getSessions(); sessions.should.be.an.array; sessions.should.have.length(2); sessions[0].id.should.equal(session1[0]); @@ -159,16 +169,16 @@ describe('AppiumDriver', () => { sessions[1].id.should.equal(session2[0]); sessions[1].capabilities.should.eql(session2[1]); }); - describe('getStatus', () => { - let appium; - before(() => { - appium = new AppiumDriver({}); - }); - it('should return a status', async () => { - let status = await appium.getStatus(); - status.build.should.exist; - status.build.version.should.exist; - }); + }); + describe('getStatus', () => { + let appium; + before(() => { + appium = new AppiumDriver({}); + }); + it('should return a status', async () => { + let status = await appium.getStatus(); + status.build.should.exist; + status.build.version.should.exist; }); }); describe('sessionExists', () => { @@ -179,7 +189,8 @@ describe('AppiumDriver', () => { beforeEach(() => { [appium, mockFakeDriver] = getDriverAndFakeDriver(); }); - afterEach(() => { + afterEach(async () => { + await mockFakeDriver.object.deleteSession(); mockFakeDriver.restore(); appium.args.defaultCapabilities = {}; }); diff --git a/test/logger-specs.js b/test/logger-specs.js index 3d8fdca94..b22486cae 100644 --- a/test/logger-specs.js +++ b/test/logger-specs.js @@ -2,15 +2,15 @@ import { init as logsinkInit, clear as logsinkClear } from '../lib/logsink'; import sinon from 'sinon'; -import { getLogger } from 'appium-logger'; +import { logger } from 'appium-support'; // temporarily turn on logging to stdio, so we can catch and query let forceLogs = process.env._FORCE_LOGS; process.env._FORCE_LOGS = 1; -let logger = getLogger('Appium'); +let log = logger.getLogger('Appium'); -describe('Logger', () => { +describe('logging', () => { let stderrSpy; let stdoutSpy; beforeEach(() => { @@ -31,9 +31,9 @@ describe('Logger', () => { const debugMsg = 'some debug'; function doLogging () { - logger.error(errorMsg); - logger.warn(warnMsg); - logger.debug(debugMsg); + log.error(errorMsg); + log.warn(warnMsg); + log.debug(debugMsg); } it('should send error, info and debug when loglevel is debug', async () => {