From 504509bb670db7c088df9cab0c5dc2f62b7c7cba Mon Sep 17 00:00:00 2001 From: Kukhyeon Heo Date: Wed, 4 Nov 2020 19:55:47 +0900 Subject: [PATCH] Removed global.Promise override (#12182) closed #11943 * Remove global.Promise * Fix brute-knex bluebird error. * Fix api-acceptance tests. * Fix unit tests --- core/frontend/services/routing/settings.js | 1 + core/frontend/services/settings/ensure-settings.js | 2 +- core/server/api/canary/images.js | 1 + core/server/api/canary/utils/serializers/output/roles.js | 1 + core/server/data/db/backup.js | 2 +- core/server/lib/fs/package-json/read.js | 2 +- core/server/lib/image/gravatar.js | 2 +- core/server/overrides.js | 5 ----- test/unit/data/migrations/utils.test.js | 5 ----- test/unit/services/auth/api-key/content_spec.js | 4 ++-- 10 files changed, 9 insertions(+), 16 deletions(-) diff --git a/core/frontend/services/routing/settings.js b/core/frontend/services/routing/settings.js index 71f79abc55..0aa135072d 100644 --- a/core/frontend/services/routing/settings.js +++ b/core/frontend/services/routing/settings.js @@ -1,3 +1,4 @@ +const Promise = require('bluebird'); const moment = require('moment-timezone'); const fs = require('fs-extra'); const path = require('path'); diff --git a/core/frontend/services/settings/ensure-settings.js b/core/frontend/services/settings/ensure-settings.js index 4e2c17b680..9fe396f599 100644 --- a/core/frontend/services/settings/ensure-settings.js +++ b/core/frontend/services/settings/ensure-settings.js @@ -25,7 +25,7 @@ module.exports = function ensureSettingsFiles(knownSettings) { const defaultFileName = `default-${fileName}`; const filePath = path.join(contentPath, fileName); - return fs.readFile(filePath, 'utf8') + return Promise.resolve(fs.readFile(filePath, 'utf8')) .catch({code: 'ENOENT'}, () => { const defaultFilePath = path.join(defaultSettingsPath, defaultFileName); // CASE: file doesn't exist, copy it from our defaults diff --git a/core/server/api/canary/images.js b/core/server/api/canary/images.js index 01f1b2bc83..6f7cacdb2b 100644 --- a/core/server/api/canary/images.js +++ b/core/server/api/canary/images.js @@ -1,3 +1,4 @@ +const Promise = require('bluebird'); const storage = require('../../adapters/storage'); module.exports = { diff --git a/core/server/api/canary/utils/serializers/output/roles.js b/core/server/api/canary/utils/serializers/output/roles.js index a5ca9241a4..302b3472f4 100644 --- a/core/server/api/canary/utils/serializers/output/roles.js +++ b/core/server/api/canary/utils/serializers/output/roles.js @@ -1,3 +1,4 @@ +const Promise = require('bluebird'); const debug = require('ghost-ignition').debug('api:canary:utils:serializers:output:roles'); const canThis = require('../../../../../services/permissions').canThis; diff --git a/core/server/data/db/backup.js b/core/server/data/db/backup.js index 4819b81111..87f20eaba6 100644 --- a/core/server/data/db/backup.js +++ b/core/server/data/db/backup.js @@ -12,7 +12,7 @@ const exporter = require('../exporter'); const writeExportFile = function writeExportFile(exportResult) { const filename = path.resolve(urlUtils.urlJoin(config.get('paths').contentPath, 'data', exportResult.filename)); - return fs.writeFile(filename, JSON.stringify(exportResult.data)).return(filename); + return Promise.resolve(fs.writeFile(filename, JSON.stringify(exportResult.data))).return(filename); }; const readBackup = async (filename) => { diff --git a/core/server/lib/fs/package-json/read.js b/core/server/lib/fs/package-json/read.js index 0753d8d110..c019e0c21e 100644 --- a/core/server/lib/fs/package-json/read.js +++ b/core/server/lib/fs/package-json/read.js @@ -60,7 +60,7 @@ const readPackage = function readPackage(packagePath, packageName) { }; const readPackages = function readPackages(packagePath) { - return fs.readdir(packagePath) + return Promise.resolve(fs.readdir(packagePath)) .filter(function (packageName) { // Filter out things which are not packages by regex if (packageName.match(notAPackageRegex)) { diff --git a/core/server/lib/image/gravatar.js b/core/server/lib/image/gravatar.js index deadb5be8b..8bc4856553 100644 --- a/core/server/lib/image/gravatar.js +++ b/core/server/lib/image/gravatar.js @@ -12,7 +12,7 @@ module.exports.lookup = function lookup(userData, timeout) { return Promise.resolve(); } - return request('https:' + gravatarUrl + '&d=404&r=x', {timeout: timeout || 2 * 1000}) + return Promise.resolve(request('https:' + gravatarUrl + '&d=404&r=x', {timeout: timeout || 2 * 1000})) .then(function () { gravatarUrl += '&d=mm&r=x'; diff --git a/core/server/overrides.js b/core/server/overrides.js index 13756c9b26..b757745903 100644 --- a/core/server/overrides.js +++ b/core/server/overrides.js @@ -23,8 +23,3 @@ const {extract, hasProvider} = require('oembed-parser'); // eslint-disable-line * - be careful when you work with date operations, therefor always wrap a date into moment */ moment.tz.setDefault('UTC'); - -/** - * https://github.com/TryGhost/Ghost/issues/9064 - */ -global.Promise = require('bluebird'); diff --git a/test/unit/data/migrations/utils.test.js b/test/unit/data/migrations/utils.test.js index 05d7f25228..cf569e292d 100644 --- a/test/unit/data/migrations/utils.test.js +++ b/test/unit/data/migrations/utils.test.js @@ -3,11 +3,6 @@ const sinon = require('sinon'); const utils = require('../../../../core/server/data/migrations/utils'); -// Get access to the core Promise constructor -// as global.Promise is overidden by Ghost -// https://github.com/TryGhost/Ghost/issues/9064 -const Promise = (async () => {})().constructor; - class Deferred { constructor() { this.promise = new Promise((resolve, reject) => { diff --git a/test/unit/services/auth/api-key/content_spec.js b/test/unit/services/auth/api-key/content_spec.js index d959ab583a..54e32f7594 100644 --- a/test/unit/services/auth/api-key/content_spec.js +++ b/test/unit/services/auth/api-key/content_spec.js @@ -20,8 +20,8 @@ describe('Content API Key Auth', function () { this.fakeApiKey = fakeApiKey; this.apiKeyStub = sinon.stub(models.ApiKey, 'findOne'); - this.apiKeyStub.returns(new Promise.resolve()); - this.apiKeyStub.withArgs({secret: fakeApiKey.secret}).returns(new Promise.resolve(fakeApiKey)); + this.apiKeyStub.returns(Promise.resolve()); + this.apiKeyStub.withArgs({secret: fakeApiKey.secret}).returns(Promise.resolve(fakeApiKey)); }); afterEach(function () {