Browse Source

Safer profile path check

Matt Rubens 1 year ago
parent
commit
d145039d72
3 changed files with 12 additions and 1 deletions
  1. 5 0
      .changeset/heavy-feet-judge.md
  2. 6 0
      src/utils/__tests__/shell.test.ts
  3. 1 1
      src/utils/shell.ts

+ 5 - 0
.changeset/heavy-feet-judge.md

@@ -0,0 +1,5 @@
+---
+"roo-cline": patch
+---
+
+Safer shell profile path check

+ 6 - 0
src/utils/__tests__/shell.test.ts

@@ -97,6 +97,12 @@ describe("Shell Detection Tests", () => {
 			expect(getShell()).toBe("C:\\Windows\\System32\\cmd.exe")
 			expect(getShell()).toBe("C:\\Windows\\System32\\cmd.exe")
 		})
 		})
 
 
+		it("handles undefined profile gracefully", () => {
+			// Mock a case where defaultProfileName exists but the profile doesn't
+			mockVsCodeConfig("windows", "NonexistentProfile", {})
+			expect(getShell()).toBe("C:\\Windows\\System32\\cmd.exe")
+		})
+
 		it("respects userInfo() if no VS Code config is available", () => {
 		it("respects userInfo() if no VS Code config is available", () => {
 			vscode.workspace.getConfiguration = () => ({ get: () => undefined }) as any
 			vscode.workspace.getConfiguration = () => ({ get: () => undefined }) as any
 			;(userInfo as any) = () => ({ shell: "C:\\Custom\\PowerShell.exe" })
 			;(userInfo as any) = () => ({ shell: "C:\\Custom\\PowerShell.exe" })

+ 1 - 1
src/utils/shell.ts

@@ -105,7 +105,7 @@ function getWindowsShellFromVSCode(): string | null {
 	}
 	}
 
 
 	// If there's a specific path, return that immediately
 	// If there's a specific path, return that immediately
-	if (profile.path) {
+	if (profile?.path) {
 		return profile.path
 		return profile.path
 	}
 	}