diff --git a/packages/ember-environment/lib/index.js b/packages/ember-environment/lib/index.js index 652913b20bf..de0842e7520 100644 --- a/packages/ember-environment/lib/index.js +++ b/packages/ember-environment/lib/index.js @@ -16,6 +16,10 @@ export const ENV = (typeof global.ENV === 'object' && global.ENV) || {}; +export function getENV() { + return ENV; +} + // ENABLE_ALL_FEATURES was documented, but you can't actually enable non optional features. if (ENV.ENABLE_ALL_FEATURES) { ENV.ENABLE_OPTIONAL_FEATURES = true; @@ -66,19 +70,6 @@ ENV.LOG_STACKTRACE_ON_DEPRECATION = defaultTrue(ENV.LOG_STACKTRACE_ON_DEPRECATIO */ ENV.LOG_VERSION = defaultTrue(ENV.LOG_VERSION); -/** - Debug parameter you can turn on. This will log all bindings that fire to - the console. This should be disabled in production code. Note that you - can also enable this from the console or temporarily. - - @property LOG_BINDINGS - @for EmberENV - @type Boolean - @default false - @public -*/ -ENV.LOG_BINDINGS = defaultFalse(ENV.LOG_BINDINGS); - ENV.RAISE_ON_DEPRECATION = defaultFalse(ENV.RAISE_ON_DEPRECATION); /** @@ -131,6 +122,14 @@ export const context = { lookup: originalContext.lookup || global, }; +export function getLookup() { + return context.lookup; +} + +export function setLookup(value) { + context.lookup = value; +} + // TODO: cleanup single source of truth issues with this stuff export const environment = hasDOM ? { diff --git a/packages/ember-utils/lib/index.js b/packages/ember-utils/lib/index.js index f1c8311913f..0774243cdbd 100644 --- a/packages/ember-utils/lib/index.js +++ b/packages/ember-utils/lib/index.js @@ -28,3 +28,6 @@ export { HAS_NATIVE_SYMBOL } from './symbol-utils'; export { HAS_NATIVE_PROXY } from './proxy-utils'; export { default as WeakSet } from './weak_set'; export { isProxy, setProxy } from './is_proxy'; + +import symbol from './symbol'; +export const NAME_KEY = symbol('NAME_KEY'); diff --git a/packages/ember/lib/index.js b/packages/ember/lib/index.js index 02e05772a57..4eba21a8fb8 100644 --- a/packages/ember/lib/index.js +++ b/packages/ember/lib/index.js @@ -1,9 +1,110 @@ import require, { has } from 'require'; -// ****ember-environment**** -import { ENV, context } from 'ember-environment'; +import { getENV, getLookup, setLookup, ENV, context } from 'ember-environment'; import { IS_NODE, module } from 'node-module'; import * as utils from 'ember-utils'; +import { Registry, Container } from 'container'; +import * as metal from 'ember-metal'; +import * as FLAGS from 'ember/features'; +import * as EmberDebug from 'ember-debug'; +import Backburner from 'backburner'; +import Logger from 'ember-console'; +import { + String as EmberString, + Object as EmberObject, + RegistryProxyMixin, + ContainerProxyMixin, + compare, + copy, + isEqual, + inject, + Array as EmberArray, + Copyable, + MutableEnumerable, + MutableArray, + TargetActionSupport, + Evented, + PromiseProxyMixin, + Observable, + typeOf, + isArray, + onLoad, + runLoadHooks, + Controller, + ControllerMixin, + Service, + _ProxyMixin, + RSVP, + Comparable, + Namespace, + Enumerable, + ArrayProxy, + ObjectProxy, + ActionHandler, + CoreObject, + NativeArray, + A, + getStrings, + setStrings, + + // computed macros + empty, + notEmpty, + none, + not, + bool, + match, + equal, + gt, + gte, + lt, + lte, + oneWay, + readOnly, + deprecatingAlias, + and, + or, + + // reduced computed macros + sum, + min, + max, + map, + sort, + setDiff, + mapBy, + filter, + filterBy, + uniq, + uniqBy, + union, + intersect, + collect, +} from 'ember-runtime'; +import { + Checkbox, + Component, + componentManager, + escapeExpression, + getTemplates, + Helper, + helper, + htmlSafe, + isHTMLSafe, + LinkComponent, + setTemplates, + template, + TextField, + TextArea, + isSerializationFirstNode, +} from 'ember-glimmer'; +import VERSION from './version'; +import * as views from 'ember-views'; +import * as routing from 'ember-routing'; +import * as application from 'ember-application'; +import * as extensionSupport from 'ember-extension-support'; + +// ****ember-environment**** const Ember = (typeof context.imports.Ember === 'object' && context.imports.Ember) || {}; @@ -12,17 +113,18 @@ Ember.toString = function() { return 'Ember'; }; -import { Registry, Container } from 'container'; - -// container exports -Ember.Container = Container; -Ember.Registry = Registry; +Object.defineProperty(Ember, 'ENV', { + get: getENV, + enumerable: false, +}); -// ****ember-metal**** -import * as metal from 'ember-metal'; -import * as FLAGS from 'ember/features'; +Object.defineProperty(Ember, 'lookup', { + get: getLookup, + set: setLookup, + enumerable: false, +}); -// ember-utils exports +// ****ember-utils**** Ember.getOwner = utils.getOwner; Ember.setOwner = utils.setOwner; Ember.generateGuid = utils.generateGuid; @@ -35,25 +137,21 @@ Ember.tryInvoke = utils.tryInvoke; Ember.wrap = utils.wrap; Ember.uuid = utils.uuid; Ember.assign = utils.assign; +Ember.NAME_KEY = utils.NAME_KEY; -// need to import this directly, to ensure the babel feature -// flag plugin works properly -import * as EmberDebug from 'ember-debug'; - -// Using _globalsComputed here so that mutating the function is only available -// in globals builds -const computed = metal._globalsComputed; -Ember.computed = computed; -computed.alias = metal.alias; -Ember.ComputedProperty = metal.ComputedProperty; -Ember.cacheFor = metal.getCachedValueFor; +// ****container**** +Ember.Container = Container; +Ember.Registry = Registry; +// ****ember-debug**** Ember.assert = EmberDebug.assert; Ember.warn = EmberDebug.warn; Ember.debug = EmberDebug.debug; Ember.deprecate = EmberDebug.deprecate; Ember.deprecateFunc = EmberDebug.deprecateFunc; Ember.runInDebug = EmberDebug.runInDebug; +Ember.Error = EmberDebug.Error; + /** @public @class Ember.Debug @@ -62,8 +160,17 @@ Ember.Debug = { registerDeprecationHandler: EmberDebug.registerDeprecationHandler, registerWarnHandler: EmberDebug.registerWarnHandler, }; -Ember.merge = metal.merge; +// ****ember-metal**** + +// Using _globalsComputed here so that mutating the function is only available +// in globals builds +const computed = metal._globalsComputed; +Ember.computed = computed; +computed.alias = metal.alias; +Ember.ComputedProperty = metal.ComputedProperty; +Ember.cacheFor = metal.getCachedValueFor; +Ember.merge = metal.merge; Ember.instrument = metal.instrument; Ember.subscribe = metal.instrumentationSubscribe; Ember.Instrumentation = { @@ -72,8 +179,6 @@ Ember.Instrumentation = { unsubscribe: metal.instrumentationUnsubscribe, reset: metal.instrumentationReset, }; - -Ember.Error = EmberDebug.Error; Ember.meta = metal.meta; Ember.get = metal.get; Ember.getWithDefault = metal.getWithDefault; @@ -143,7 +248,6 @@ Ember.MapWithDefault = metal.MapWithDefault; Ember.getProperties = metal.getProperties; Ember.setProperties = metal.setProperties; Ember.expandProperties = metal.expandProperties; -Ember.NAME_KEY = utils.NAME_KEY; Ember.addObserver = metal.addObserver; Ember.removeObserver = metal.removeObserver; Ember.aliasMethod = metal.aliasMethod; @@ -151,61 +255,6 @@ Ember.observer = metal.observer; Ember.mixin = metal.mixin; Ember.Mixin = metal.Mixin; -Object.defineProperty(Ember, 'ENV', { - get() { - return ENV; - }, - enumerable: false, -}); - -/** - The context that Ember searches for namespace instances on. - - @private - */ -Object.defineProperty(Ember, 'lookup', { - get() { - return context.lookup; - }, - set(value) { - context.lookup = value; - }, - enumerable: false, -}); - -Ember.EXTEND_PROTOTYPES = ENV.EXTEND_PROTOTYPES; - -// BACKWARDS COMPAT ACCESSORS FOR ENV FLAGS -Object.defineProperty(Ember, 'LOG_STACKTRACE_ON_DEPRECATION', { - get() { - return ENV.LOG_STACKTRACE_ON_DEPRECATION; - }, - set(value) { - ENV.LOG_STACKTRACE_ON_DEPRECATION = !!value; - }, - enumerable: false, -}); - -Object.defineProperty(Ember, 'LOG_VERSION', { - get() { - return ENV.LOG_VERSION; - }, - set(value) { - ENV.LOG_VERSION = !!value; - }, - enumerable: false, -}); - -Object.defineProperty(Ember, 'LOG_BINDINGS', { - get() { - return ENV.LOG_BINDINGS; - }, - set(value) { - ENV.LOG_BINDINGS = !!value; - }, - enumerable: false, -}); - /** A function may be assigned to `Ember.onerror` to be called when Ember internals encounter an error. This is useful for specialized error handling @@ -241,89 +290,12 @@ Object.defineProperty(Ember, 'testing', { enumerable: false, }); -import Backburner from 'backburner'; - Ember._Backburner = Backburner; -import Logger from 'ember-console'; - +// ****ember-console**** Ember.Logger = Logger; // ****ember-runtime**** - -import { - String as EmberString, - Object as EmberObject, - RegistryProxyMixin, - ContainerProxyMixin, - compare, - copy, - isEqual, - inject, - Array as EmberArray, - Copyable, - MutableEnumerable, - MutableArray, - TargetActionSupport, - Evented, - PromiseProxyMixin, - Observable, - typeOf, - isArray, - onLoad, - runLoadHooks, - Controller, - ControllerMixin, - Service, - _ProxyMixin, - RSVP, - Comparable, - Namespace, - Enumerable, - ArrayProxy, - ObjectProxy, - ActionHandler, - CoreObject, - NativeArray, - A, - getStrings, - setStrings, - - // computed macros - empty, - notEmpty, - none, - not, - bool, - match, - equal, - gt, - gte, - lt, - lte, - oneWay, - readOnly, - deprecatingAlias, - and, - or, - - // reduced computed macros - sum, - min, - max, - map, - sort, - setDiff, - mapBy, - filter, - filterBy, - uniq, - uniqBy, - union, - intersect, - collect, -} from 'ember-runtime'; - Ember.A = A; Ember.String = EmberString; Ember.Object = EmberObject; @@ -360,7 +332,6 @@ Ember._ProxyMixin = _ProxyMixin; Ember.RSVP = RSVP; Ember.Namespace = Namespace; -// ES6TODO: this seems a less than ideal way/place to add properties to Ember.computed computed.empty = empty; computed.notEmpty = notEmpty; computed.none = none; @@ -432,24 +403,7 @@ Object.defineProperty(Ember, 'BOOTED', { set: metal.setNamespaceSearchDisabled, }); -import { - Checkbox, - Component, - componentManager, - escapeExpression, - getTemplates, - Helper, - helper, - htmlSafe, - isHTMLSafe, - LinkComponent, - setTemplates, - template, - TextField, - TextArea, - isSerializationFirstNode, -} from 'ember-glimmer'; - +// ****ember-glimmer**** Ember.Component = Component; Helper.helper = helper; Ember.Helper = Helper; @@ -457,28 +411,23 @@ Ember.Checkbox = Checkbox; Ember.TextField = TextField; Ember.TextArea = TextArea; Ember.LinkComponent = LinkComponent; - -Object.defineProperty(Ember, '_setComponentManager', { - enumerable: false, - get() { - return componentManager; +Ember._setComponentManager = componentManager; +Ember.Handlebars = { + template, + Utils: { + escapeExpression, }, -}); +}; +Ember.HTMLBars = { + template, +}; if (ENV.EXTEND_PROTOTYPES.String) { String.prototype.htmlSafe = function() { return htmlSafe(this); }; } - -let EmberHandlebars = (Ember.Handlebars = Ember.Handlebars || {}); -let EmberHTMLBars = (Ember.HTMLBars = Ember.HTMLBars || {}); -let EmberHandleBarsUtils = (EmberHandlebars.Utils = EmberHandlebars.Utils || {}); - -EmberHTMLBars.template = EmberHandlebars.template = template; -EmberHandleBarsUtils.escapeExpression = escapeExpression; EmberString.htmlSafe = htmlSafe; - EmberString.isHTMLSafe = isHTMLSafe; /** @@ -498,9 +447,6 @@ Object.defineProperty(Ember, 'TEMPLATES', { enumerable: false, }); -import VERSION from './version'; -export { VERSION }; - /** The semantic version @@ -512,12 +458,8 @@ Ember.VERSION = VERSION; metal.libraries.registerCoreLibrary('Ember', VERSION); -// require the main entry points for each of these packages -// this is so that the global exports occur properly -import * as views from 'ember-views'; - +// ****ember-views**** Ember.$ = views.jQuery; - Ember.ViewUtils = { isSimpleClick: views.isSimpleClick, getViewElement: views.getViewElement, @@ -528,13 +470,11 @@ Ember.ViewUtils = { getChildViews: views.getChildViews, isSerializationFirstNode: isSerializationFirstNode, }; - Ember.TextSupport = views.TextSupport; Ember.ComponentLookup = views.ComponentLookup; Ember.EventDispatcher = views.EventDispatcher; -import * as routing from 'ember-routing'; - +// ****ember-routing**** Ember.Location = routing.Location; Ember.AutoLocation = routing.AutoLocation; Ember.HashLocation = routing.HashLocation; @@ -547,8 +487,7 @@ Ember.RouterDSL = routing.RouterDSL; Ember.Router = routing.Router; Ember.Route = routing.Route; -import * as application from 'ember-application'; - +// ****ember-application**** Ember.Application = application.Application; Ember.ApplicationInstance = application.ApplicationInstance; Ember.Engine = application.Engine; @@ -557,8 +496,6 @@ Ember.DefaultResolver = Ember.Resolver = application.Resolver; runLoadHooks('Ember.Application', application.Application); -import * as extensionSupport from 'ember-extension-support'; - Ember.DataAdapter = extensionSupport.DataAdapter; Ember.ContainerDebugAdapter = extensionSupport.ContainerDebugAdapter; @@ -579,10 +516,6 @@ if (has('ember-testing')) { runLoadHooks('Ember'); -/** - @module ember - @private -*/ export default Ember; if (IS_NODE) { diff --git a/packages/ember/tests/global-api-test.js b/packages/ember/tests/global-api-test.js deleted file mode 100644 index 2fd3251f4c7..00000000000 --- a/packages/ember/tests/global-api-test.js +++ /dev/null @@ -1,58 +0,0 @@ -import { get } from 'ember-metal'; -import { isArray } from 'ember-runtime'; -import { moduleFor, AbstractTestCase } from 'internal-test-helpers'; - -moduleFor( - 'Global API Tests', - class extends AbstractTestCase { - ['@test confirm Ember.DefaultResolver is exported'](assert) { - let internal = undefined; - let theExport = get(window, 'Ember.DefaultResolver'); - assert.ok(`${theExport} is exported`); - - if (internal !== undefined) { - assert.equal(theExport, internal, `${theExport} is exported properly`); - } - } - - ['@test confirm Ember.generateController is exported'](assert) { - let internal = undefined; - let theExport = get(window, 'Ember.generateController'); - assert.ok(`${theExport} is exported`); - - if (internal !== undefined) { - assert.equal(theExport, internal, `${theExport} is exported properly`); - } - } - - ['@test confirm Ember.Helper is exported'](assert) { - let internal = undefined; - let theExport = get(window, 'Ember.Helper'); - assert.ok(`${theExport} is exported`); - - if (internal !== undefined) { - assert.equal(theExport, internal, `${theExport} is exported properly`); - } - } - - ['@test confirm Ember.Helper.helper is exported'](assert) { - let internal = undefined; - let theExport = get(window, 'Ember.Helper.helper'); - assert.ok(`${theExport} is exported`); - - if (internal !== undefined) { - assert.equal(theExport, internal, `${theExport} is exported properly`); - } - } - - ['@test confirm Ember.isArray is exported'](assert) { - let internal = isArray; - let theExport = get(window, 'Ember.isArray'); - assert.ok(`${theExport} is exported`); - - if (internal !== undefined) { - assert.equal(theExport, internal, `${theExport} is exported properly`); - } - } - } -); diff --git a/packages/ember/tests/reexports_test.js b/packages/ember/tests/reexports_test.js index 77581f8df43..1d7fd96fad0 100644 --- a/packages/ember/tests/reexports_test.js +++ b/packages/ember/tests/reexports_test.js @@ -25,6 +25,10 @@ moduleFor( ); let allExports = [ + // ember-environment + ['ENV', 'ember-environment', { get: 'getENV' }], + ['lookup', 'ember-environment', { get: 'getLookup', set: 'setLookup' }], + // ember-utils ['getOwner', 'ember-utils', 'getOwner'], ['setOwner', 'ember-utils', 'setOwner'], @@ -38,9 +42,7 @@ let allExports = [ ['canInvoke', 'ember-utils'], ['tryInvoke', 'ember-utils'], ['wrap', 'ember-utils'], - - // ember-environment - // ['ENV', 'ember-environment', 'ENV'], TODO: fix this, its failing because we are hitting the getter + ['NAME_KEY', 'ember-utils'], // container ['Registry', 'container', 'Registry'], @@ -53,6 +55,9 @@ let allExports = [ ['warn', 'ember-debug'], ['debug', 'ember-debug'], ['runInDebug', 'ember-debug'], + ['Debug.registerDeprecationHandler', 'ember-debug', 'registerDeprecationHandler'], + ['Debug.registerWarnHandler', 'ember-debug', 'registerWarnHandler'], + ['Error', 'ember-debug'], // ember-metal ['computed', 'ember-metal', '_globalsComputed'], @@ -61,17 +66,15 @@ let allExports = [ ['cacheFor', 'ember-metal', 'getCachedValueFor'], ['merge', 'ember-metal'], ['instrument', 'ember-metal'], + ['subscribe', 'ember-metal', 'instrumentationSubscribe'], ['Instrumentation.instrument', 'ember-metal', 'instrument'], ['Instrumentation.subscribe', 'ember-metal', 'instrumentationSubscribe'], ['Instrumentation.unsubscribe', 'ember-metal', 'instrumentationUnsubscribe'], ['Instrumentation.reset', 'ember-metal', 'instrumentationReset'], ['testing', 'ember-debug', { get: 'isTesting', set: 'setTesting' }], ['onerror', 'ember-metal', { get: 'getOnerror', set: 'setOnerror' }], - // ['create'], TODO: figure out what to do here - // ['keys'], TODO: figure out what to do here ['FEATURES', 'ember/features'], ['FEATURES.isEnabled', 'ember-debug', 'isFeatureEnabled'], - ['Error', 'ember-debug'], ['meta', 'ember-metal'], ['get', 'ember-metal'], ['set', 'ember-metal'], @@ -112,6 +115,8 @@ let allExports = [ ['beginPropertyChanges', 'ember-metal'], ['endPropertyChanges', 'ember-metal'], ['changeProperties', 'ember-metal'], + ['platform.defineProperty', null, { value: true }], + ['platform.hasPropertyAccessors', null, { value: true }], ['defineProperty', 'ember-metal'], ['watchKey', 'ember-metal'], ['unwatchKey', 'ember-metal'], @@ -138,6 +143,9 @@ let allExports = [ ['mixin', 'ember-metal'], ['Mixin', 'ember-metal'], + // ember-console + ['Logger', 'ember-console', 'default'], + // ember-views ['$', 'ember-views', 'jQuery'], ['ViewUtils.isSimpleClick', 'ember-views', 'isSimpleClick'], @@ -162,10 +170,13 @@ let allExports = [ ['TextField', 'ember-glimmer', 'TextField'], ['TEMPLATES', 'ember-glimmer', { get: 'getTemplates', set: 'setTemplates' }], ['Handlebars.template', 'ember-glimmer', 'template'], + ['HTMLBars.template', 'ember-glimmer', 'template'], ['Handlebars.Utils.escapeExpression', 'ember-glimmer', 'escapeExpression'], ['String.htmlSafe', 'ember-glimmer', 'htmlSafe'], + ['_setComponentManager', 'ember-glimmer', 'componentManager'], // ember-runtime + ['A', 'ember-runtime'], ['_RegistryProxyMixin', 'ember-runtime', 'RegistryProxyMixin'], ['_ContainerProxyMixin', 'ember-runtime', 'ContainerProxyMixin'], ['Object', 'ember-runtime'], @@ -206,6 +217,37 @@ let allExports = [ 'ember-metal', { get: 'isNamespaceSearchDisabled', set: 'setNamespaceSearchDisabled' }, ], + ['computed.empty', 'ember-runtime', 'empty'], + ['computed.notEmpty', 'ember-runtime', 'notEmpty'], + ['computed.none', 'ember-runtime', 'none'], + ['computed.not', 'ember-runtime', 'not'], + ['computed.bool', 'ember-runtime', 'bool'], + ['computed.match', 'ember-runtime', 'match'], + ['computed.equal', 'ember-runtime', 'equal'], + ['computed.gt', 'ember-runtime', 'gt'], + ['computed.gte', 'ember-runtime', 'gte'], + ['computed.lt', 'ember-runtime', 'lt'], + ['computed.lte', 'ember-runtime', 'lte'], + ['computed.oneWay', 'ember-runtime', 'oneWay'], + ['computed.reads', 'ember-runtime', 'oneWay'], + ['computed.readOnly', 'ember-runtime', 'readOnly'], + ['computed.deprecatingAlias', 'ember-runtime', 'deprecatingAlias'], + ['computed.and', 'ember-runtime', 'and'], + ['computed.or', 'ember-runtime', 'or'], + ['computed.sum', 'ember-runtime', 'sum'], + ['computed.min', 'ember-runtime', 'min'], + ['computed.max', 'ember-runtime', 'max'], + ['computed.map', 'ember-runtime', 'map'], + ['computed.sort', 'ember-runtime', 'sort'], + ['computed.setDiff', 'ember-runtime', 'setDiff'], + ['computed.mapBy', 'ember-runtime', 'mapBy'], + ['computed.filter', 'ember-runtime', 'filter'], + ['computed.filterBy', 'ember-runtime', 'filterBy'], + ['computed.uniq', 'ember-runtime', 'uniq'], + ['computed.uniqBy', 'ember-runtime', 'uniqBy'], + ['computed.union', 'ember-runtime', 'union'], + ['computed.intersect', 'ember-runtime', 'intersect'], + ['computed.collect', 'ember-runtime', 'collect'], // ember-routing ['Location', 'ember-routing'], diff --git a/packages/internal-test-helpers/lib/confirm-export.js b/packages/internal-test-helpers/lib/confirm-export.js index c85b7a039b3..7306be1f7af 100644 --- a/packages/internal-test-helpers/lib/confirm-export.js +++ b/packages/internal-test-helpers/lib/confirm-export.js @@ -15,20 +15,31 @@ function getDescriptor(obj, path) { } export default function confirmExport(Ember, assert, path, moduleId, exportName) { - let desc = getDescriptor(Ember, path); - assert.ok(desc, 'the property exists on the global'); + try { + let desc = getDescriptor(Ember, path); + assert.ok(desc, `the ${path} property exists on the Ember global`); - let mod = require(moduleId); - if (typeof exportName === 'string') { - assert.equal(desc.value, mod[exportName], `Ember.${path} is exported correctly`); - assert.notEqual(mod[exportName], undefined, `Ember.${path} is not \`undefined\``); - } else { - assert.equal(desc.get, mod[exportName.get], `Ember.${path} getter is exported correctly`); - assert.notEqual(desc.get, undefined, `Ember.${path} getter is not undefined`); + if (typeof exportName === 'string') { + let mod = require(moduleId); + assert.equal(desc.value, mod[exportName], `Ember.${path} is exported correctly`); + assert.notEqual(mod[exportName], undefined, `Ember.${path} is not \`undefined\``); + } else if ('value' in desc) { + assert.equal(desc.value, exportName.value, `Ember.${path} is exported correctly`); + } else { + let mod = require(moduleId); + assert.equal(desc.get, mod[exportName.get], `Ember.${path} getter is exported correctly`); + assert.notEqual(desc.get, undefined, `Ember.${path} getter is not undefined`); - if (exportName.set) { - assert.equal(desc.set, mod[exportName.set], `Ember.${path} setter is exported correctly`); - assert.notEqual(desc.set, undefined, `Ember.${path} setter is not undefined`); + if (exportName.set) { + assert.equal(desc.set, mod[exportName.set], `Ember.${path} setter is exported correctly`); + assert.notEqual(desc.set, undefined, `Ember.${path} setter is not undefined`); + } } + } catch (error) { + assert.pushResult({ + result: false, + message: `An error occured while testing ${path} is exported from ${moduleId}.`, + source: error, + }); } }