Skip to content

Decompose XS-APItest#24523

Open
demerphq wants to merge 36 commits into
bleadfrom
yves/split-apitest
Open

Decompose XS-APItest#24523
demerphq wants to merge 36 commits into
bleadfrom
yves/split-apitest

Conversation

@demerphq

@demerphq demerphq commented Jul 2, 2026

Copy link
Copy Markdown
Collaborator

APItest.xs was insanely long, like 8000 loc / 200k worth of code or something (/update: corrected this, thanks @iabyn/). This patch sequence splits it out into multiple logical blocks by using the XS INCLUDE directory, and C include statements.

This also includes some tweaks to how ext/XS-APItest/t/handyNN.t worked so that jobs parallelize out more consistently and more reasonably.

The idea is that adding next tests to XS-APItest is pretty intimidating, splitting it up hopefully makes it a little easier.

No tests should be broken or removed by this patch. It is purely about reorganizing one of our largest compilation units.

  • This set of changes does not require a perldelta entry. (I think - its just test code structuring)

demerphq added 30 commits July 2, 2026 15:58
We have handy00.t through handy09.t, each of which wants to process
1/10th of the total handy tests, but by some oversight we ended up with
a situation where if TEST_JOBS was not set we would actually execute
all of the handy tests in just handy00.t, and the do no testing at all
in handy01.t through handy09.t, which is sort of weird.

I also don't really understand why we would split the test set
differently dependening on the number of TEST_JOBS. I can see that
causing confusion. I think its much better if the only time we dont use
the normal 10 chunk partition is when someone wants to run handy00.t and
have it test everything, which this patch achieves by trigger the
special behavior with a new explicit env var instead of indirectly via
TEST_JOBS==1 (implied or explicit) or other tricks.

So with this patch unless you explicitly set FULL_HANDY_TEST to true
then handy00.t and friends will test exactly the same tests for
everyone everywhere. If FULL_HANDY_TEST is true then any of the handy
test files will run all the tests. So don't set that unless you know
what you are doing.

Personally I think this makes more sense overall anyway, if something in
handyNN.t breaks it would be nice to not have to run the full handy test
suite (~170k tests) to find one mistake, much better to only have to run
17k tests instead.
@Leont Leont added the defer-next-dev This PR should not be merged yet, but await the next development cycle label Jul 2, 2026
@iabyn

iabyn commented Jul 3, 2026 via email

Copy link
Copy Markdown
Contributor

@leonerd

leonerd commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

The failing tests are just upset about cmp_version; I imagine that'll be easy to shake out when we get to it.

I think this is a great idea to split them up. I know there's several other PRs hanging around with "defer-next-dev" tagged on them, that this will cause to conflict. But since all of those (several of which are mine) are just making additions, I think it best to merge this one first, and then go and fix up the other ones and move those additions to the same scheme as this. I'm happy to take the lead on that.

(I did email perl5-porters@ with a big grand plan, but the mailing list seems not to be working currently. I have copypasted the message here - https://paste.debian.net/hidden/1b8b7ba1)

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

Labels

defer-next-dev This PR should not be merged yet, but await the next development cycle

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants