Commit 387ca89
committed
fix(terminal): delegate shell detection to vscode.env.shell (#321)
Replace manual VS Code config parsing and allowlist validation in shell.ts
with vscode.env.shell, the API VS Code provides for extension shell
detection since version 1.37.
- shell.ts: remove SHELL_ALLOWLIST (~95 entries) and manual config parsing
functions (getWindowsShellFromVSCode, getMacShellFromVSCode,
getLinuxShellFromVSCode). getShell() reads vscode.env.shell directly,
falling back through os.userInfo(), COMSPEC/SHELL environment variables,
and platform defaults. Remove getShellFallbackOccurred().
- Terminal.ts: construct terminal without explicit shellPath when the user
has not set execaShellPath or configured WSL, letting VS Code's profile
system determine the shell. When execaShellPath is set, pass it explicitly.
For WSL, omit shellPath so VS Code uses its WSL profile for shell
integration. Start the shell-integration-ready promise in the constructor.
- TerminalProcess.ts: remove the getShellFallbackOccurred check that
previously guarded against mismatch between the terminal's shell and the
detected shell. After the shell.ts refactoring, both paths use the same
VS Code resolution. When shell integration is unavailable, emit
no_shell_integration without calling sendText first.
In the stream processing path, treat missing OSC 633/133 markers as
complete output instead of an error.
- ExecaTerminalProcess.ts: use BaseTerminal.getExecaShellPath() || getShell()
to match Terminal's shell resolution. When the shell is wsl.exe, spawn it
directly with array arguments instead of wrapping through a shell.
- tests: update shell.spec.ts for the new getShell() fallback chain. Update
terminal test files to mock vscode.env.shell instead of stubbing getShell().
Extend vscode.js mock with onDidChangeTerminalShellIntegration event and
env.shell. Update TerminalProcess.spec.ts to verify sendText is not called
before no_shell_integration (preventing double execution). Update
TerminalRegistry.spec.ts to drop the getShell spy and shellPath assertions
now that Terminal no longer passes an explicit shellPath by default. Add
WSL direct-spawn test in ExecaTerminalProcess.spec.ts.
Fixes #3211 parent 3ed991e commit 387ca89
13 files changed
Lines changed: 394 additions & 728 deletions
File tree
- src
- __mocks__
- integrations/terminal
- __tests__
- utils
- __tests__
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
81 | 81 | | |
82 | 82 | | |
83 | 83 | | |
| 84 | + | |
84 | 85 | | |
85 | 86 | | |
86 | 87 | | |
| |||
104 | 105 | | |
105 | 106 | | |
106 | 107 | | |
| 108 | + | |
107 | 109 | | |
108 | 110 | | |
109 | 111 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
| 8 | + | |
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | | - | |
44 | | - | |
45 | | - | |
46 | | - | |
47 | | - | |
48 | | - | |
49 | | - | |
50 | | - | |
51 | | - | |
52 | | - | |
53 | | - | |
54 | | - | |
55 | | - | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
56 | 89 | | |
57 | 90 | | |
58 | 91 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
3 | 2 | | |
4 | 3 | | |
5 | 4 | | |
6 | 5 | | |
7 | 6 | | |
8 | 7 | | |
9 | | - | |
| 8 | + | |
10 | 9 | | |
11 | 10 | | |
12 | 11 | | |
13 | 12 | | |
14 | 13 | | |
15 | 14 | | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
16 | 20 | | |
17 | 21 | | |
18 | 22 | | |
19 | 23 | | |
20 | 24 | | |
21 | | - | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
22 | 40 | | |
23 | 41 | | |
24 | 42 | | |
25 | 43 | | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
26 | 100 | | |
27 | 101 | | |
28 | 102 | | |
| |||
61 | 135 | | |
62 | 136 | | |
63 | 137 | | |
64 | | - | |
65 | 138 | | |
66 | 139 | | |
67 | 140 | | |
68 | 141 | | |
69 | 142 | | |
70 | 143 | | |
71 | | - | |
72 | | - | |
73 | | - | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
74 | 149 | | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | | - | |
83 | | - | |
84 | | - | |
85 | | - | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | 150 | | |
94 | 151 | | |
95 | 152 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
3 | | - | |
4 | 2 | | |
5 | 3 | | |
6 | 4 | | |
7 | | - | |
8 | 5 | | |
9 | 6 | | |
10 | 7 | | |
| |||
56 | 53 | | |
57 | 54 | | |
58 | 55 | | |
59 | | - | |
60 | | - | |
61 | 56 | | |
62 | | - | |
| 57 | + | |
| 58 | + | |
63 | 59 | | |
64 | 60 | | |
65 | 61 | | |
66 | 62 | | |
67 | | - | |
| 63 | + | |
68 | 64 | | |
69 | 65 | | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | 66 | | |
77 | 67 | | |
78 | 68 | | |
| |||
82 | 72 | | |
83 | 73 | | |
84 | 74 | | |
85 | | - | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
90 | 79 | | |
91 | 80 | | |
92 | 81 | | |
| |||
221 | 210 | | |
222 | 211 | | |
223 | 212 | | |
224 | | - | |
225 | | - | |
226 | | - | |
227 | | - | |
228 | | - | |
229 | | - | |
230 | | - | |
231 | | - | |
232 | | - | |
233 | | - | |
234 | | - | |
235 | | - | |
236 | | - | |
237 | | - | |
238 | | - | |
239 | | - | |
240 | | - | |
241 | | - | |
242 | | - | |
243 | | - | |
244 | | - | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
245 | 223 | | |
246 | 224 | | |
247 | 225 | | |
| |||
0 commit comments