Skip to content

Tests: Document value comparisons in get_adjacent_post tests - #13935

Closed
huzaifaalmesbah wants to merge 1 commit into
WordPress:trunkfrom
huzaifaalmesbah:test/link-assert-equals
Closed

huzaifaalmesbah wants to merge 1 commit into
WordPress:trunkfrom
huzaifaalmesbah:test/link-assert-equals

Conversation

@huzaifaalmesbah

Copy link
Copy Markdown
Member

Description

Reviewed tests/phpunit/tests/link/ for ticket #64895.

There are 29 calls to assertEquals() in tests/phpunit/tests/link/getAdjacentPost.php:

  • test_get_adjacent_post(): 13 calls comparing WP_Post objects or arrays of WP_Post objects returned from get_adjacent_post().
  • test_get_adjacent_post_exclude_self_term(): 8 calls comparing WP_Post objects returned from get_adjacent_post().
  • test_get_adjacent_post_caching(): 8 calls comparing WP_Post objects returned from get_adjacent_post().

All 29 calls intentionally compare WP_Post instances by value:

  1. get_adjacent_post() queries the database and instantiates fresh WP_Post objects, which are distinct instances from the fixture references in the test.
  2. assertSame() strictly checks object identity (===), which fails when comparing distinct WP_Post instances representing the same post.

As noted specifically by committer @lancewillett in Trac #64895 (comment:93):

"link/getAdjacentPost.php, the largest single file, compares WP_Post objects, where assertEquals() is the right call. For those, a short note in the test saying the loose comparison is deliberate counts as done."

These intentional loose comparisons are preserved and documented with:
// Keep assertEquals() because the objects are intentionally compared by value.

Testing Instructions

npm run test:php -- --test-suffix .php tests/phpunit/tests/link/getAdjacentPost.php
composer run lint tests/phpunit/tests/link/getAdjacentPost.php

Trac ticket: https://core.trac.wordpress.org/ticket/64895

Use of AI Tools

AI assistance: Yes
Tool(s): Antigravity
Model(s): Gemini
Used for: Inspecting assertions and drafting documentation comments. Implementation and test verification were reviewed and executed locally.

Explain why assertEquals() calls intentionally compare WP_Post objects by value.

See #64895.
@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

Core Committers: Use this line as a base for the props when committing in SVN:

Props huzaifaalmesbah.

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

@lancewillett
lancewillett self-requested a review October 2, 2026 18:37
@lancewillett

Copy link
Copy Markdown
Member

wporg-sync pushed a commit that referenced this pull request Oct 2, 2026
Explain why adjacent and boundary post tests retain assertEquals() when comparing WP_Post objects and arrays of posts by value.

Developed in: #13935

Props huzaifaalmesbah.
See #64895.


git-svn-id: https://develop.svn.wordpress.org/trunk@64067 602fd350-edb4-49c9-b593-d223f7449a82
wporg-sync pushed a commit to WordPress/WordPress that referenced this pull request Oct 2, 2026
Explain why adjacent and boundary post tests retain assertEquals() when comparing WP_Post objects and arrays of posts by value.

Developed in: WordPress/wordpress-develop#13935

Props huzaifaalmesbah.
See #64895.

Built from https://develop.svn.wordpress.org/trunk@64067


git-svn-id: http://core.svn.wordpress.org/trunk@63226 1a063a9b-81f0-0310-95a4-ce76da25c4cd
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.

2 participants