@stryker-mutator/core
Version:
The extendable JavaScript mutation testing framework
69 lines (59 loc) • 1.51 kB
text/typescript
import { propertyPath } from '@stryker-mutator/util';
import { StrykerOptions, schema } from '@stryker-mutator/api/core';
import emojiRegex from 'emoji-regex';
const emojiRe = emojiRegex();
export function wrapInClosure(codeFragment: string): string {
return `
(function (window) {
${codeFragment}
})((Function('return this'))());`;
}
export function padLeft(input: string): string {
return input
.split('\n')
.map((str) => '\t' + str)
.join('\n');
}
export function plural(items: number): string {
if (items > 1) {
return 's';
} else {
return '';
}
}
export function serialize(thing: unknown): string {
return JSON.stringify(thing);
}
export function deserialize<T>(stringified: string): T {
return JSON.parse(stringified);
}
export function getEmojiForStatus(status: schema.MutantStatus): string {
switch (status) {
case 'Killed':
return '✅';
case 'NoCoverage':
return '🙈';
case 'Ignored':
return '🤥';
case 'Survived':
return '👽';
case 'Timeout':
return '⏰';
case 'Pending':
return '⌛';
case 'RuntimeError':
case 'CompileError':
return '💥';
}
}
export function stringWidth(input: string): number {
let { length } = input;
for (const match of input.matchAll(emojiRe)) {
length = length - match[0].length + 2;
}
return length;
}
/**
* Print the name of (or path to) a stryker option
*/
export const optionsPath = propertyPath<StrykerOptions>();