Skip to content

Commit 8a9bfd8

Browse files
authored
fix: project root resolution (#560)
1 parent 9fcaf6d commit 8a9bfd8

File tree

2 files changed

+25
-5
lines changed

2 files changed

+25
-5
lines changed

packages/context/src/utils/project.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,15 @@ export async function getProjectRoot(
4343
let projectRoot: string | undefined;
4444
try {
4545
projectRoot = await findProjectRoot(documentPath, true);
46-
if (!projectRoot) {
47-
projectRoot = await findProjectRoot(documentPath, false);
48-
}
46+
} catch (error) {
47+
getLogger().debug("getProjectRoot failed:", error);
48+
projectRoot = undefined;
49+
}
50+
if (projectRoot !== undefined) {
51+
return projectRoot;
52+
}
53+
try {
54+
projectRoot = await findProjectRoot(documentPath, false);
4955
} catch (error) {
5056
getLogger().debug("getProjectRoot failed:", error);
5157
projectRoot = undefined;

packages/context/test/utils/project-spec.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { expect } from "chai";
22
import { join } from "path";
3+
import { homedir } from "os";
34
import {
45
findAppRoot,
56
getLocalAnnotationsForService,
@@ -31,8 +32,8 @@ describe("project", () => {
3132
testFramework = new TestFramework(useConfig);
3233
});
3334
context("getProjectRoot", () => {
34-
it("throws exception and return undefined", async () => {
35-
const result = await getProjectRoot(__dirname);
35+
it("return undefined when no package.json is found", async () => {
36+
const result = await getProjectRoot(homedir());
3637
expect(result).to.be.undefined;
3738
});
3839
it("return project root ", async () => {
@@ -42,6 +43,19 @@ describe("project", () => {
4243
const result = await getProjectRoot(docPath);
4344
expect(result).to.equal(projectRoot);
4445
});
46+
it("free style project", async () => {
47+
const framework = new TestFramework({
48+
projectInfo: {
49+
name: ProjectName.tsFreeStyle,
50+
type: ProjectType.UI5,
51+
npmInstall: false,
52+
},
53+
});
54+
const projectRoot = framework.getProjectRoot();
55+
const documentPath = join(projectRoot, "src", "view", "Main.view.xml");
56+
const result = await getProjectRoot(documentPath);
57+
expect(result).to.equal(projectRoot);
58+
});
4559
});
4660
context("getProjectInfo", () => {
4761
it("undefined", async () => {

0 commit comments

Comments
 (0)