@stryker-mutator/core
Version:
The extendable JavaScript mutation testing framework
131 lines • 3.59 kB
JavaScript
import sinon from 'sinon';
import { ReplaySubject } from 'rxjs';
export function mock(constructorFn) {
return sinon.createStubInstance(constructorFn);
}
export function createFileSystemMock() {
return {
copyFile: sinon.stub(),
readFile: sinon.stub(),
dispose: sinon.stub(),
mkdir: sinon.stub(),
writeFile: sinon.stub(),
readdir: sinon.stub(),
};
}
/**
* Use this factory method to create deep test data
* */
function factoryMethod(defaultsFactory) {
return (overrides) => Object.assign({}, defaultsFactory(), overrides);
}
export const createClearTextReporterOptions = factoryMethod(() => ({
allowColor: true,
allowEmojis: false,
logTests: true,
maxTestsToLog: 3,
reportTests: true,
reportMutants: true,
reportScoreTable: true,
}));
export function createConcurrencyTokenProviderMock() {
return {
checkerToken$: new ReplaySubject(),
testRunnerToken$: new ReplaySubject(),
dispose: sinon.stub(),
freeCheckers: sinon.stub(),
};
}
export function createTestRunnerPoolMock() {
return {
dispose: sinon.stub(),
init: sinon.stub(),
schedule: sinon.stub(),
};
}
export function createCheckerPoolMock() {
return {
dispose: sinon.stub(),
init: sinon.stub(),
schedule: sinon.stub(),
};
}
export const logger = () => {
return {
category: 'foo-category',
_log: sinon.stub(),
addContext: sinon.stub(),
clearContext: sinon.stub(),
debug: sinon.stub(),
error: sinon.stub(),
fatal: sinon.stub(),
info: sinon.stub(),
isDebugEnabled: sinon.stub(),
isErrorEnabled: sinon.stub(),
isFatalEnabled: sinon.stub(),
isInfoEnabled: sinon.stub(),
isLevelEnabled: sinon.stub(),
isTraceEnabled: sinon.stub(),
isWarnEnabled: sinon.stub(),
level: 'level',
log: sinon.stub(),
mark: sinon.stub(),
removeContext: sinon.stub(),
setParseCallStackFunction: sinon.stub(),
trace: sinon.stub(),
warn: sinon.stub(),
};
};
export function createCpuInfo(overrides) {
return {
model: 'x86',
speed: 20000,
times: {
user: 0,
nice: 0,
sys: 0,
idle: 0,
irq: 0,
},
...overrides,
};
}
export function serializeTSConfig(content) {
return JSON.stringify(content, null, 2);
}
export function createDirent(overrides) {
const { name, isDirectory } = {
name: 'foo',
isDirectory: true,
...overrides,
};
const dummy = () => true;
return {
isBlockDevice: dummy,
isCharacterDevice: dummy,
isDirectory: () => isDirectory,
isFIFO: dummy,
isFile: () => !isDirectory,
isSocket: dummy,
isSymbolicLink: dummy,
path: 'foo',
name,
};
}
export function createMutant(overrides) {
return {
fileName: 'foo.js',
id: '1',
location: { start: { line: 1, column: 2 }, end: { line: 3, column: 3 } },
mutatorName: 'fooMutator',
replacement: 'foo',
...overrides,
};
}
export function loc(startLine, startColumn, endLine, endColumn) {
return { start: pos(startLine, startColumn), end: endLine === undefined ? undefined : pos(endLine, endColumn !== null && endColumn !== void 0 ? endColumn : 0) };
}
export function pos(line, column) {
return { line, column };
}
//# sourceMappingURL=producers.js.map