Skip to content

fix #6881 - add policies for too long ids from a str and use short as default#13370

Merged
RonnyPfannschmidt merged 1 commit into
pytest-dev:mainfrom
RonnyPfannschmidt:fix-6881-long-str-shal-not-be-a-id
Jul 21, 2026
Merged

fix #6881 - add policies for too long ids from a str and use short as default#13370
RonnyPfannschmidt merged 1 commit into
pytest-dev:mainfrom
RonnyPfannschmidt:fix-6881-long-str-shal-not-be-a-id

Conversation

@RonnyPfannschmidt

@RonnyPfannschmidt RonnyPfannschmidt commented Apr 11, 2025

Copy link
Copy Markdown
Member

this experiments with addign a policy and a new default

  • short(default) - if the str is longer than 100, use the normal shorten
  • sha256: make a sha256 of the value
  • legacy: just take the long str, for transitons
  • disallow: juexpect people to pick ids

closes #6881

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

Comments suppressed due to low confidence (2)

src/_pytest/python.py:114

  • Typo 'parameer' should be 'parameter', and the help text mentions 'sha3' while the code uses hashlib.sha256. Please update for consistency.
        help="strategy for parameer values that result in long ids\n- short: default: shorten the value normally\n- hash: take a sha3 of the value for content matching ids\n- legacy: keep the long id (only use this for temporary backward compatibility)\n- disallow: fail and request explicit ids",

testing/python/metafunc.py:666

  • [nitpick] The expected output for the 'short' strategy ('a0') when the input string is long is non-obvious. Please add a comment to clarify the rationale for this expected value.
            "short": "a0",

@RonnyPfannschmidt RonnyPfannschmidt changed the title y fix #6881 - add policies for too long ids from a str and use short as default Apr 11, 2025
@RonnyPfannschmidt
RonnyPfannschmidt force-pushed the fix-6881-long-str-shal-not-be-a-id branch from 0002440 to 23ad79b Compare May 26, 2026 06:38
@RonnyPfannschmidt
RonnyPfannschmidt requested a review from Copilot May 26, 2026 06:39
@RonnyPfannschmidt
RonnyPfannschmidt force-pushed the fix-6881-long-str-shal-not-be-a-id branch from 23ad79b to 53e0044 Compare May 26, 2026 06:43
@psf-chronographer psf-chronographer Bot added the bot:chronographer:provided (automation) changelog entry is part of PR label May 26, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.

Comment thread src/_pytest/python.py Outdated
Comment thread src/_pytest/python.py Outdated
Comment thread src/_pytest/python.py Outdated
Comment thread testing/python/metafunc.py Outdated
@RonnyPfannschmidt
RonnyPfannschmidt force-pushed the fix-6881-long-str-shal-not-be-a-id branch 2 times, most recently from 72b00d3 to a299e77 Compare May 26, 2026 21:00
@RonnyPfannschmidt
RonnyPfannschmidt requested a review from Copilot May 26, 2026 21:01

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

Comment thread src/_pytest/python.py Outdated
Comment thread testing/python/metafunc.py
@RonnyPfannschmidt
RonnyPfannschmidt force-pushed the fix-6881-long-str-shal-not-be-a-id branch 3 times, most recently from 7709729 to 4238d9c Compare May 27, 2026 06:14
@RonnyPfannschmidt
RonnyPfannschmidt marked this pull request as ready for review May 27, 2026 06:14
Add a configurable strategy for handling long str/bytes parameter
values in auto-generated test IDs.

Strategies:

- short (default): values over 100 chars fall back to argname+index
- sha256: replace with SHA-256 hex digest
- legacy: keep the full value as-is
- disallow: raise an error requesting explicit IDs

Only affects auto-generated IDs — explicit ids=[...] and
pytest.param(id=...) are unchanged.

Unknown strategy values raise UsageError.

Includes confval docs entry and changelog.

Closes pytest-dev#6881

Co-authored-by: Cursor AI <ai@cursor.sh>
Co-authored-by: Claude Opus 4 <claude-opus-4@anthropic.com>
@RonnyPfannschmidt
RonnyPfannschmidt force-pushed the fix-6881-long-str-shal-not-be-a-id branch from 4238d9c to 33ebdb1 Compare July 21, 2026 08:55
@RonnyPfannschmidt
RonnyPfannschmidt merged commit d776e8d into pytest-dev:main Jul 21, 2026
66 of 68 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bot:chronographer:provided (automation) changelog entry is part of PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Long parametrized test_input on Windows: ValueError: the environment variable is longer than 32767 characters

3 participants