WordPress.org

Make WordPress Core

Opened 5 months ago

Closed 4 months ago

Last modified 4 months ago

#38688 closed defect (bug) (fixed)

Tests Audit: some tests can fail when the date changes

Reported by: pento Owned by: johnbillion
Milestone: 4.7 Priority: low
Severity: minor Version:
Component: Build/Test Tools Keywords: good-first-bug has-unit-tests
Focuses: Cc:

Description

There are tests that generate the date twice - usually once for creating test data, then a second time for checking the expected output.

If the date changes between those two steps, the test will fail incorrectly.

Example: https://travis-ci.org/aaronjorbin/develop.wordpress/jobs/173767949

Attachments (2)

0001-tests-call-date-once-per-test.patch (4.7 KB) - added by xrmx 5 months ago.
Call date once per test
38688.patch (6.8 KB) - added by xrmx 5 months ago.
updated patch

Download all attachments as: .zip

Change History (11)

#1 @pento
5 months ago

  • Keywords good-first-bug added

@xrmx
5 months ago

Call date once per test

#2 @xrmx
5 months ago

  • Keywords has-patch added; needs-patch removed

#3 @xrmx
5 months ago

I've updated tests to call date once, while it's a bit difficult to reproduce locally i think it should be fine since by calling it once the date should be the very same. This is my first contribution to wordpress and done during Torino contribution day.

#4 @johnbillion
5 months ago

  • Keywords needs-unit-tests added; has-patch removed

Thanks for the patch, @xrmx! After checking this further today, after our talk at the Torino contributor evening, I don't think your patch completely fixes the issue.

The underlying problem is that 12 posts are created in the setUp() method each time a test runs, and if the date ticks over to the next day in between the first post being created and the last post being created, then not all of the posts will have the same date.

In addition to the fixes in 0001-tests-call-date-once-per-test.patch, the post_date property should be specified when creating the posts in the setUp() method, and the same date can be used in each test instead of calling date().

#5 @xrmx
5 months ago

@johnbillion thanks for the hints, will update the patch next week.

@xrmx
5 months ago

updated patch

#6 @xrmx
5 months ago

Updated patch to create posts and pages with the very same timestamp and use the very same timestamp for rendering comparison.

#7 @johnbillion
5 months ago

  • Keywords has-unit-tests added; needs-unit-tests removed
  • Owner set to johnbillion
  • Status changed from new to reviewing

#8 @johnbillion
4 months ago

  • Resolution set to fixed
  • Status changed from reviewing to closed

In 39363:

Build/Test Tools: When testing the output of wp_list_pages(), use a known and fixed date for each post so the tests don't fail when the date changes between the beginning and end of a test.

Props xrmx
Fixes #38688

#9 @netweb
4 months ago

  • Milestone changed from Future Release to 4.7
Note: See TracTickets for help on using tickets.