-
-
Notifications
You must be signed in to change notification settings - Fork 468
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: ignore workspace root when running pytest #858
base: main
Are you sure you want to change the base?
Conversation
@@ -23,7 +23,7 @@ pub struct Args { | |||
#[arg(short, long)] | |||
all: bool, | |||
/// Perform the operation on a specific package | |||
#[arg(short, long)] | |||
#[arg(short, long, conflicts_with = "all")] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not necessary but I think it makes sense to conflict both
@@ -67,7 +67,7 @@ pub fn execute(cmd: Args) -> Result<(), Error> { | |||
.join("pytest") | |||
.with_extension(EXE_EXTENSION); | |||
|
|||
let projects = locate_projects(project, cmd.all, &cmd.package[..])?; | |||
let projects = locate_projects(project, cmd.all | cmd.package.is_empty(), &cmd.package[..])?; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Covers 3 branches in the workspace case:
rye test --all
: all pyprojects are returnedrye test
: before would only return the root -> now returns the same as--all
rye test -p <workspace_project>
: returns the matched projects
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think that rye test
should run all. It was intended to only run the tests of the package you are in. That is consistent with fmt
and lint
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I went by the cargo test
implementation.
Although I see your point running pytests at the root directory would collect ANY test file such as exposed in #853 and #893
I see three options:
- Assume the default test directory is
tests
and allow the user to override with arye.test-directory
property - Run all the packages in the workspace like
cargo test
(as implemented) - Leave it to the user to configure
tool.pytest
like in Ignoretarget
when runningpytest
in rye #893
@@ -83,6 +83,9 @@ pub fn execute(cmd: Args) -> Result<(), Error> { | |||
} | |||
|
|||
for (idx, project) in projects.iter().enumerate() { | |||
if project.workspace().is_some() && project.is_workspace_root() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is_workspace_root
would return true if it was single package so we need to ask for the workspace
@@ -67,7 +67,7 @@ pub fn execute(cmd: Args) -> Result<(), Error> { | |||
.join("pytest") | |||
.with_extension(EXE_EXTENSION); | |||
|
|||
let projects = locate_projects(project, cmd.all, &cmd.package[..])?; | |||
let projects = locate_projects(project, cmd.all | cmd.package.is_empty(), &cmd.package[..])?; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think that rye test
should run all. It was intended to only run the tests of the package you are in. That is consistent with fmt
and lint
.
Fixes #853
Description
When running within a workspace pytest will be run from the project root collecting everything in the workspace tree, including the unselected packages(if root is selected) and packages/folders not managed in the workspace (if all selected).
Open Questions
It might the interesting to have a
rye.test-folder
pyproject attribute so we could have workspace tests.