var firstTime = true;
return extend(function () {
+ if (hooks.deprecationHandler != null) {
+ hooks.deprecationHandler(null, msg);
+ }
if (firstTime) {
warn(msg + '\nArguments: ' + Array.prototype.slice.call(arguments).join(', ') + '\n' + (new Error()).stack);
firstTime = false;
var deprecations = {};
export function deprecateSimple(name, msg) {
+ if (hooks.deprecationHandler != null) {
+ hooks.deprecationHandler(name, msg);
+ }
if (!deprecations[name]) {
warn(msg);
deprecations[name] = true;
}
hooks.suppressDeprecationWarnings = false;
+hooks.deprecationHandler = null;
--- /dev/null
+import each from './each';
+
+export function setupDeprecationHandler(test, moment, scope) {
+ test._expectedDeprecations = null;
+ test._observedDeprecations = null;
+ test._oldSupress = moment.suppressDeprecationWarnings;
+ moment.suppressDeprecationWarnings = true;
+ test.expectedDeprecations = function () {
+ test._expectedDeprecations = arguments;
+ test._observedDeprecations = [];
+ };
+ moment.deprecationHandler = function (name, msg) {
+ var deprecationId = matchedDeprecation(name, msg, test._expectedDeprecations);
+ if (deprecationId === -1) {
+ throw new Error('Unexpected deprecation thrown name=' +
+ name + ' msg=' + msg);
+ }
+ test._observedDeprecations[deprecationId] = 1;
+ };
+}
+
+export function teardownDeprecationHandler(test, moment, scope) {
+ moment.suppressDeprecationWarnings = test._oldSupress;
+
+ if (test._expectedDeprecations != null) {
+ var missedDeprecations = [];
+ each(test._expectedDeprecations, function (deprecationPattern, id) {
+ if (test._observedDeprecations[id] !== 1) {
+ missedDeprecations.push(deprecationPattern);
+ }
+ });
+ if (missedDeprecations.length !== 0) {
+ throw new Error('Expected deprecation warnings did not happen: ' +
+ missedDeprecations.join(' '));
+ }
+ }
+}
+
+function matchedDeprecation(name, msg, deprecations) {
+ if (deprecations == null) {
+ return -1;
+ }
+ for (var i = 0; i < deprecations.length; ++i) {
+ if (name != null && name === deprecations[i]) {
+ return i;
+ }
+ if (msg != null && msg.substring(0, deprecations[i].length) === deprecations[i]) {
+ return i;
+ }
+ }
+ return -1;
+}
import moment from '../moment';
import { defineCommonLocaleTests } from './helpers/common-locale';
+import { setupDeprecationHandler, teardownDeprecationHandler } from './helpers/deprecation-handler';
export var test = QUnit.test;
moment.createFromInputFallback = function (config) {
throw new Error('input not handled by moment: ' + config._i);
};
+ setupDeprecationHandler(test, moment, 'core');
if (lifecycle && lifecycle.setup) {
lifecycle.setup();
}
},
teardown : function () {
+ teardownDeprecationHandler(test, moment, 'core');
if (lifecycle && lifecycle.teardown) {
lifecycle.teardown();
}
moment.createFromInputFallback = function (config) {
throw new Error('input not handled by moment: ' + config._i);
};
+ setupDeprecationHandler(test, moment, 'locale');
if (lifecycle && lifecycle.setup) {
lifecycle.setup();
}
},
teardown : function () {
moment.locale('en');
+ teardownDeprecationHandler(test, moment, 'locale');
if (lifecycle && lifecycle.teardown) {
lifecycle.teardown();
}