mirror of
https://github.com/renovatebot/renovate.git
synced 2025-01-11 14:36:25 +00:00
94 lines
2.4 KiB
TypeScript
94 lines
2.4 KiB
TypeScript
import os from 'os';
|
|
import v8 from 'v8';
|
|
import type { InitialOptionsTsJest } from 'ts-jest/dist/types';
|
|
|
|
const ci = !!process.env.CI;
|
|
|
|
type JestConfig = InitialOptionsTsJest & {
|
|
// https://github.com/renovatebot/renovate/issues/17034
|
|
workerIdleMemoryLimit?: string;
|
|
};
|
|
|
|
const cpus = os.cpus();
|
|
const mem = os.totalmem();
|
|
const stats = v8.getHeapStatistics();
|
|
|
|
process.stderr.write(`Host stats:
|
|
Cpus: ${cpus.length}
|
|
Memory: ${(mem / 1024 / 1024 / 1024).toFixed(2)} GB
|
|
HeapLimit: ${(stats.heap_size_limit / 1024 / 1024 / 1024).toFixed(2)} GB
|
|
`);
|
|
|
|
/**
|
|
* https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources
|
|
* Currently it seems the runner only have 4GB
|
|
*/
|
|
function jestGithubRunnerSpecs(): JestConfig {
|
|
// if (os.platform() === 'darwin') {
|
|
// return {
|
|
// maxWorkers: 2,
|
|
// workerIdleMemoryLimit: '4GB',
|
|
// };
|
|
// }
|
|
|
|
return {
|
|
maxWorkers: cpus.length,
|
|
workerIdleMemoryLimit: '1500MB', // '2GB',
|
|
};
|
|
}
|
|
|
|
const config: JestConfig = {
|
|
cacheDirectory: '.cache/jest',
|
|
clearMocks: true,
|
|
coverageDirectory: './coverage',
|
|
collectCoverage: true,
|
|
collectCoverageFrom: [
|
|
'lib/**/*.{js,ts}',
|
|
'!lib/**/*.{d,spec}.ts',
|
|
'!lib/**/{__fixtures__,__mocks__,__testutil__,test}/**/*.{js,ts}',
|
|
'!lib/**/types.ts',
|
|
],
|
|
coverageReporters: ci
|
|
? ['html', 'json', 'text-summary']
|
|
: ['html', 'text-summary'],
|
|
coverageThreshold: {
|
|
global: {
|
|
branches: 98,
|
|
functions: 100,
|
|
lines: 100,
|
|
statements: 100,
|
|
},
|
|
},
|
|
transform: {
|
|
'\\.ts$': [
|
|
'ts-jest',
|
|
{
|
|
tsconfig: '<rootDir>/tsconfig.spec.json',
|
|
diagnostics: false,
|
|
isolatedModules: true,
|
|
},
|
|
],
|
|
},
|
|
modulePathIgnorePatterns: [
|
|
'<rootDir>/dist/',
|
|
'/__fixtures__/',
|
|
'/__mocks__/',
|
|
],
|
|
reporters: ci ? ['default', 'github-actions'] : ['default'],
|
|
setupFilesAfterEnv: [
|
|
'jest-extended/all',
|
|
'expect-more-jest',
|
|
'<rootDir>/test/setup.ts',
|
|
'<rootDir>/test/to-migrate.ts',
|
|
],
|
|
snapshotSerializers: ['<rootDir>/test/newline-snapshot-serializer.ts'],
|
|
testEnvironment: 'node',
|
|
testRunner: 'jest-circus/runner',
|
|
watchPathIgnorePatterns: ['<rootDir>/.cache/', '<rootDir>/coverage/'],
|
|
// We can play with that value later for best dev experience
|
|
workerIdleMemoryLimit: '500MB',
|
|
// add github runner specific limits
|
|
...(ci && jestGithubRunnerSpecs()),
|
|
};
|
|
|
|
export default config;
|