Merge pull request #7528 from backstage/rugvip/root-tests

cli: allow __dirname usage in backend tests and fix test runs from root
This commit is contained in:
Patrik Oldsberg
2021-10-12 10:51:56 +02:00
committed by GitHub
17 changed files with 73 additions and 105 deletions
+11 -6
View File
@@ -14,6 +14,15 @@
* limitations under the License.
*/
const globalRestrictedSyntax = [
{
message:
'Default import from winston is not allowed, import `* as winston` instead.',
selector:
'ImportDeclaration[source.value="winston"] ImportDefaultSpecifier',
},
];
module.exports = {
extends: [
'@spotify/eslint-config-base',
@@ -69,17 +78,12 @@ module.exports = {
// Avoid default import from winston as it breaks at runtime
'no-restricted-syntax': [
'error',
{
message:
'Default import from winston is not allowed, import `* as winston` instead.',
selector:
'ImportDeclaration[source.value="winston"] ImportDefaultSpecifier',
},
{
message:
"`__dirname` doesn't refer to the same dir in production builds, try `resolvePackagePath()` from `@backstage/backend-common` instead.",
selector: 'Identifier[name="__dirname"]',
},
...globalRestrictedSyntax,
],
},
overrides: [
@@ -103,6 +107,7 @@ module.exports = {
bundledDependencies: true,
},
],
'no-restricted-syntax': ['error', ...globalRestrictedSyntax],
},
},
],
+3 -2
View File
@@ -18,7 +18,7 @@ const fs = require('fs-extra');
const path = require('path');
const glob = require('util').promisify(require('glob'));
async function getProjectConfig(targetPath) {
async function getProjectConfig(targetPath, displayName) {
const configJsPath = path.resolve(targetPath, 'jest.config.js');
const configTsPath = path.resolve(targetPath, 'jest.config.ts');
// If the package has it's own jest config, we use that instead.
@@ -73,6 +73,7 @@ async function getProjectConfig(targetPath) {
const transformModulePattern = transformModules && `(?!${transformModules})`;
const options = {
displayName,
rootDir: path.resolve(targetPath, 'src'),
coverageDirectory: path.resolve(targetPath, 'coverage'),
collectCoverageFrom: ['**/*.{js,jsx,ts,tsx}', '!**/*.d.ts'],
@@ -143,7 +144,7 @@ async function getRootConfig() {
const packageData = await fs.readJson(packagePath);
const testScript = packageData.scripts && packageData.scripts.test;
if (testScript && testScript.includes('backstage-cli test')) {
return await getProjectConfig(projectPath);
return await getProjectConfig(projectPath, packageData.name);
}
return undefined;