Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id D2304200CEB for ; Sat, 12 Aug 2017 10:02:01 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id D0C3616A150; Sat, 12 Aug 2017 08:02:01 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id F0A7416A136 for ; Sat, 12 Aug 2017 10:02:00 +0200 (CEST) Received: (qmail 11758 invoked by uid 500); 12 Aug 2017 08:01:55 -0000 Mailing-List: contact commits-help@cordova.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list commits@cordova.apache.org Received: (qmail 11442 invoked by uid 99); 12 Aug 2017 08:01:55 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 12 Aug 2017 08:01:55 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 8BC34F552A; Sat, 12 Aug 2017 08:01:52 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: purplecabbage@apache.org To: commits@cordova.apache.org Date: Sat, 12 Aug 2017 08:02:00 -0000 Message-Id: In-Reply-To: <3dc5215da22c487d94cb683ee06408fa@git.apache.org> References: <3dc5215da22c487d94cb683ee06408fa@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [09/12] cordova-serve git commit: remove 'q' dependence completely. Added server.spec archived-at: Sat, 12 Aug 2017 08:02:02 -0000 remove 'q' dependence completely. Added server.spec Project: http://git-wip-us.apache.org/repos/asf/cordova-serve/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-serve/commit/db1ae551 Tree: http://git-wip-us.apache.org/repos/asf/cordova-serve/tree/db1ae551 Diff: http://git-wip-us.apache.org/repos/asf/cordova-serve/diff/db1ae551 Branch: refs/heads/master Commit: db1ae5518dbf0938da1035dc386102946b821add Parents: 2be7e2b Author: Jesse MacFadyen Authored: Fri Jun 30 17:56:59 2017 -0700 Committer: Jesse MacFadyen Committed: Fri Jun 30 17:56:59 2017 -0700 ---------------------------------------------------------------------- package.json | 1 - spec/server.spec.js | 47 ++++++++++++++++++++++++ src/platform.js | 28 ++++++++------ src/server.js | 96 +++++++++++++++++++++++++----------------------- 4 files changed, 115 insertions(+), 57 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-serve/blob/db1ae551/package.json ---------------------------------------------------------------------- diff --git a/package.json b/package.json index 4d20d9d..7df53cd 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,6 @@ "compression": "^1.6.0", "express": "^4.13.3", "open": "0.0.5", - "q": "^1.4.1", "shelljs": "^0.5.3" }, "devDependencies": { http://git-wip-us.apache.org/repos/asf/cordova-serve/blob/db1ae551/spec/server.spec.js ---------------------------------------------------------------------- diff --git a/spec/server.spec.js b/spec/server.spec.js new file mode 100644 index 0000000..fb35c1f --- /dev/null +++ b/spec/server.spec.js @@ -0,0 +1,47 @@ +/** + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +*/ + +var server = require("../src/server"); + +function expectPromise(obj){ + // 3 slightly different ways of verifying a promise + expect(typeof obj.then).toBe('function'); + expect(obj instanceof Promise).toBe(true); + expect(obj).toBe(Promise.resolve(obj)); +} + +describe('server', function() { + + it('exists and has expected properties', function() { + expect(server).toBeDefined(); + expect(typeof server).toBe('function'); + }); + + it('should return a promise', function(done) { + var result = server({port:8008,noServerInfo:1}); + expect(result).toBeDefined(); + expectPromise(result); + result.then(function(res) { + console.log("success : " + res); + done(); + }); + result.catch(function(err){ + console.log("error : " + err); + done(); + }); + }); +}); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cordova-serve/blob/db1ae551/src/platform.js ---------------------------------------------------------------------- diff --git a/src/platform.js b/src/platform.js index 7abbb81..27f72b4 100644 --- a/src/platform.js +++ b/src/platform.js @@ -18,7 +18,6 @@ */ var fs = require('fs'), - Q = require('q'), util = require('./util'); /** @@ -30,23 +29,30 @@ var fs = require('fs'), * @returns {*|promise} */ module.exports = function (platform, opts) { + + // note: `this` is actually an instance of main.js CordovaServe + // this module is a mixin var that = this; - return Q().then(function () { + var retPromise = new Promise(function(resolve,reject){ if (!platform) { - throw new Error('A platform must be specified'); + reject('Error: A platform must be specified'); } + else { + opts = opts || {}; + var projectRoot = findProjectRoot(opts.root); + that.projectRoot = projectRoot; + opts.root = util.getPlatformWwwRoot(projectRoot, platform); - opts = opts || {}; - var projectRoot = findProjectRoot(opts.root); - that.projectRoot = projectRoot; - - opts.root = util.getPlatformWwwRoot(projectRoot, platform); - if (!fs.existsSync(opts.root)) { - throw new Error('Project does not include the specified platform: ' + platform); + if (!fs.existsSync(opts.root)) { + reject('Error: Project does not include the specified platform: ' + platform); + } + else { + return that.launchServer(opts); + } } - return that.launchServer(opts); }); + return retPromise; }; function findProjectRoot(path) { http://git-wip-us.apache.org/repos/asf/cordova-serve/blob/db1ae551/src/server.js ---------------------------------------------------------------------- diff --git a/src/server.js b/src/server.js index 9040d2b..03bf5fe 100644 --- a/src/server.js +++ b/src/server.js @@ -18,8 +18,7 @@ */ var chalk = require('chalk'), - express = require('express'), - Q = require('q'); + express = require('express'); /** * @desc Launches a server with the specified options and optional custom handlers. @@ -27,56 +26,63 @@ var chalk = require('chalk'), * @returns {*|promise} */ module.exports = function (opts) { - var deferred = Q.defer(); - opts = opts || {}; - var port = opts.port || 8000; + var that = this; + var promise = new Promise(function(resolve,reject){ - var log = module.exports.log = function (msg) { - if (!opts.noLogOutput) { - if (opts.events) { - opts.events.emit('log', msg); - } else { - console.log(msg); - } - } - }; - - var app = this.app; - var server = require('http').Server(app); - this.server = server; + opts = opts || {}; + var port = opts.port || 8000; - if (opts.router) { - app.use(opts.router); - } + var log = module.exports.log = function (msg) { + if (!opts.noLogOutput) { + if (opts.events) { + opts.events.emit('log', msg); + } + else { + console.log(msg); + } + } + }; - if (opts.root) { - this.root = opts.root; - app.use(express.static(opts.root)); - } + var app = that.app; + var server = require('http').Server(app); + that.server = server; - // If we have a project root, make that available as a static root also. This can be useful in cases where source - // files that have been transpiled (such as TypeScript) are located under the project root on a path that mirrors - // the the transpiled file's path under the platform root and is pointed to by a map file. - if (this.projectRoot) { - app.use(express.static(this.projectRoot)); - } + if (opts.router) { + app.use(opts.router); + } - var that = this; - server.listen(port).on('listening', function () { - that.port = port; - if (!opts.noServerInfo) { - log('Static file server running on: ' + chalk.green('http://localhost:' + port) + ' (CTRL + C to shut down)'); + if (opts.root) { + that.root = opts.root; + app.use(express.static(opts.root)); } - deferred.resolve(); - }).on('error', function (e) { - if (e && e.toString().indexOf('EADDRINUSE') !== -1) { - port++; - server.listen(port); - } else { - deferred.reject(e); + + // If we have a project root, make that available as a static root also. This can be useful in cases where source + // files that have been transpiled (such as TypeScript) are located under the project root on a path that mirrors + // the the transpiled file's path under the platform root and is pointed to by a map file. + console.log("pr " + that.projectRoot) + if (that.projectRoot) { + app.use(express.static(that.projectRoot)); } - }); - return deferred.promise; + var listener = server.listen(port) + listener.on('listening', function () { + that.port = port; + var message = 'Static file server running on: ' + chalk.green('http://localhost:' + port) + ' (CTRL + C to shut down)'; + if (!opts.noServerInfo) { + log(message); + } + resolve(message); + }); + listener.on('error', function (e) { + if (e && e.toString().indexOf('EADDRINUSE') > -1) { + port++; + server.listen(port); + } + else { + reject(e); + } + }); + }); + return promise; }; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org For additional commands, e-mail: commits-help@cordova.apache.org