mirror of
https://github.com/CommunitySolidServer/CommunitySolidServer.git
synced 2024-10-03 14:55:10 +00:00

The previous package was outdated, preventing us from updating TS. This one also lints YAML and JSON, and applies many more rules to the test files, explaining all the changes in this PR.
78 lines
2.1 KiB
JavaScript
78 lines
2.1 KiB
JavaScript
const os = require('os');
|
|
const v8 = require('v8');
|
|
|
|
// Several parts inspired by https://github.com/renovatebot/renovate/blob/main/package.json
|
|
|
|
const ci = !!process.env.CI;
|
|
|
|
const cpus = os.cpus();
|
|
const mem = os.totalmem();
|
|
const stats = v8.getHeapStatistics();
|
|
|
|
if (ci) {
|
|
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
|
|
`);
|
|
}
|
|
|
|
// See also https://github.com/jestjs/jest/issues/11956
|
|
function jestGithubRunnerSpecs() {
|
|
return {
|
|
maxWorkers: cpus.length,
|
|
workerIdleMemoryLimit: '1500MB',
|
|
};
|
|
}
|
|
|
|
// ESM libraries that need to be transformed so Jest can handle them
|
|
const esModules = [
|
|
'oidc-provider',
|
|
'nanoid',
|
|
'got',
|
|
'quick-lru',
|
|
'@sindresorhus/is',
|
|
'p-cancelable',
|
|
'@szmarczak/http-timer',
|
|
'cacheable-request',
|
|
'normalize-url',
|
|
'responselike',
|
|
'lowercase-keys',
|
|
'mimic-response',
|
|
'form-data-encoder',
|
|
'cacheable-lookup',
|
|
];
|
|
|
|
module.exports = {
|
|
transform: {
|
|
'^.+\\.ts$': [ 'ts-jest', {
|
|
tsconfig: '<rootDir>/test/tsconfig.json',
|
|
diagnostics: false,
|
|
isolatedModules: true,
|
|
}],
|
|
// This transformer converts ESM packages to CJS
|
|
'^.+node_modules.+\\.js$': 'jest-esm-transformer-2',
|
|
},
|
|
// By default, node_modules are not transformed, but we want to transform the ESM packages
|
|
transformIgnorePatterns: [ `/node_modules/(?!(${esModules.join('|')})/)` ],
|
|
testRegex: '/test/(unit|integration)/.*\\.test\\.ts$',
|
|
moduleFileExtensions: [
|
|
'ts',
|
|
'js',
|
|
],
|
|
testEnvironment: 'node',
|
|
globalSetup: '<rootDir>/test/util/SetupTests.ts',
|
|
globalTeardown: '<rootDir>/test/util/TeardownTests.ts',
|
|
setupFilesAfterEnv: [ 'jest-rdf' ],
|
|
collectCoverage: false,
|
|
// See https://github.com/matthieubosquet/ts-dpop/issues/13
|
|
moduleNameMapper: {
|
|
'^jose/(.*)$': '<rootDir>/node_modules/jose/dist/node/cjs/$1',
|
|
},
|
|
// Slower machines had problems calling the WebSocket integration callbacks on time
|
|
testTimeout: 60000,
|
|
|
|
reporters: ci ? [ 'default', 'github-actions' ] : [ 'default' ],
|
|
...ci && jestGithubRunnerSpecs(),
|
|
};
|