Files
ale/test/test_python_virtualenv.vader
Robert Muir 5b2e69ae61 fix ale_python_auto_virtualenv to correctly set virtualenv env vars (#4885)
* fix ale_python_auto_virtualenv to correctly set virtualenv env vars

According to the documentation, `ale_python_auto_virtualenv` should automatically set environment variables for commands, but previously the variables were not set completely or correctly.

Before:
  `PATH` variable was expanded to include `/path/to/venv`
After:
  `PATH` variable is expanded to include `/path/to/venv/bin`
  `VIRTUAL_ENV` variable is set to `path/to/venv`

This mimics exactly what the `activate` scripts do, and allows the configuration knob to work as expected.

For example, after this change, `jedi-language-server` can be installed globally (instead of inside every venv), and it will "just work" (e.g. find references to dependencies in the venv) when editing a file in a project that uses a venv, because the correct variables are set.

* fix test_python_virtualenv.vader test to expect output with both virtualenv vars

* remove unnecessary non-escape in test_python_virtualenv.vader

* fix accidentally removed space in windows test_python_virtualenv.vader
2024-12-29 13:35:28 +09:00

24 lines
736 B
Plaintext

Before:
Save $VIRTUAL_ENV
let $VIRTUAL_ENV = "/opt/example/"
After:
Restore
Execute(ale#python#FindVirtualenv falls back to $VIRTUAL_ENV when no directories match):
AssertEqual
\ ale#python#FindVirtualenv(bufnr('%')),
\ '/opt/example/',
\ 'Expected VIRTUAL_ENV environment variable to be used, but it was not'
Execute(ale#python#AutoVirtualenvEnvString should return the correct values):
if has('win32')
AssertEqual
\ 'set PATH=/opt/example/\Scripts;%PATH% && set VIRTUAL_ENV=/opt/example/ && ',
\ ale#python#AutoVirtualenvEnvString(bufnr(''))
else
AssertEqual
\ 'PATH=''/opt/example//bin''":$PATH" VIRTUAL_ENV=''/opt/example/'' ',
\ ale#python#AutoVirtualenvEnvString(bufnr(''))
endif