Skip to content

fix: correct error message for stdout pipe check in run_process#3416

Open
nightcityblade wants to merge 4 commits intopython-trio:mainfrom
nightcityblade:fix/issue-3409
Open

fix: correct error message for stdout pipe check in run_process#3416
nightcityblade wants to merge 4 commits intopython-trio:mainfrom
nightcityblade:fix/issue-3409

Conversation

@nightcityblade
Copy link
Copy Markdown

Fixes #3409

The error message for the stdout=subprocess.PIPE check in run_process incorrectly said "stdin=subprocess.PIPE". This fixes it to say "stdout=subprocess.PIPE".

This is a recreation of #3398 with the same fix plus a newsfragment.

@codecov
Copy link
Copy Markdown

codecov bot commented Apr 4, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00000%. Comparing base (3dd35d7) to head (97ba75c).
⚠️ Report is 14 commits behind head on main.

Additional details and impacted files
@@               Coverage Diff               @@
##                 main        #3416   +/-   ##
===============================================
  Coverage   100.00000%   100.00000%           
===============================================
  Files             128          128           
  Lines           19424        19417    -7     
  Branches         1318         1318           
===============================================
- Hits            19424        19417    -7     
Files with missing lines Coverage Δ
src/trio/_subprocess.py 100.00000% <ø> (ø)
src/trio/_tests/test_subprocess.py 100.00000% <100.00000%> (ø)

... and 8 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@CoolCat467
Copy link
Copy Markdown
Member

You forgot to update the tests mate

@nightcityblade
Copy link
Copy Markdown
Author

Good catch @CoolCat467! Updated the test to match the corrected error message — the stdin pipe check now expects stdin=subprocess.PIPE instead of stdout=subprocess.PIPE. Thanks for the review!

@A5rocks
Copy link
Copy Markdown
Contributor

A5rocks commented Apr 5, 2026

Please fix the news fragment syntax!

pipe_stdin_error = r"^stdin=subprocess\.PIPE is only valid with nursery\.start, since that's the only way to access the pipe(; use nursery\.start or pass the data you want to write directly)*$"
with pytest.raises(ValueError, match=pipe_stdin_error):
await run_process(CAT, stdin=subprocess.PIPE)
pipe_stdout_error = r"^stdout=subprocess\.PIPE is only valid with nursery\.start, since that's the only way to access the pipe(; use nursery\.start or pass the data you want to write directly)*$"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The last part uses a * but I think the regex can be more specific.

(Same comment applies for the one above, too)

@nightcityblade
Copy link
Copy Markdown
Author

Fixed — switched to double backticks (code) for proper RST syntax. Thanks @A5rocks!

@A5rocks
Copy link
Copy Markdown
Contributor

A5rocks commented Apr 6, 2026

Please address the review too! (and you don't need to write out a comment acknowledging what you finished; the commits have that data.)

Copy link
Copy Markdown
Contributor

@A5rocks A5rocks left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, I was thinking something like this. What do you think?


pipe_stdout_error = r"^stdout=subprocess\.PIPE is only valid with nursery\.start, since that's the only way to access the pipe(; use nursery\.start or pass the data you want to write directly)*$"
with pytest.raises(ValueError, match=pipe_stdout_error):
pipe_stdin_error = r"^stdin=subprocess\.PIPE is only valid with nursery\.start, since that's the only way to access the pipe(; use nursery\.start or pass the data you want to write directly)?$"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
pipe_stdin_error = r"^stdin=subprocess\.PIPE is only valid with nursery\.start, since that's the only way to access the pipe(; use nursery\.start or pass the data you want to write directly)?$"
pipe_stdin_error = r"^stdin=subprocess\.PIPE is only valid with nursery\.start, since that's the only way to access the pipe; use nursery\.start or pass the data you want to write directly$"

pipe_stdin_error = r"^stdin=subprocess\.PIPE is only valid with nursery\.start, since that's the only way to access the pipe(; use nursery\.start or pass the data you want to write directly)?$"
with pytest.raises(ValueError, match=pipe_stdin_error):
await run_process(CAT, stdin=subprocess.PIPE)
pipe_stdout_error = r"^stdout=subprocess\.PIPE is only valid with nursery\.start, since that's the only way to access the pipe(; use nursery\.start or pass the data you want to write directly)?$"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
pipe_stdout_error = r"^stdout=subprocess\.PIPE is only valid with nursery\.start, since that's the only way to access the pipe(; use nursery\.start or pass the data you want to write directly)?$"
pipe_stdout_error = r"^stdout=subprocess\.PIPE is only valid with nursery\.start, since that's the only way to access the pipe$"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect error message for trio.run_process's stdout check

4 participants