Skip to content

Clean up ExcludeList.txt - #731

Merged
wasabii merged 35 commits into
mainfrom
test/reenable-passing
Aug 15, 2026
Merged

Clean up ExcludeList.txt#731
wasabii merged 35 commits into
mainfrom
test/reenable-passing

Conversation

@wasabii

@wasabii wasabii commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

ExcludeList.txt has accumulated for years. It holds 4740 entries against 48 comment lines, so roughly one entry in a hundred records why it is there, and an unknown share describes problems that no longer exist.

The goal is to get it back into a state worth trusting: drop what no longer applies, keep what genuinely fails, and say why for the ones that stay. This is the first pass. Further passes will follow as areas get measured.

What this pass does

Removes 68 entries that name tests which no longer exist anywhere under ext/openjdk/jdk/test. They exclude nothing. Clusters include seven sun/security/krb5/auto tests, several sun/tools/jps shell tests, and three java/util/stream tests.

One of the 68 was malformed rather than merely stale:

javax/sound/sampled/Clip/ClipSetPosjavax/sound/sampled/DirectAudio/bug6400879.java   macosx-all

Two paths fused by a lost newline. Both halves are separately and correctly listed a couple of lines away, so nothing was going unexcluded because of it — the line was simply inert.

Collapses 8 tests that were listed twice. Where the two entries disagreed the later one was winning, so three were excluded more narrowly than someone had written down. Collapsing takes the union, which can only widen an exclusion and never re-enables a test someone wanted off:

Test Entries Result
.../TypeAhead/FreezeTest/FreezeTest.java generic-all + macosx-all,windows-all generic-all
javax/swing/JPopupMenu/6544309/bug6544309.java generic-all + linux-all,macosx-all generic-all
java/net/URLConnection/6212146/test.sh windows-i586 + linux-all linux-all,windows-i586
sun/nio/cs/Test4200310.sh windows-i586 + generic-all generic-all

The other four were exact repeats: HaricaCA.java and three sun/security/pkcs11 entries.

DialogToFrontNonModalTest.java is also listed twice but is left alone, because #730 already changes one of its two entries and deduplicating now would collide. Once that lands both read generic-all and the pair becomes an exact repeat to collapse later.

Drops three entries for tests that pass now. Run with our ExcludeList.txt dropped and an include list naming only these, so they ran exactly as they would if unexcluded:

Test Result
java/lang/CharSequence/DefaultTest.java passed, 15 s
java/lang/Character/CheckProp.java passed, 17 s
java/lang/ClassLoader/Assert.java passed, 1 m 43 s
java/lang/Class/getEnclosingClass/EnclosingClassTest.java failed — stays excluded

Measured on net8.0 / win-x64 only, from a local Debug build. All three were generic-all, so removing them re-enables every platform and framework. CI on this branch is the actual check; if one fails outside what was measured, the fix is to restore that entry scoped to the platform rather than drop it wholesale.

Net effect

4740 entries to 4664. Alignment at column 121 preserved throughout. No change to what is excluded except the three tests above and the four widened duplicates.

What comes later

Not in this PR, but where this is heading:

  • Measuring the remaining entries area by area and dropping the ones that pass. Early sampling puts the stale rate high in the non-GUI areas, though java/lang and java/util are likely healthier than the AWT and Swing half of the file.
  • Comments against the entries that stay, grouped by cause, in the style already used further down the file (# posix isn't supported on IKVM, # JFR is not supported). At four thousand entries, grouping is what keeps that readable.
  • 340 entries are .sh and cannot be measured on a developer machine, since they run under WSL but are handed a Windows TESTJAVA. Those need CI.

The harness for all of that is on test/audit-excludes and is not part of this PR.

wasabii and others added 2 commits August 5, 2026 07:19
Run against the current tree with the exclude list dropped, these three
passed:

  java/lang/CharSequence/DefaultTest.java
  java/lang/Character/CheckProp.java
  java/lang/ClassLoader/Assert.java

No entry says when or why any of them was excluded, so there is nothing to
weigh the result against beyond the fact that they work.

A fourth from the same batch,
java/lang/Class/getEnclosingClass/EnclosingClassTest.java, still fails and
stays excluded.

The measurement was net8.0 on win-x64 only, from a local Debug build. All
three entries were generic-all, so removing them re-enables every platform
and framework, which is broader than what was measured. CI on this branch is
what actually checks that.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sixty-eight entries name tests that no longer exist anywhere under
ext/openjdk/jdk/test, so they exclude nothing. Clusters include seven
sun/security/krb5/auto tests, several sun/tools/jps shell tests and three
java/util/stream tests.

One of the sixty-eight was malformed rather than merely stale:

  javax/sound/sampled/Clip/ClipSetPosjavax/sound/sampled/DirectAudio/bug6400879.java

which is two paths fused by a lost newline. Both halves are separately and
correctly listed a couple of lines away, so nothing was going unexcluded
because of it; the line was simply inert.

Eight tests were listed twice. Where the two entries disagreed the later one
was winning, so three of them were excluded more narrowly than someone had
written down. Collapsing takes the union of the two, which can only ever
widen an exclusion, never re-enable a test that someone wanted off:

  FreezeTest.java          generic-all + macosx-all,windows-all -> generic-all
  bug6544309.java          generic-all + linux-all,macosx-all   -> generic-all
  URLConnection test.sh    windows-i586 + linux-all             -> linux-all,windows-i586
  Test4200310.sh           windows-i586 + generic-all           -> generic-all

The remaining four were exact repeats: HaricaCA.java and three
sun/security/pkcs11 entries.

DialogToFrontNonModalTest.java is also listed twice but is left alone here,
because #730 already changes one of its two entries and deduplicating it now
would collide. Once that lands both read generic-all and the pair becomes an
exact repeat that can be collapsed with the others.
@wasabii wasabii changed the title Re-enable three tests that pass now Clean up ExcludeList: dead entries, duplicates, and three tests that pass now Aug 5, 2026
@wasabii wasabii changed the title Clean up ExcludeList: dead entries, duplicates, and three tests that pass now Clean up ExcludeList.txt Aug 5, 2026
wasabii added 13 commits August 5, 2026 07:55
Of the first 60 java/util entries, 54 pass when run with the exclude list
dropped. None of them is a shell test, so all 54 were measured properly
rather than inheriting the WSL problem that makes .sh results unreliable off
a developer machine.

Six did not pass. Three are .sh and Formatter/Basic exited 127, which is the
same harness problem, so those four are unmeasured rather than failing and
stay put. Two look real and also stay: TimSortStackSize2 exits unexpectedly
and CldrFormatNamesTest throws RuntimeException: test failed.

Measured on net8.0 and win-x64 from a local Debug build. The entries were
generic-all, so removing them re-enables every platform and framework. CI
here is what checks that.

Also puts a comment over the java/lang/instrument block, which is contiguous
and 58 entries long. They all fail identically at compilation:

  error: package java.lang.instrument does not exist

The package is not in the runtime image, so nothing under it can build. One
line of explanation covers all 58, which is the shape the rest of the file
should end up in.
The first three thousand lines of this file are one flat alphabetical list
with no comments in them; the topic-grouped sections with explanations only
start further down. Dropping a bare comment into the alphabetical part gives
a reader no way to tell where it stops applying, and a naive reading has it
covering the 1896 entries below rather than the 58 it is about.

So the comment now names its own scope, and a blank line closes the block.
Second batch of 100 java/util entries: 80 pass, 20 fail. Nineteen of the
twenty failures are shell tests and sixteen of those exited 127, which is the
WSL harness problem rather than anything about IKVM, so they are unmeasured
and stay. That leaves 80 passing out of 81 entries that could actually be
measured.

The one real failure is java/util/TimeZone/CLDRDisplayNamesTest.java, and it
fails for a reason worth writing down:

  error: got 'Pazifische Normalzeit'
     expected 'Nordamerikanische Westkuesten-Winterzeit' (style=1, locale=de_DE)

Timezone display names come back in the older COMPAT form rather than the
CLDR form the test wants. That is the same cause as CldrFormatNamesTest from
the first batch, and the file already carries a '# Related to CLDR/COMPAT/etc?'
comment elsewhere, so there is a group forming here.

Running total for java/util: 160 entries measured, 134 dropped, 3 real
failures kept, 23 shell tests unmeasured.
Third batch of 100, shell tests filtered out this time so every entry could
actually be measured: 31 pass, 69 fail.

Fifty-seven of the 69 are java/util/stream, and they all fail the same way
before running a line of test code:

  Unrecognized option: -Xbootclasspath/a:...

They are TestNG tests that put testng.jar and their boot test classes on the
boot classpath, and the launcher does not implement that option. The file
already records this cause for CustomizedLambdaFormTest under '# fails with
-Xbootclasspath/a (needs implement)', so the stream block gets a comment
pointing at the same thing. Sixty entries, one of which passed and has gone,
leaving 59 under the comment.

Of the remaining twelve failures, CLDRDisplayNamesTest is the CLDR display
name problem already seen, and the rest are four java/util/logging, three
java/util/zip, regex/PatternStreamTest and one resource bundle SPI test.
Those have not been looked at individually.

java/util now stands at 191 entries measured, 165 dropped, and the file at
4499 entries from 4740.
Batch of 98, shell tests filtered out so every entry was measurable: 85 pass,
13 fail. All thirteen failures are .java, so unlike the earlier batches none
of this result is contaminated by the WSL shell problem.

The thirteen that stay, by area:

  java/io    LargeCopyWithMark, File/Basic, and three Serializable tests
  java/net   Authenticator/Deadlock, SetDatagramSocketImplFactory,
             ServerSocket/ThreadStop, two URLClassLoader/closetest tests,
             sealing/CheckSealed
  java/nio   AsynchronousSocketChannel/CompletionHandlerRelease,
             Files/CheckPermissions

Two of the thirteen exited 127, which usually means something was shelled out
to and not found, so those two are less certain than the rest. The others
fail with real assertions: AssertionError, java.lang.Error, and
AccessDeniedException for the permissions test.

File now at 4414 entries from 4740.
Batch of 100: 73 pass, 27 fail. The failures sit almost entirely in
java/rmi/server and java/rmi/transport, twelve and eleven of them.

Most of those failures are not real. Eighteen jtr files in this run end with

  Error. unexpected exit code from javac: -1073741502

which is 0xC0000142, STATUS_DLL_INIT_FAILED, a Windows process startup
failure. javac never got going, so the test never ran. It shows up under the
concurrency jtreg uses locally and says nothing about IKVM.

That is the second way a local run manufactures failures, after the shell
tests that cannot find the Windows java from inside WSL. Both point the same
way: a local pass is trustworthy, a local failure is not, and none of the 27
here are being acted on.

File now at 4341 entries from 4740.
Batch of 110: 85 pass, 23 fail, and no javac startup crashes this time so the
failures are all genuine results.

Twelve of the 23 are the java/io, java/net and java/nio failures already seen
in an earlier batch, failing identically a second time. Independent
reproduction, so those are real rather than flakes, and they stay.

The other eleven are javax/management, out of eighty staged, so that area is
mostly stale too. They have not been looked at individually yet:
ImplVersionTest twice, Introspector's AnnotationSecurityTest and
ClassLeakTest, NotificationInfoTest, OldMBeanServerTest, monitor/StartStopTest,
mxbean/LeakTest, BroadcasterSupportDeadlockTest, DeadListenerTest and
NoServerTimeoutTest.

File now at 4256 entries from 4740.
Batch of 110 across sun/security, sun/net, sun/misc and sun/reflect: 101
pass, 8 fail, no javac startup crashes. The best yield of any area so far at
93 percent.

The eight that stay are three sun/net/www, two sun/security/krb5,
Reflection/GetCallerClassWithDepth, ManyNewInstanceAnonTest and
sun/misc/Version.

One of the 101 needed a second look. It passed but matched no entry, because
the list carried

  sun/net/www/http/ChunkedOutputStream/checkError.java

while the file on disk is CheckError.java. Windows does not care, which is
why the earlier sweep for entries naming files that no longer exist did not
catch it, but on Linux that entry matches nothing and the exclusion has been
silently doing nothing. A scan of the whole file for the same problem turns
up no others. The entry goes with the rest of the batch since the test
passes either way.

File now at 4155 entries from 4740.
Batch of 110 com/sun entries: 10 pass, 99 fail. Much the worst area so far,
and for a single reason.

Ninety-six of the 99 are com/sun/jdi, and they fail at compilation rather
than at run time:

  error: package com.sun.jdi does not exist

The Java Debug Interface is not in the runtime image, so none of the debugger
tests can build. Same shape as java.lang.instrument.

There are 149 com/sun/jdi entries in two runs: 146 together near the top of
the file, which now carry a comment, and three further down that already sit
under a '# jdi' heading.

That makes three areas whose exclusions come down to a missing package or an
unimplemented option rather than anything that could be fixed by retesting:
com/sun/jdi at 146, java/util/stream at 59 and java/lang/instrument at 58.

File now at 4145 entries from 4740.
Batch of 110: 103 pass, 7 fail, no javac startup crashes. Ninety-four
percent.

More useful than the number is that these ran at all. java/beans overlaps
heavily with AWT, and the open question was whether the graphical areas could
be measured on a developer machine or would have to wait for CI. They can:
this box has a display and the tests used it.

That matters because two thirds of the entries still lacking any explanation
are java/awt, javax/swing, javax/sound, java/beans, sun/java2d and
javax/imageio, and those are now known to be reachable.

The seven that stay throw real exceptions rather than dying in the harness:
three NegativeArraySizeException, two IllegalStateException and one
java.lang.Error.

File now at 4042 entries from 4740.
Batch of 110: 109 pass, nothing fails. The only entry not accounted for is
javax/sound/midi/Gervill/AudioFloatInputStream/Available.java, which never
reported a result and so stays, unmeasured rather than passing.

An entire area coming back clean is a first. Sound is also the area where a
developer machine and CI differ most, since one has audio devices and the
other does not, so these want confirming in CI before the result is leaned
on too heavily. They are all generic-all, so CI on this branch covers Linux
and macOS as well.

File now at 3933 entries from 4740, which is a sixth of the list gone.
Batch of 110: 38 pass, 55 fail, 17 never reported. The seventeen are a
contiguous alphabetical tail from JCheckBox through JInternalFrame, so the
run stopped before reaching them rather than skipping them individually.
They stay, unmeasured.

At 41 percent this is much the weakest of the graphical areas, against 94 for
java/beans and 100 for javax/sound. The failures look the part too: nineteen
InvocationTargetException plus assorted RuntimeException, Error and
NullPointerException, which is what Swing interaction tests throw when focus
or timing does not go their way.

Swing is also where #730 found most of its flaky tests, so these failures are
the least trustworthy of any area measured so far. Only the passes are being
acted on, which is the rule throughout, and it matters more here than
elsewhere.

File now at 3895 entries from 4740.
Partial batch. The run was stopped part way because the graphical tests take
over the desktop while they run, so only 92 of 110 reported: 60 passed, 32
failed.

Only the 60 passes are acted on, which is the standing rule and is safe here
regardless of the interruption. A test that passed, passed. The 32 failures
and the 18 that never reported are all treated as unmeasured and stay.

File now at 3835 entries from 4740.
wasabii added 12 commits August 5, 2026 12:39
Batch of 110, graphical areas filtered out of staging so nothing takes over
the display: 96 pass, 13 fail, no javac startup crashes.

Eight of the thirteen are the java/net and java/nio failures now seen for the
third time across separate batches, failing identically each time. Repeated
independently, so they are real and stay.

The other five are new and not yet looked at: Security/SynchronizedAccess,
jdk/lambda FDTest, two sun/security/krb5/auto tests and
sun/security/ssl/SSLEngineImpl/SSLEngineDeadlock.

File now at 3739 entries from 4740, so just over a fifth of the list has gone.
CI on this branch measured the 165 entries dropped so far across the whole
matrix. One of them does not hold:
java/util/concurrent/locks/Lock/TimedAcquireLeak.java passed locally on
net8.0 and win-x64 but fails on net8.0 and linux-x64, in partition 8.

That is the risk called out when these were first dropped. The measurements
are taken on Windows, the entries are generic-all, and removing one re-enables
every platform. This is the case where that mattered.

Restored to generic-all rather than narrowed to linux-all. There is a local
pass on Windows to justify narrowing, but the same measurement just produced
a false positive, so it does not deserve that much weight. CI can narrow it
later if anyone cares.

The other failure in this run, java/awt/Modal/ToBack/ToBackAppModal2Test on
Linux, is not from this branch. It is listed macosx-all,windows-all on main
and so has always run on Linux.

One entry in 165 is a rate worth stating plainly: 164 held up across every
platform and framework in the matrix. It is not zero, and the batches still
unpushed are larger than the batch that was measured.
The full matrix ran against this branch for the first time and found eight of
the 1005 removals do not hold. They are restored with the platform specs they
had on main, not narrowed:

  com/sun/crypto/provider/KeyFactory/TestProviderLeak
  com/sun/java/swing/plaf/gtk/4928019/bug4928019
  java/awt/Focus/CloseDialogActivateOwnerTest
  java/awt/Focus/FrameMinimizeTest
  java/awt/Focus/RollbackFocusFromAnotherWindowTest
  java/nio/MappedByteBuffer/Truncate
  javax/swing/JComboBox/7195179/Test7195179
  javax/swing/JFrame/AlwaysOnTop/AlwaysOnTopImeTest

Five of the eight are AWT focus or Swing tests, and bug4928019 is a GTK look
and feel test that only runs for real on Linux. That is the expected shape:
these were measured on a Windows desktop with a live interactive session, and
CI has neither. Measuring graphical tests on a developer machine says less
about CI than it appears to.

Eight in 1005 is 0.8 percent, in line with the one in 165 the earlier partial
run produced. The other eight failures in the run are not from this branch:
DialogToFrontNonModalTest is the duplicate deliberately left for #730,
KeepAliveProperty is one of the tests #730 excludes, and the rest already fail
on main.

File now at 3749 entries from 4740.
Two conflicting hunks, both where #730 added an entry next to lines this
branch had removed.

Kept from main:
  sun/net/www/http/KeepAliveCache/KeepAliveProperty.java  - #730 added this as
    one of its eight flaky exclusions, and a single local pass here is much
    weaker evidence than five CI runs showing it fail intermittently
  java/awt/Focus/ModalDialogInitialFocusTest  - never removed on this branch,
    it was only caught in the hunk by being adjacent

Kept this branch's removals for the other three, which were measured passing
and are not on anyone's flaky list:
  java/awt/Focus/ModalDialogActivationTest
  sun/net/www/http/KeepAliveCache/KeepAliveTimerThread
  sun/net/www/http/KeepAliveStream/InfiniteLoop

All eight of #730's exclusions are present afterwards. The rule where they
disagreed was that an intermittent failure beats a single local pass.
Second full matrix pass on this branch, this time with the eight earlier
restores in place and #730's flaky exclusions merged in: 88 pass, 9 fail.

Two of the nine are removals from this branch that do not hold, both AWT:

  java/awt/Choice/RemoveAllShrinkTest
  java/awt/Focus/ContainerFocusAutoTransferTest

Restored with the generic-all they had on main. That makes ten bad removals
out of roughly a thousand, or one percent, and nine of the ten are graphical.
Measuring AWT and Swing on a Windows desktop with a live session keeps
producing passes that CI does not reproduce, which is worth remembering
before the graphical areas are swept again.

Of the remaining seven failures, five are jtreg tests this branch never
touched: EndlessLoopTest, ToBackAppModal2Test, ToBackModal1Test,
IndependenceAWTTest and SetShapeAndClickSwing. The other two are not test
failures at all; IKVM.Tests and IKVM.Tools.Importer.Tests on net10.0 and
win-x64 both died with

  System.OperationCanceledException: Command execution canceled.
  Underlying process was forcefully terminated.

which is the runner killing the process rather than anything failing.
Three full matrix passes each turned up two or three more AWT or Swing
entries that were removed on the strength of a local pass and then failed in
CI. Restoring them one round at a time was not converging, and it never would
have: these tests are intermittent, so a clean run does not show the rest are
safe, only that they did not fire that time.

The numbers make the case. Of 999 removals, 317 were in graphical areas and
682 were not. Eleven of the graphical ones failed against two of the rest,
which is 3.5 percent versus 0.3, so a graphical removal was about twelve
times more likely to be wrong.

The cause is not subtle. Those measurements came off a Windows desktop with a
live interactive session, and CI has neither a desktop nor a user. Focus,
window activation and pointer behaviour are simply not the same, so a pass
there says very little about a pass in CI.

So all 303 still-live graphical entries go back with the platform specs they
had on main. Ten stay removed because the tests no longer exist, and the two
collapsed duplicates, FreezeTest and bug6544309, stay collapsed. Everything
outside the graphical areas is untouched.

That leaves the non-graphical work: 682 removals with two known errors, both
already corrected, together with 68 dead entries, eight collapsed duplicates,
one case mismatch and three comment groups covering 263 entries.

The graphical areas still want auditing. They need to be measured in CI,
where there is no desktop to mislead them.
This is the job that would not go green no matter how many times it was
rerun. java/awt/Modal/ToBack/ToBackAppModal2Test failed on net8.0 and
linux-x64 on three consecutive attempts with the same error:

  RuntimeException: Clicking the dialog Close button did not trigger an action

Deterministic, not intermittent, so rerunning was never going to help.

The entry is untouched by this branch. It reads macosx-all,windows-all on
main and on this branch alike, which means it has always run on Linux and has
always failed there. Nothing here caused it.

Thirty of the thirty-six tests in java/awt/Modal/ToBack are generic-all. Only
five are narrowed to macosx-all,windows-all, and this is one of them, which
looks like they were excluded on the other two platforms at some point and
never widened once they started failing on Linux. Widening this one to
generic-all matches its siblings.

Only the one that is demonstrably failing is changed. The other four narrowed
entries, ToBackModal1Test, ToBackModal2Test, ToBackNonModal2Test and
ToBackTKModal3Test, are left alone because there is no evidence against them.
All three turned up in the last run and none of them is affected by anything
else on this branch. Each was already excluded somewhere, just not on the
platform where it failed.

  MouseWheelOnBackgroundComponent.java  macosx-all           -> generic-all
    failed on net8.0 linux-x64. Its only sibling under WheelModifier is
    already generic-all.

  SetShapeDynamicallyAndClick.java      macosx-all,windows   -> generic-all
    failed on net8.0 linux-x64. Its neighbours SetShape.java and
    SetShapeAndClick.java are both linux-all,macosx-all, so the whole group
    is unhappy across platforms, just recorded inconsistently.

  PopdownGeneratesMouseEvents.java      added as generic-all
    failed on net472 win-x64. Only the .html variant was listed, at
    macosx-all, while the .java was not excluded at all. Same trap as
    ConsumeForModalDialogTest in #730, where the .html was listed and the
    .java was the one failing. Both files exist in the tree.

Chose generic-all rather than adding the single failing platform. These are
pointer and window interaction tests, the flakiest category in the suite, and
the platform-by-platform narrowing is exactly what left gaps in all three
cases.

The fourth failure in that run is not a test. Importer.Tests on net8.0 and
linux-x64 lost one row of eight to exit code 143, which is SIGTERM, so the
process was killed rather than the assertion failing. Nothing to exclude.
None of them is touched by this branch; all three were already failing and
simply had not been recorded.

  com/sun/crypto/provider/Cipher/PBE/PBMacBuffer.java
    not excluded anywhere. Failed on net8.0 win-x64.

  java/awt/List/KeyEventsTest/KeyEventsTest.java
    only the .html variant was listed, at linux-all,macosx-all, so the .java
    ran on Windows and failed there. Both files exist. This is the third time
    the same .html/.java gap has come up, after ConsumeForModalDialogTest in
    #730 and PopdownGeneratesMouseEvents earlier on this branch, so the file
    is likely to have more of them.

  src/jdk/nashorn/internal/runtime/test/LexicalBindingTest.java
    first entry in the nashorn exclude list, which was empty. Failed on
    net8.0 linux-x64 with 'failures: 1' out of its TestNG run.

Worth saying plainly: excluding these does not make the next run green.
Every run since the graphical revert has surfaced three or four different
pre-existing failures, and none has been caused by this branch. This is the
ambient flake tail on main rather than anything about this change, and it
will not close by iterating.
Everything excluded on this branch so far went in bare, with the reason left
in a commit message. That is exactly how the file reached four thousand
entries against fifty comment lines, so it is worth not repeating while
cleaning it up.

The six added or widened here now sit under one heading explaining the shared
cause, each with a line saying what is specific to it, following the same
shape as the existing sections such as '# Bad AWT' and '# JFR is not
supported'. The nashorn entry gets the same treatment in its own file.

Two of the six read oddly without a note and are worth having recorded:
KeyEventsTest and PopdownGeneratesMouseEvents were both already listed as
.html while the .java was the file actually running and failing, which is the
same gap that caught ConsumeForModalDialogTest in #730. Three occurrences now,
so a sweep for .html entries whose .java sibling is missing is worth doing on
its own.

No entry count change, 4061 either way. The six moved out of alphabetical
order into the section, which is where the file already keeps grouped causes.
The comments described the edits rather than the tests: which platform list
got widened, that a .html was listed and a .java was not. That is history of
the file, not information anyone needs when deciding whether an entry can go.

Rewritten to record where each test fails, and the failure itself where it has
actually been read. Only ToBackAppModal2Test has been looked at in detail, so
only it carries a message; the header says as much rather than implying the
rest are understood.

An earlier draft of this had plausible-sounding causes for all six, invented
from the test names. Those are gone. An entry saying only where it fails is
worth more than one that reads as though the cause is known when it is not.
The point of this branch is a suite that builds and tests end to end, and
that has not happened for a while. Waiting for one run to surface three or
four failures, excluding those, and running again was not converging, so this
takes the failures from ten recent runs across main and the open branches at
once.

Eighteen distinct tests failed. Nine were already covered, by #730, #733 or
earlier commits here. The other nine were either unlisted or listed only for
platforms other than the one they fail on:

  BlowfishTestVector          macosx-all           -> also fails net8.0 win-x64
  FileDialogLeakTest          unlisted             -> net472 win-x64
  BlockingDDDocModalTest      linux-all,macosx-all -> net472 win-x64
  FocusTransferWDFModeless3   macosx-all,windows   -> net8.0 linux-x64
  RobotWheelTest              unlisted             -> net472 win-x64
  Tls13PacketSize             unlisted             -> net472 win-x64
  PerPixelTranslucent         macosx-all,windows   -> net8.0 linux-x64
  PerPixelTranslucentCanvas   macosx-all,windows   -> net8.0 linux-x64
  ValidationWarningsTest      unlisted             -> net8.0 win-x64

Each carries the framework and platform it was seen failing on, so there is
something to reproduce from when they are picked back up. Two are worth
noting as not graphical, and so more likely to be real: BlowfishTestVector
and ValidationWarningsTest.

This is deliberately a wide net. Getting to green is what makes the next
failure informative; reintroducing these one at a time comes after.
Partition 7 came back with ShapedPerPixelTranslucentGradient, a third variant
from the same directory after PerPixelTranslucent and PerPixelTranslucentCanvas
were excluded a commit ago. Picking these off one per run is not going to end.

There are 24 files across javax/swing/JWindow/ShapedAndTranslucentWindows and
java/awt/Window/ShapedAndTranslucentWindows, two of which are the Common
helper. All 22 tests were already excluded, but across four scattered places
and five different platform lists, and in every case the platform that failed
was the one that particular entry omitted. So the group was understood to be
bad; it was just recorded badly.

They check that a window's shape and per-pixel alpha are honoured, and that
clicks land on or miss the shaped region. A headless runner does not reproduce
any of that faithfully, which is the same reason as for the rest of the
interaction tests.

All 22 now sit together at generic-all under one comment. No change in entry
count, since every one of them was already listed.
javax/sound/midi/Sequencer/Looping.java never finishes on net8.0 linux-x64.
It is killed by the 32 minute timeout, which is worse than a plain failure
since it holds a runner for half an hour before the job gives up.

It has never been excluded, on any platform. The runner has no audio device,
which is presumably why the sequencer loop never completes.

Worth recording that this is a gap rather than a one-off. There are 387
javax/sound tests in the tree and 268 are excluded, so 119 still run,
including this one until now. They are all audio tests on machines without
audio. Not excluding the other 118 here because none of them has actually
failed yet and there is no evidence against them, but each carries the same
risk of hanging for half an hour rather than failing quickly.
Both were already excluded, just not on Linux, which is the shape almost
every real failure in this exercise has taken.

  EndlessLoopTest                macosx-all,windows-all -> generic-all
  EnqueueWithDialogButtonTest    macosx-all             -> generic-all

The second is worth a note: seven of the eight tests alongside it under
KeyboardFocusmanager/TypeAhead are already generic-all, so it was the odd one
out rather than a considered exception.

Both moved into the annotated section with the platform they were seen
failing on, rather than left where they were with a wider platform list.
Sixty-one tests have been running unexcluded because only their .html variant
was listed. Both files exist in the tree and jtreg runs the .java, so the
exclusion never applied to the thing that actually executes.

Four of these surfaced as CI failures one at a time before the pattern was
obvious: ConsumeForModalDialogTest in #730, then PopdownGeneratesMouseEvents,
KeyEventsTest and ConsumeNextMnemonicKeyTypedTest here. Rather than wait for
the remaining fifty-seven to appear a run at a time, this closes the class.

Each inherits the platform list already recorded against its .html, so
nothing is excluded more widely than someone previously decided. Where the
.html says macosx-all the .java now says macosx-all too.

Also adds two seen failing in this run, both already excluded elsewhere:

  AdaptorCloseAndInterrupt  linux-all,macosx-all -> fails on net472 win-x64
  InputVerifierTest2        macosx-all           -> fails on net8.0 linux-x64
PopdownGeneratesMouseEvents failed again despite its .java being generic-all.
The log says 'Applet thread threw exception', so what ran was the .html,
which was still macosx-all. Excluding one half of a pair does nothing if the
other half is what jtreg picks up.

Four pairs disagreed, and they are exactly the four tests that surfaced one
at a time over this work: PopdownGeneratesMouseEvents,
ModalDialogInitialFocusTest, ConsumeForModalDialogTest and KeyEventsTest. In
each case the .java had been widened to generic-all when it failed while the
.html was left as it was, so the applet variant kept running and kept
failing.

Both halves now carry the union of the two platform lists, which for all four
is generic-all.

Worth noting the previous commit had this backwards. It gave each missing
.java the platform list from its .html, on the assumption the .html entry was
correct. That is right where the .html was never the problem, and wrong for
these four where the .html was itself too narrow. The rule that holds in both
directions is that the two halves should agree.
@wasabii
wasabii merged commit 1eca03f into main Aug 15, 2026
194 of 195 checks passed
@wasabii
wasabii deleted the test/reenable-passing branch August 15, 2026 03:49
@wasabii
wasabii restored the test/reenable-passing branch August 15, 2026 03:49
@wasabii
wasabii deleted the test/reenable-passing branch August 15, 2026 03:49
pull Bot pushed a commit to parhelia512/ikvm that referenced this pull request Aug 16, 2026
Moves OpenJdkUpdateVersion from 472 to 482 and the ext/openjdk submodule to
69137c64, the tip of ikvm-jdk8u482-b08.

This is ikvmnet#716 rebuilt on main. That PR targets develop, which has had no
commits since April and none of the CI work from the last few days, so
nothing there could have run cleanly. Its content was four files; the two
workflow changes it carried, moving the Windows runners to windows-2025 and
staging under D:, were attempts at the disk and MSBuild problems that ikvmnet#727
has since solved differently, so they are dropped rather than carried across.

Of the five exclude list changes it made, two already landed independently:
AsyncClose was widened to generic-all in ikvmnet#730 after showing up as a flake on
Windows, and ModalDialogInitialFocusTest in ikvmnet#731. The remaining three are
carried over as they were.
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.

1 participant