mirror of
https://github.com/astral-sh/ruff.git
synced 2025-10-01 14:21:24 +00:00
[red-knot] Allow setting python
in mdtests (#17221)
## Summary
This PR extends the mdtest options to allow setting the
`environment.python` option.
## Test Plan
I let @AlexWaygood write a test and he'll tell me if it works 😆
This commit is contained in:
parent
172af7b4b0
commit
1c652e6b98
2 changed files with 29 additions and 18 deletions
|
@ -33,25 +33,23 @@ impl MarkdownTestConfig {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn python_version(&self) -> Option<PythonVersion> {
|
pub(crate) fn python_version(&self) -> Option<PythonVersion> {
|
||||||
self.environment.as_ref().and_then(|env| env.python_version)
|
self.environment.as_ref()?.python_version
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn python_platform(&self) -> Option<PythonPlatform> {
|
pub(crate) fn python_platform(&self) -> Option<PythonPlatform> {
|
||||||
self.environment
|
self.environment.as_ref()?.python_platform.clone()
|
||||||
.as_ref()
|
|
||||||
.and_then(|env| env.python_platform.clone())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn typeshed(&self) -> Option<&SystemPath> {
|
pub(crate) fn typeshed(&self) -> Option<&SystemPath> {
|
||||||
self.environment
|
self.environment.as_ref()?.typeshed.as_deref()
|
||||||
.as_ref()
|
|
||||||
.and_then(|env| env.typeshed.as_deref())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn extra_paths(&self) -> Option<&[SystemPathBuf]> {
|
pub(crate) fn extra_paths(&self) -> Option<&[SystemPathBuf]> {
|
||||||
self.environment
|
self.environment.as_ref()?.extra_paths.as_deref()
|
||||||
.as_ref()
|
}
|
||||||
.and_then(|env| env.extra_paths.as_deref())
|
|
||||||
|
pub(crate) fn python(&self) -> Option<&SystemPath> {
|
||||||
|
self.environment.as_ref()?.python.as_deref()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,6 +67,15 @@ pub(crate) struct Environment {
|
||||||
|
|
||||||
/// Additional search paths to consider when resolving modules.
|
/// Additional search paths to consider when resolving modules.
|
||||||
pub(crate) extra_paths: Option<Vec<SystemPathBuf>>,
|
pub(crate) extra_paths: Option<Vec<SystemPathBuf>>,
|
||||||
|
|
||||||
|
/// Path to the Python installation from which Red Knot resolves type information and third-party dependencies.
|
||||||
|
///
|
||||||
|
/// Red Knot will search in the path's `site-packages` directories for type information and
|
||||||
|
/// third-party imports.
|
||||||
|
///
|
||||||
|
/// This option is commonly used to specify the path to a virtual environment.
|
||||||
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
pub python: Option<SystemPathBuf>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Debug, Clone)]
|
#[derive(Deserialize, Debug, Clone)]
|
||||||
|
|
|
@ -221,18 +221,22 @@ fn run_test(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let configuration = test.configuration();
|
||||||
|
|
||||||
let settings = ProgramSettings {
|
let settings = ProgramSettings {
|
||||||
python_version: test.configuration().python_version().unwrap_or_default(),
|
python_version: configuration.python_version().unwrap_or_default(),
|
||||||
python_platform: test.configuration().python_platform().unwrap_or_default(),
|
python_platform: configuration.python_platform().unwrap_or_default(),
|
||||||
search_paths: SearchPathSettings {
|
search_paths: SearchPathSettings {
|
||||||
src_roots: vec![src_path],
|
src_roots: vec![src_path],
|
||||||
extra_paths: test
|
extra_paths: configuration.extra_paths().unwrap_or_default().to_vec(),
|
||||||
.configuration()
|
|
||||||
.extra_paths()
|
|
||||||
.unwrap_or_default()
|
|
||||||
.to_vec(),
|
|
||||||
custom_typeshed: custom_typeshed_path.map(SystemPath::to_path_buf),
|
custom_typeshed: custom_typeshed_path.map(SystemPath::to_path_buf),
|
||||||
python_path: PythonPath::KnownSitePackages(vec![]),
|
python_path: PythonPath::KnownSitePackages(
|
||||||
|
configuration
|
||||||
|
.python()
|
||||||
|
.into_iter()
|
||||||
|
.map(SystemPath::to_path_buf)
|
||||||
|
.collect(),
|
||||||
|
),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue