etherpad-lite/src/tests/backend/assert-legacy.js

48 lines
1.2 KiB
JavaScript

'use strict';
// support for older node versions (<12)
const assert = require('assert');
const internalMatch = (string, regexp, message, fn) => {
if (!regexp.test) {
throw new Error('regexp parameter is not a RegExp');
}
if (typeof string !== 'string') {
throw new Error('string parameter is not a string');
}
const match = fn.name === 'match';
const result = string.match(regexp);
if (match && !result) {
if (message) {
throw message;
} else {
throw new Error(`${string} does not match regex ${regexp}`);
}
}
if (!match && result) {
if (message) {
throw message;
} else {
throw new Error(`${string} does match regex ${regexp}`);
}
}
};
if (!assert.match) {
const match = (string, regexp, message) => {
internalMatch(string, regexp, message, match);
};
assert.match = match;
}
if (!assert.strict.match) assert.strict.match = assert.match;
if (!assert.doesNotMatch) {
const doesNotMatch = (string, regexp, message) => {
internalMatch(string, regexp, message, doesNotMatch);
};
assert.doesNotMatch = doesNotMatch;
}
if (!assert.strict.doesNotMatch) assert.strict.doesNotMatch = assert.doesNotMatch;
module.exports = assert;