feat: Enable the python module in virtual envs (#584)

This will enable the python module when a virtual environment has been
activated, this is detected via the `VIRTUAL_ENV` env var.
This commit is contained in:
Thomas O'Donnell 2019-11-02 12:10:21 +01:00 committed by Matan Kushner
parent fa1267f12f
commit 42f6868e3f
3 changed files with 21 additions and 1 deletions

View File

@ -831,6 +831,7 @@ The module will be shown if any of the following conditions are met:
- The current directory contains a file with the `.py` extension - The current directory contains a file with the `.py` extension
- The current directory contains a `Pipfile` file - The current directory contains a `Pipfile` file
- The current directory contains a `tox.ini` file - The current directory contains a `tox.ini` file
- A virtual environment is currently activated
### Options ### Options

View File

@ -27,7 +27,9 @@ pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> {
.set_extensions(&["py"]) .set_extensions(&["py"])
.is_match(); .is_match();
if !is_py_project { let is_venv = env::var("VIRTUAL_ENV").ok().is_some();
if !is_py_project && !is_venv {
return None; return None;
} }

View File

@ -124,3 +124,20 @@ fn with_virtual_env() -> io::Result<()> {
assert_eq!(expected, actual); assert_eq!(expected, actual);
Ok(()) Ok(())
} }
#[test]
#[ignore]
fn with_active_venv() -> io::Result<()> {
let dir = tempfile::tempdir()?;
let output = common::render_module("python")
.env("VIRTUAL_ENV", "/foo/bar/my_venv")
.arg("--path")
.arg(dir.path())
.output()?;
let actual = String::from_utf8(output.stdout).unwrap();
let expected = format!("via {} ", Color::Yellow.bold().paint("🐍 v3.7.4 (my_venv)"));
assert_eq!(expected, actual);
Ok(())
}