Skip to content

Commit bfa8e91

Browse files
authored
feat: allow tests to run on monorepos (#5547)
1 parent 0be8aca commit bfa8e91

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

lib/services/karma-execution.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ import * as path from "path";
22

33
process.on("message", (data: any) => {
44
if (data.karmaConfig) {
5-
const pathToKarma = path.join(
6-
data.karmaConfig.projectDir,
7-
"node_modules/karma"
5+
const pathToKarma = path.dirname(
6+
require.resolve("karma/package.json", {
7+
paths: [data.karmaConfig.projectDir],
8+
})
89
);
910
const KarmaServer = require(path.join(pathToKarma, "lib/server"));
1011
const karma = new KarmaServer(data.karmaConfig, (exitCode: number) => {

lib/services/test-execution-service.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -139,13 +139,20 @@ export class TestExecutionService implements ITestExecutionService {
139139
projectData: IProjectData
140140
): Promise<boolean> {
141141
let canStartKarmaServer = true;
142-
const requiredDependencies = ["karma", "@nativescript/unit-test-runner"];
142+
const requiredDependencies = ["@nativescript/unit-test-runner"]; // we need @nativescript/unit-test-runner at the local level because of hooks!
143143
_.each(requiredDependencies, (dep) => {
144144
if (!projectData.dependencies[dep] && !projectData.devDependencies[dep]) {
145145
canStartKarmaServer = false;
146146
return;
147147
}
148148
});
149+
try {
150+
require.resolve("karma/package.json", {
151+
paths: [projectData.projectDir],
152+
});
153+
} catch (ignore) {
154+
canStartKarmaServer = false;
155+
}
149156

150157
return canStartKarmaServer;
151158
}

0 commit comments

Comments
 (0)