Skip to content
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

terminal: fix crash in header reporting when absolute testpaths is used #7817

Merged
merged 3 commits into from Oct 3, 2020

Conversation

bluetech
Copy link
Member

@bluetech bluetech commented Sep 29, 2020

Fixes #7814.

Regressed in 6.1.0 in 62e249a.

The x is an str but is expected to be a pathlib.Path. Not caught by mypy because config.getini() returns Any.

Fix by just removing the bestrelpath call:

  • testpaths are always relative to the rootdir, it thus would be very unusual to specify an absolute path there.

  • The code was wrong even before the regression: py.path.local's bestrelpath function expects a py.path.local, not an str. But it had some weird try ... except AttributeError fallback which just returns the argument, i.e. it was a no-op. So there is no behavior change.

  • It seems reasonable to me to just print the full path if that's what the ini specifies.

The two other commits are related improvements.

@bluetech bluetech added the needs backport applied to PRs, indicates that it should be ported to the current bug-fix branch label Sep 29, 2020
@bluetech
Copy link
Member Author

Note: I only intend to backport the "terminal: fix crash in header reporting when absolute testpaths is used" commit.

Regressed in 6.1.0 in 62e249a.
The `x` is an `str` but is expected to be a `pathlib.Path`. Not caught
by mypy because `config.getini()` returns `Any`.

Fix by just removing the `bestrelpath` call:

- testpaths are always relative to the rootdir, it thus would be very
  unusual to specify an absolute path there.

- The code was wrong even before the regression: `py.path.local`'s
  `bestrelpath` function expects a `py.path.local`, not an `str`. But it
  had some weird `try ... except AttributeError` fallback which just
  returns the argument, i.e. it was a no-op. So there is no behavior
  change.

- It seems reasonable to me to just print the full path if that's what
  the ini specifies.
Make it match better the condition on whether testpaths is used (found
in config/__init__.py).
@bluetech bluetech merged commit a6a7ba5 into pytest-dev:master Oct 3, 2020
@bluetech bluetech deleted the fix-testpaths-bestrelpath2 branch October 6, 2020 16:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs backport applied to PRs, indicates that it should be ported to the current bug-fix branch
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[bug] testpaths broken, captured as string
2 participants