Skip to content

Restore scope functions for Block-scoped progress monitor grouping#568

Merged
carstenartur merged 17 commits into
mainfrom
copilot/cleanup-subprogressmonitor-usage
Feb 5, 2026
Merged

Restore scope functions for Block-scoped progress monitor grouping#568
carstenartur merged 17 commits into
mainfrom
copilot/cleanup-subprogressmonitor-usage

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Feb 1, 2026

Reverts removal of scope functions from SubProgressMonitor and done() visitors. These functions group related monitor operations (beginTask + SubProgressMonitor + done) within the same Block scope, enabling proper transformation of logically related elements.

Changes

  • Restored s -> ASTNodes.getTypedAncestor(s, Block.class) scope function to callClassInstanceCreationVisitor for SubProgressMonitor detection
  • Restored same scope function to callMethodInvocationVisitor for done() call detection
  • All three visitors (beginTask, SubProgressMonitor, done) now consistently use Block scope for holder grouping

Technical Context

The scope functions navigate to the containing Block, ensuring visitors operate on Block-scoped holder data. This allows:

void method(IProgressMonitor monitor) {
    monitor.beginTask("Task", 100);              // Block scope holder created
    IProgressMonitor sub = new SubProgressMonitor(monitor, 50);  // Matched to same holder
    monitor.done();                               // Tracked for removal in same holder
}

Without Block scope, visitors would operate on global holder, breaking the logical grouping of related monitor operations within method blocks.

Original prompt

Problem Statement

The sandbox_jface_cleanup plugin is missing several aspects from the Eclipse JDT UI PR #2641 (SubProgressMonitor → SubMonitor migration). This PR should address the following gaps:

1. Handle SubProgressMonitor without preceding beginTask()

Currently, the plugin only processes SubProgressMonitor instances that appear after a beginTask() call. The cleanup should also handle standalone SubProgressMonitor constructions and convert them to SubMonitor.convert().

Current behavior: Requires beginTask() to be present before SubProgressMonitor
Expected: Also transform standalone new SubProgressMonitor(monitor, ticks)SubMonitor.convert(monitor, ticks)

2. Flag Translation for SUPPRESS_SUBTASK_LABEL

The SubProgressMonitor.SUPPRESS_SUBTASK_LABEL flag should be mapped to SubMonitor.SUPPRESS_SUBTASK instead of being passed through unchanged.

Current behavior: Passes flags through as-is
Expected: Transform SubProgressMonitor.SUPPRESS_SUBTASK_LABELSubMonitor.SUPPRESS_SUBTASK

3. Handle PREPEND_MAIN_LABEL_TO_SUBTASK Correctly

The PREPEND_MAIN_LABEL_TO_SUBTASK flag has no equivalent in SubMonitor API. The transformation should drop this flag and use plain split().

Current behavior: Documentation suggests using .setWorkRemaining()
Expected: Drop the flag entirely and use plain split(ticks) since there's no replacement

4. Remove Redundant monitor.done() Calls

SubMonitor handles cleanup automatically. The cleanup should detect and remove redundant calls to monitor.done() or subMonitor.done() after migration.

Current behavior: Does not handle done() calls
Expected: Remove done() calls on SubMonitor instances (optional, can be a separate cleanup option)

5. Runtime instanceof SubMonitor Check (Lower Priority)

For utility methods that receive an IProgressMonitor parameter, the PR adds runtime checks:

if (monitor instanceof SubMonitor) {
    return ((SubMonitor) monitor).split(ticks);
}
return SubMonitor.convert(monitor, ticks);

This is a more advanced pattern that may be out of scope for a source cleanup, but documenting it for completeness.

Files to Modify

  • sandbox_jface_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JFacePlugin.java - Main transformation logic
  • sandbox_jface_cleanup/README.md - Update documentation for PREPEND_MAIN_LABEL_TO_SUBTASK handling
  • sandbox_jface_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java - Add test cases for new scenarios

Reference

  • Eclipse JDT UI PR #2641 - Shows the correct migration patterns
  • Key changes in PR #2641:
    • Progress.java: Shows instanceof SubMonitor pattern and flag mapping
    • CompilationUnitDocumentProvider.java: Shows removal of done() calls and helper methods
    • EditorUtility.java: Shows removal of getSubProgressMonitor helper method

Acceptance Criteria

  1. Standalone SubProgressMonitor (without beginTask()) is converted to SubMonitor.convert()
  2. SubProgressMonitor.SUPPRESS_SUBTASK_LABEL is mapped to SubMonitor.SUPPRESS_SUBTASK
  3. SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK is dropped (uses plain split())
  4. Documentation updated to reflect correct PREPEND_MAIN_LABEL_TO_SUBTASK handling
  5. Test cases added for all new scenarios
  6. (Optional) done() calls on converted SubMonitor instances are removed

This pull request was created from Copilot chat.


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

@carstenartur carstenartur marked this pull request as ready for review February 1, 2026 14:49
Copilot AI review requested due to automatic review settings February 1, 2026 14:49
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 1, 2026

JUnit Test Overview Report

Generated on: 21722632369

Overall Statistics

  • Total Test Modules: 12
  • Total Test Files: 86
  • Total Tests: 1492
  • Enabled Tests: 1413 (94.7%)
  • Disabled Tests: 79 (5.3%)

Test Summary by Plugin

Plugin Test Files Total Tests Enabled Disabled Disabled %
sandbox_cleanup_application_test 1 20 20 0 0.0%
sandbox_common_test 21 383 383 0 0.0%
sandbox_encoding_quickfix_test 3 8 8 0 0.0%
sandbox_functional_converter_test 26 397 353 44 11.1%
sandbox_jface_cleanup_test 1 2 2 0 0.0%
sandbox_junit_cleanup_test 25 579 545 34 5.9%
sandbox_method_reuse_test 1 1 1 0 0.0%
sandbox_platform_helper_test 2 6 5 1 16.7%
sandbox_tools_test 1 2 2 0 0.0%
sandbox_triggerpattern_test 1 46 46 0 0.0%
sandbox_usage_view_test 1 10 10 0 0.0%
sandbox_xml_cleanup_test 3 38 38 0 0.0%

Disabled Tests Details

sandbox_functional_converter_test (44 disabled)

  • org.sandbox.jdt.ui.tests.quickfix.covers.testIndexBasedForLoop_toIntStream() - Index-based for-loops not yet supported - requires range analysis
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/AdditionalLoopPatternsTest.java:226
  • org.sandbox.jdt.ui.tests.quickfix.covers.process() - Index-based for-loops not yet supported - requires range analysis
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/AdditionalLoopPatternsTest.java:232
  • org.sandbox.jdt.ui.tests.quickfix.covers.testIndexBasedCollectionLoop_toStream() - Index-based collection access not yet supported
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/AdditionalLoopPatternsTest.java:270
  • org.sandbox.jdt.ui.tests.quickfix.covers.process() - Index-based collection access not yet supported
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/AdditionalLoopPatternsTest.java:277
  • org.sandbox.jdt.ui.tests.quickfix.covers.testMultipleLoopsPopulatingList_currentBuggyBehavior() - FIXED: Bug has been fixed - multiple loops now use Stream.concat()
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/AdditionalLoopPatternsTest.java:515
  • org.sandbox.jdt.ui.tests.quickfix.covers.test_NestedForEach_ShouldConvertInnerOnly() - Inner loop conversion in nested context not yet implemented - requires multi-pass cleanup execution
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/FunctionalLoopNestedAndEdgeCaseTest.java:89
  • org.sandbox.jdt.ui.tests.quickfix.covers.processMatrix() - Inner loop conversion in nested context not yet implemented - requires multi-pass cleanup execution
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/FunctionalLoopNestedAndEdgeCaseTest.java:96
  • org.sandbox.jdt.ui.tests.quickfix.covers.test_NestedForEach_InnerLoopConverts() - Inner loop conversion in nested context not yet implemented
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/FunctionalLoopNestedAndEdgeCaseTest.java:222
  • org.sandbox.jdt.ui.tests.quickfix.covers.processMatrix() - Inner loop conversion in nested context not yet implemented
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/FunctionalLoopNestedAndEdgeCaseTest.java:229
  • org.sandbox.jdt.ui.tests.quickfix.focuses.testIterator_forEachWithMultipleStatements() - Iterator multi-statement block lambda not yet fully implemented; re-enable when block handling is complete
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/IteratorLoopToStreamTest.java:159
  • org.sandbox.jdt.ui.tests.quickfix.focuses.process() - Iterator multi-statement block lambda not yet fully implemented; re-enable when block handling is complete
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/IteratorLoopToStreamTest.java:166
  • org.sandbox.jdt.ui.tests.quickfix.focuses.testIterator_collectToList() - Iterator collect-to-List pipeline not yet implemented; re-enable when iterator patterns support collect/map/filter/reduce
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/IteratorLoopToStreamTest.java:211
  • org.sandbox.jdt.ui.tests.quickfix.focuses.testIterator_collectToSet() - Iterator collect-to-Set pipeline not yet implemented; re-enable when iterator patterns support collect/map/filter/reduce
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/IteratorLoopToStreamTest.java:259
  • org.sandbox.jdt.ui.tests.quickfix.focuses.testIterator_mapAndCollect() - Iterator map+collect pipeline not yet implemented; re-enable when iterator patterns support collect/map/filter/reduce
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/IteratorLoopToStreamTest.java:311
  • org.sandbox.jdt.ui.tests.quickfix.focuses.testIterator_mapWithMethodReference() - Iterator map pipeline not yet implemented; re-enable when iterator patterns support collect/map/filter/reduce
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/IteratorLoopToStreamTest.java:361
  • org.sandbox.jdt.ui.tests.quickfix.focuses.testIterator_filterAndCollect() - Iterator filter+collect pipeline not yet implemented; re-enable when iterator patterns support collect/map/filter/reduce
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/IteratorLoopToStreamTest.java:415
  • org.sandbox.jdt.ui.tests.quickfix.focuses.testIterator_filterMapAndCollect() - Iterator filter+map+collect pipeline not yet implemented; re-enable when iterator patterns support collect/map/filter/reduce
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/IteratorLoopToStreamTest.java:471
  • org.sandbox.jdt.ui.tests.quickfix.focuses.testIterator_sumReduction() - Iterator reduce pipeline not yet implemented; re-enable when iterator patterns support collect/map/filter/reduce
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/IteratorLoopToStreamTest.java:528
  • org.sandbox.jdt.ui.tests.quickfix.focuses.calculateSum() - Iterator reduce pipeline not yet implemented; re-enable when iterator patterns support collect/map/filter/reduce
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/IteratorLoopToStreamTest.java:535
  • org.sandbox.jdt.ui.tests.quickfix.focuses.testIterator_withExternalModification_notConverted() - No reason specified
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/IteratorLoopToStreamTest.java:699
  • org.sandbox.jdt.ui.tests.quickfix.focuses.trackLast() - No reason specified
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/IteratorLoopToStreamTest.java:706
  • org.sandbox.jdt.ui.tests.quickfix.validates.testStreamToFor_forEach() - Stream → for transformation not yet implemented - future enhancement
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopBidirectionalTransformationTest.java:161
  • org.sandbox.jdt.ui.tests.quickfix.validates.process() - Stream → for transformation not yet implemented - future enhancement
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopBidirectionalTransformationTest.java:168
  • org.sandbox.jdt.ui.tests.quickfix.validates.testForToWhile_iterator() - for → while transformation not yet implemented - niche use case
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopBidirectionalTransformationTest.java:207
  • org.sandbox.jdt.ui.tests.quickfix.validates.process() - for → while transformation not yet implemented - niche use case
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopBidirectionalTransformationTest.java:214
  • org.sandbox.jdt.ui.tests.quickfix.validates.testWhileToFor_iterator() - while → for transformation not yet implemented - alternative to Iterator → Stream
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopBidirectionalTransformationTest.java:258
  • org.sandbox.jdt.ui.tests.quickfix.validates.process() - while → for transformation not yet implemented - alternative to Iterator → Stream
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopBidirectionalTransformationTest.java:265
  • org.sandbox.jdt.ui.tests.quickfix.focuses.testFilteredCollect() - No reason specified
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopRefactoringCollectTest.java:296
  • org.sandbox.jdt.ui.tests.quickfix.focuses.process() - No reason specified
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopRefactoringCollectTest.java:301
  • org.sandbox.jdt.ui.tests.quickfix.focuses.testNullFilteredCollect() - No reason specified
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopRefactoringCollectTest.java:340
  • org.sandbox.jdt.ui.tests.quickfix.focuses.process() - No reason specified
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopRefactoringCollectTest.java:345
  • org.sandbox.jdt.ui.tests.quickfix.focuses.testFilterMapCollect() - No reason specified
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopRefactoringCollectTest.java:389
  • org.sandbox.jdt.ui.tests.quickfix.focuses.process() - No reason specified
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopRefactoringCollectTest.java:394
  • org.sandbox.jdt.ui.tests.quickfix.focuses.testComplexFilterMapCollect() - No reason specified
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopRefactoringCollectTest.java:433
  • org.sandbox.jdt.ui.tests.quickfix.focuses.process() - No reason specified
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopRefactoringCollectTest.java:438
  • org.sandbox.jdt.ui.tests.quickfix.focuses.testArraySourceCollect() - No reason specified
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopRefactoringCollectTest.java:482
  • org.sandbox.jdt.ui.tests.quickfix.focuses.process() - No reason specified
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopRefactoringCollectTest.java:487
  • org.sandbox.jdt.ui.tests.quickfix.focuses.testArraySourceMapCollect() - No reason specified
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopRefactoringCollectTest.java:525
  • org.sandbox.jdt.ui.tests.quickfix.focuses.process() - No reason specified
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopRefactoringCollectTest.java:530
  • org.sandbox.jdt.ui.tests.quickfix.focuses.testCollectWithSideEffects_ShouldNotConvert() - BUG: V1 implementation incorrectly converts and loses the counter++ side effect
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopRefactoringCollectTest.java:574
  • org.sandbox.jdt.ui.tests.quickfix.focuses.process() - BUG: V1 implementation incorrectly converts and loses the counter++ side effect
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopRefactoringCollectTest.java:580
  • org.sandbox.jdt.ui.tests.quickfix.focuses.testUnusedElement() - Pattern not converting in V1 - needs investigation
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopRefactoringEdgeCasesTest.java:633
  • org.sandbox.jdt.ui.tests.quickfix.focuses.main() - Pattern not converting in V1 - needs investigation
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopRefactoringEdgeCasesTest.java:639
  • org.sandbox.jdt.ui.tests.quickfix.focuses.MyTest() - Pattern not converting in V1 - needs investigation
    • File: sandbox_functional_converter_test/src/org/sandbox/jdt/ui/tests/quickfix/LoopRefactoringEdgeCasesTest.java:640

sandbox_junit_cleanup_test (34 disabled)

  • org.eclipse.jdt.ui.tests.quickfix.Java8.JUnitMigrationCleanUpTest.testJUnitCleanupParametrized() - Suite migration needs debugging - @suite annotation added but import org.junit.platform.suite.api.Suite not properly managed
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java:77
  • org.eclipse.jdt.ui.tests.quickfix.Java8.JUnitMigrationCleanUpTest.testJUnit3CleanupParametrized() - No reason specified
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/JUnitMigrationCleanUpTest.java:101
  • org.eclipse.jdt.ui.tests.quickfix.Java8.LostTestFinderTest.testNotYetImplemented() - No reason specified
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/LostTestFinderTest.java:186
  • org.eclipse.jdt.ui.tests.quickfix.Java8.MigrationCombinationsTest.ignoredTest() - No reason specified
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/MigrationCombinationsTest.java:130
  • org.eclipse.jdt.ui.tests.quickfix.Java8.MigrationCombinationsTest.testWithAssertions() - No reason specified
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/MigrationCombinationsTest.java:135
  • org.eclipse.jdt.ui.tests.quickfix.Java8.MigrationCombinationsTest.testIgnored() - Not ready
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/MigrationCombinationsTest.java:432
  • org.eclipse.jdt.ui.tests.quickfix.Java8.MigrationEdgeCasesTest.testIgnored() - Not yet implemented
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/MigrationEdgeCasesTest.java:174
  • org.eclipse.jdt.ui.tests.quickfix.Java8.MigrationEdgeCasesTest.handles_wildcard_static_imports() - Not yet implemented
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/MigrationEdgeCasesTest.java:182
  • org.eclipse.jdt.ui.tests.quickfix.Java8.MigrationIgnoreTest.ignoredTest() - No reason specified
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/MigrationIgnoreTest.java:73
  • org.eclipse.jdt.ui.tests.quickfix.Java8.MigrationIgnoreTest.migrates_ignore_with_message() - No reason specified
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/MigrationIgnoreTest.java:81
  • org.eclipse.jdt.ui.tests.quickfix.Java8.MigrationIgnoreTest.ignoredTestWithMessage() - Not yet implemented
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/MigrationIgnoreTest.java:110
  • org.eclipse.jdt.ui.tests.quickfix.Java8.MigrationIgnoreTest.migrates_multiple_ignored_tests() - Not yet implemented
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/MigrationIgnoreTest.java:118
  • org.eclipse.jdt.ui.tests.quickfix.Java8.MigrationIgnoreTest.ignoredTest1() - No reason specified
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/MigrationIgnoreTest.java:156
  • org.eclipse.jdt.ui.tests.quickfix.Java8.MigrationIgnoreTest.ignoredTest2() - Temporarily disabled
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/MigrationIgnoreTest.java:161
  • org.eclipse.jdt.ui.tests.quickfix.Java8.MigrationIgnoreTest.activeTest() - Temporarily disabled
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/MigrationIgnoreTest.java:165
  • org.eclipse.jdt.ui.tests.quickfix.Java8.MigrationIgnoreTest.ignoredTestWithExplicitValue() - explicit value attribute
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/MigrationIgnoreTest.java:202
  • org.eclipse.jdt.ui.tests.quickfix.Java8.MigrationRulesToExtensionsTest.migrates_externalResource_anonymous_class() - Anonymous ExternalResource migration generates hash-based class names - covered by JUnitMigrationCleanUpTest.testJUnitCleanupSelectedCase with JUnitCleanupCases.RuleAnonymousExternalResource
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/MigrationRulesToExtensionsTest.java:277
  • org.eclipse.jdt.ui.tests.quickfix.Java8.MigrationRulesToExtensionsTest.migrates_classRule_to_static_extension() - ClassRule migration generates hash-based class names - covered by JUnitMigrationCleanUpTest.testJUnitCleanupSelectedCase with JUnitCleanupCases.RuleNestedExternalResource
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/MigrationRulesToExtensionsTest.java:286
  • org.eclipse.jdt.ui.tests.quickfix.Java8.MigrationRulesToExtensionsTest.migrates_timeout_rule_with_seconds() - ClassRule migration generates hash-based class names - covered by JUnitMigrationCleanUpTest.testJUnitCleanupSelectedCase with JUnitCleanupCases.RuleNestedExternalResource
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/MigrationRulesToExtensionsTest.java:294
  • org.eclipse.jdt.ui.tests.quickfix.Java8.MigrationRunnersTest.migrates_runWith_mockito() - Runner detection needs debugging - type bindings fail when Mockito library not on classpath
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/MigrationRunnersTest.java:150
  • org.eclipse.jdt.ui.tests.quickfix.Java8.MigrationRunnersTest.migrates_runWith_spring() - Runner detection needs debugging - type bindings fail when Spring library not on classpath
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/MigrationRunnersTest.java:200
  • org.eclipse.jdt.ui.tests.quickfix.Java8.TriggerPatternPluginTest.testIgnored() - Not ready yet
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/TriggerPatternPluginTest.java:296
  • org.eclipse.jdt.ui.tests.quickfix.Java8.TriggerPatternPluginTest.ignoreJUnitPluginV2_migrates_without_reason() - Not ready yet
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/TriggerPatternPluginTest.java:304
  • org.eclipse.jdt.ui.tests.quickfix.Java8.TriggerPatternPluginTest.testIgnored() - No reason specified
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/TriggerPatternPluginTest.java:333
  • org.eclipse.jdt.ui.tests.quickfix.Java8.TriggerPatternPluginTest.v2_plugins_work_together_in_complex_class() - No reason specified
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/TriggerPatternPluginTest.java:341
  • org.eclipse.jdt.ui.tests.quickfix.Java8.TriggerPatternPluginTest.testIgnored() - Not ready
    • File: sandbox_junit_cleanup_test/src/org/eclipse/jdt/ui/tests/quickfix/Java8/TriggerPatternPluginTest.java:422
  • org.sandbox.jdt.internal.corext.fix.helper.verifies.testSomething() - not implemented
    • File: sandbox_junit_cleanup_test/src/org/sandbox/jdt/internal/corext/fix/helper/TriggerPatternCleanupFrameworkTest.java:179
  • org.sandbox.jdt.internal.corext.fix.helper.verifies.testSomething() - not ready
    • File: sandbox_junit_cleanup_test/src/org/sandbox/jdt/internal/corext/fix/helper/TriggerPatternCleanupFrameworkTest.java:251
  • org.sandbox.jdt.internal.corext.fix.helper.verifies.testSingleMemberAnnotation_IgnoreToDisabled() - No reason specified
    • File: sandbox_junit_cleanup_test/src/org/sandbox/jdt/internal/corext/fix/helper/TriggerPatternCleanupFrameworkTest.java:426
  • org.sandbox.jdt.internal.corext.fix.helper.verifies.testFeature() - Feature not ready
    • File: sandbox_junit_cleanup_test/src/org/sandbox/jdt/internal/corext/fix/helper/TriggerPatternCleanupFrameworkTest.java:455
  • org.sandbox.jdt.internal.corext.fix.helper.verifies.testSomething() - TODO: implement
    • File: sandbox_junit_cleanup_test/src/org/sandbox/jdt/internal/corext/fix/helper/TriggerPatternCleanupFrameworkTest.java:493
  • org.sandbox.jdt.internal.corext.fix.helper.verifies.testSomething() - not ready
    • File: sandbox_junit_cleanup_test/src/org/sandbox/jdt/internal/corext/fix/helper/TriggerPatternCleanupFrameworkTest.java:647
  • org.sandbox.jdt.internal.corext.fix.helper.verifies.testSomething() - No reason specified
    • File: sandbox_junit_cleanup_test/src/org/sandbox/jdt/internal/corext/fix/helper/TriggerPatternCleanupFrameworkTest.java:685
  • org.sandbox.jdt.internal.corext.fix.helper.verifies.testSomething() - TODO: fix\nline breaks & special chars
    • File: sandbox_junit_cleanup_test/src/org/sandbox/jdt/internal/corext/fix/helper/TriggerPatternCleanupFrameworkTest.java:754

sandbox_platform_helper_test (1 disabled)

  • org.sandbox.jdt.ui.tests.quickfix.Java9CleanUpTest.testPlatformStatusParametrized() - Temporary disable - import handling needs investigation
    • File: sandbox_platform_helper_test/src/org/sandbox/jdt/ui/tests/quickfix/Java9CleanUpTest.java:90

This report is automatically generated by the Test Report workflow

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This pull request enhances the JFace cleanup plugin to improve the SubProgressMonitor → SubMonitor migration by addressing gaps identified from Eclipse JDT UI PR #2641. The PR is marked as [WIP] (Work in Progress).

Changes:

  • Adds support for standalone SubProgressMonitor (without preceding beginTask) conversion to SubMonitor.convert()
  • Implements flag mapping from SubProgressMonitor.SUPPRESS_SUBTASK_LABEL to SubMonitor.SUPPRESS_SUBTASK
  • Implements flag dropping for SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK (no SubMonitor equivalent)
  • Adds test cases for the new transformation patterns
  • Updates documentation to reflect the new capabilities

Reviewed changes

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

File Description
sandbox_jface_cleanup/src/org/sandbox/jdt/internal/corext/fix/helper/JFacePlugin.java Implements standalone SubProgressMonitor detection, flag mapping logic (SUPPRESS_SUBTASK_LABEL → SUPPRESS_SUBTASK), and flag dropping (PREPEND_MAIN_LABEL_TO_SUBTASK)
sandbox_jface_cleanup/src/org/sandbox/jdt/internal/corext/fix/JfaceCleanUpFixCore.java Adds null-safe handling for standalone SubProgressMonitor cases where minv can be null
sandbox_jface_cleanup_test/src/org/sandbox/jdt/ui/tests/quickfix/Java8CleanUpTest.java Adds three new test cases: StandaloneSubProgressMonitor, SuppressSubtaskLabelFlag, and PrependMainLabelToSubtaskFlag
sandbox_jface_cleanup/README.md Updates documentation with flag mapping examples, clarifies PREPEND_MAIN_LABEL_TO_SUBTASK behavior, and adds standalone conversion feature to key features

Comment on lines +324 to +326
// Handle flags if present (third arg)
// Note: SubMonitor.convert() doesn't accept flags, so we ignore them for standalone conversion
// The flags would only be relevant for split() calls
Copy link

Copilot AI Feb 1, 2026

Choose a reason for hiding this comment

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

The implementation silently drops flags for standalone SubProgressMonitor instances. When a 3-arg SubProgressMonitor constructor is used without a preceding beginTask (e.g., new SubProgressMonitor(monitor, 50, SubProgressMonitor.SUPPRESS_SUBTASK_LABEL)), the flags are ignored and the conversion produces SubMonitor.convert(monitor, 50) without any flags.

This is problematic because SubMonitor.convert() does not accept flags - flags are only applicable to the split() method. However, for standalone SubProgressMonitor cases, there is no split() call being generated, so the flags cannot be preserved.

Consider either:

  1. Not transforming standalone SubProgressMonitor with flags (skip them with a warning/comment)
  2. Generating a pattern like SubMonitor.convert(monitor, work).split(work, mappedFlags) which preserves the flag behavior
  3. Documenting this as a known limitation with explicit test coverage showing the flag-dropping behavior

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Addressed in commit b121e22. Added explicit documentation in code comments and README.md that flags are intentionally dropped for standalone SubProgressMonitor instances since SubMonitor.convert() doesn't accept flags. Also added test case StandaloneSubProgressMonitorWithFlags to demonstrate this behavior.

Comment on lines +302 to +326
StandaloneSubProgressMonitor(
"""
package test;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.SubProgressMonitor;
public class Test {
public void doWork(IProgressMonitor monitor) {
IProgressMonitor sub = new SubProgressMonitor(monitor, 50);
// Use sub monitor
sub.worked(10);
}
}
""", //$NON-NLS-1$
"""
package test;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.SubMonitor;
public class Test {
public void doWork(IProgressMonitor monitor) {
IProgressMonitor sub = SubMonitor.convert(monitor, 50);
// Use sub monitor
sub.worked(10);
}
}
"""), //$NON-NLS-1$
Copy link

Copilot AI Feb 1, 2026

Choose a reason for hiding this comment

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

Missing test coverage for standalone SubProgressMonitor with flags (3-arg constructor). The current test only covers the 2-arg constructor case. A test case should be added to verify the behavior when flags are present in standalone SubProgressMonitor instances, especially given that the current implementation silently drops these flags.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Added in commit b121e22. New test case StandaloneSubProgressMonitorWithFlags verifies that flags are dropped when converting standalone SubProgressMonitor with 3-arg constructor.

Comment on lines +480 to +516
private Expression mapSubProgressMonitorFlags(Expression flagExpr, AST ast, CompilationUnitRewrite cuRewrite) {
// Handle field access: SubProgressMonitor.SUPPRESS_SUBTASK_LABEL
if (flagExpr instanceof QualifiedName) {
QualifiedName qn = (QualifiedName) flagExpr;
String fieldName = qn.getName().getIdentifier();

if ("SUPPRESS_SUBTASK_LABEL".equals(fieldName)) { //$NON-NLS-1$
// Map to SubMonitor.SUPPRESS_SUBTASK
QualifiedName newFlag = ast.newQualifiedName(
ast.newSimpleName(SubMonitor.class.getSimpleName()),
ast.newSimpleName("SUPPRESS_SUBTASK")); //$NON-NLS-1$
return newFlag;
} else if ("PREPEND_MAIN_LABEL_TO_SUBTASK".equals(fieldName)) { //$NON-NLS-1$
// Drop this flag - no equivalent in SubMonitor
return null;
}
}

// Handle field access: SubProgressMonitor.SUPPRESS_SUBTASK_LABEL
if (flagExpr instanceof FieldAccess) {
FieldAccess fa = (FieldAccess) flagExpr;
String fieldName = fa.getName().getIdentifier();

if ("SUPPRESS_SUBTASK_LABEL".equals(fieldName)) { //$NON-NLS-1$
// Map to SubMonitor.SUPPRESS_SUBTASK
FieldAccess newFlag = ast.newFieldAccess();
newFlag.setExpression(ast.newSimpleName(SubMonitor.class.getSimpleName()));
newFlag.setName(ast.newSimpleName("SUPPRESS_SUBTASK")); //$NON-NLS-1$
return newFlag;
} else if ("PREPEND_MAIN_LABEL_TO_SUBTASK".equals(fieldName)) { //$NON-NLS-1$
// Drop this flag - no equivalent in SubMonitor
return null;
}
}

// For other expressions (constants, variables), pass through unchanged
return ASTNodes.createMoveTarget(cuRewrite.getASTRewrite(), ASTNodes.getUnparenthesedExpression(flagExpr));
Copy link

Copilot AI Feb 1, 2026

Choose a reason for hiding this comment

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

The flag mapping implementation only handles QualifiedName and FieldAccess patterns for individual flag constants. It does not handle combined flag expressions using bitwise OR (e.g., SubProgressMonitor.SUPPRESS_SUBTASK_LABEL | SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK) or numeric literals representing flag values.

If such patterns exist in real code, they will be passed through unchanged (line 516), which could result in incorrect flag values being used with SubMonitor. Consider adding handling for InfixExpression nodes to properly map or drop flags in combined expressions, or documenting this as a known limitation.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Documented in commit b121e22. Added JavaDoc explaining this limitation in the mapSubProgressMonitorFlags method and added corresponding limitation note in README.md. Combined flag expressions and numeric literals are explicitly called out as requiring manual review.


- Does not handle complex style flag combinations (only `PREPEND_MAIN_LABEL_TO_SUBTASK`)
- Does not automatically remove `done()` calls (SubMonitor handles cleanup automatically)
- Custom SubProgressMonitor subclasses require manual review
Copy link

Copilot AI Feb 1, 2026

Choose a reason for hiding this comment

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

The documentation does not clarify the behavior for standalone SubProgressMonitor with flags. The examples on lines 85-99 only show flag behavior "in beginTask context" but don't mention what happens when a standalone SubProgressMonitor is created with flags. Since the implementation silently drops flags for standalone cases, this should be documented in the Limitations section to set user expectations.

Suggested change
- Custom SubProgressMonitor subclasses require manual review
- Custom SubProgressMonitor subclasses require manual review
- When converting standalone `SubProgressMonitor` instances (created without a surrounding `beginTask`), any style flags are silently ignored, as `SubMonitor` does not support them in this context

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Added in commit b121e22. Updated README.md Limitations section to explicitly document that standalone SubProgressMonitor instances with flags will have those flags silently ignored.

}
}

// Handle field access: SubProgressMonitor.SUPPRESS_SUBTASK_LABEL
Copy link

Copilot AI Feb 1, 2026

Choose a reason for hiding this comment

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

Duplicate comment. The comment on line 498 is identical to the comment on line 481. The comment should be more specific - perhaps "Handle FieldAccess syntax (e.g., expression.FIELD_NAME)" to distinguish it from the QualifiedName handling above.

Suggested change
// Handle field access: SubProgressMonitor.SUPPRESS_SUBTASK_LABEL
// Handle FieldAccess syntax (e.g., expression.FIELD_NAME)

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fixed in commit b121e22. Changed comment to "Handle FieldAccess syntax (e.g., expression.FIELD_NAME)" to distinguish it from the QualifiedName handling above.

@carstenartur
Copy link
Copy Markdown
Owner

@copilot 2026-02-01T14:55:54.2893457Z Tests run: 13, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 5.005 s <<< FAILURE! -- in org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest
2026-02-01T14:55:54.2895798Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupdonttouch(NOJFaceCleanupCases)[1] -- Time elapsed: 1.836 s
2026-02-01T14:55:54.2897843Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[1] -- Time elapsed: 0.749 s
2026-02-01T14:55:54.2899790Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[2] -- Time elapsed: 0.398 s
2026-02-01T14:55:54.2901757Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[3] -- Time elapsed: 0.235 s
2026-02-01T14:55:54.2903832Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[4] -- Time elapsed: 0.252 s
2026-02-01T14:55:54.2905746Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[5] -- Time elapsed: 0.144 s
2026-02-01T14:55:54.2907696Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[6] -- Time elapsed: 0.177 s
2026-02-01T14:55:54.2909653Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[7] -- Time elapsed: 0.217 s
2026-02-01T14:55:54.2911557Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[8] -- Time elapsed: 0.219 s
2026-02-01T14:55:54.2913426Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[9] -- Time elapsed: 0.113 s <<< FAILURE!
2026-02-01T14:55:54.2914517Z org.opentest4j.AssertionFailedError:
2026-02-01T14:55:54.2914931Z expected: <package test;
2026-02-01T14:55:54.2915361Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T14:55:54.2915895Z import org.eclipse.core.runtime.SubMonitor;
2026-02-01T14:55:54.2916322Z public class Test {
2026-02-01T14:55:54.2916695Z public void doWork(IProgressMonitor monitor) {
2026-02-01T14:55:54.2917248Z IProgressMonitor sub = SubMonitor.convert(monitor, 50);
2026-02-01T14:55:54.2917737Z // Use sub monitor
2026-02-01T14:55:54.2918027Z sub.worked(10);
2026-02-01T14:55:54.2918293Z }
2026-02-01T14:55:54.2918517Z }
2026-02-01T14:55:54.2918754Z > but was: <package test;
2026-02-01T14:55:54.2919169Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T14:55:54.2919710Z import org.eclipse.core.runtime.SubProgressMonitor;
2026-02-01T14:55:54.2920177Z public class Test {
2026-02-01T14:55:54.2920519Z public void doWork(IProgressMonitor monitor) {
2026-02-01T14:55:54.2921075Z IProgressMonitor sub = new SubProgressMonitor(monitor, 50);
2026-02-01T14:55:54.2921561Z // Use sub monitor
2026-02-01T14:55:54.2921846Z sub.worked(10);
2026-02-01T14:55:54.2922101Z }
2026-02-01T14:55:54.2922314Z }
2026-02-01T14:55:54.2922530Z >
2026-02-01T14:55:54.2923223Z at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
2026-02-01T14:55:54.2924321Z at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
2026-02-01T14:55:54.2925279Z at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
2026-02-01T14:55:54.2926062Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
2026-02-01T14:55:54.2926840Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
2026-02-01T14:55:54.2927605Z at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1145)
2026-02-01T14:55:54.2929069Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertEqualStringsIgnoreOrder(AbstractEclipseJava.java:628)
2026-02-01T14:55:54.2930621Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertRefactoringResultAsExpected(AbstractEclipseJava.java:534)
2026-02-01T14:55:54.2932059Z at org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(Java8CleanUpTest.java:420)
2026-02-01T14:55:54.2933471Z at java.base/java.lang.reflect.Method.invoke(Method.java:580)
2026-02-01T14:55:54.2934097Z at java.base/java.util.Optional.ifPresent(Optional.java:178)
2026-02-01T14:55:54.2934798Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T14:55:54.2935663Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T14:55:54.2936640Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T14:55:54.2937634Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T14:55:54.2938619Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T14:55:54.2939524Z at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
2026-02-01T14:55:54.2940513Z at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
2026-02-01T14:55:54.2941619Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T14:55:54.2942689Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T14:55:54.2944023Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T14:55:54.2945118Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T14:55:54.2946085Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T14:55:54.2946978Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T14:55:54.2947955Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T14:55:54.2949016Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T14:55:54.2950095Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T14:55:54.2951204Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T14:55:54.2952347Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T14:55:54.2953739Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T14:55:54.2954841Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T14:55:54.2955881Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T14:55:54.2956835Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T14:55:54.2957827Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T14:55:54.2958871Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T14:55:54.2959889Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T14:55:54.2961023Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T14:55:54.2962114Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T14:55:54.2963372Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T14:55:54.2964474Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T14:55:54.2965763Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T14:55:54.2966876Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T14:55:54.2967885Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T14:55:54.2968781Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T14:55:54.2969493Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T14:55:54.2971008Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[10] -- Time elapsed: 0.133 s
2026-02-01T14:55:54.2972718Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[11] -- Time elapsed: 0.133 s
2026-02-01T14:55:54.2974645Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[12] -- Time elapsed: 0.237 s
2026-02-01T14:55:54.2975717Z Results:
2026-02-01T14:55:54.2975984Z Failures:
2026-02-01T14:55:54.3160545Z Java8CleanUpTest.testJFaceCleanupParametrized:420 expected: <package test;
2026-02-01T14:55:54.3161498Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T14:55:54.3162123Z import org.eclipse.core.runtime.SubMonitor;
2026-02-01T14:55:54.3162650Z public class Test {
2026-02-01T14:55:54.3163341Z public void doWork(IProgressMonitor monitor) {
2026-02-01T14:55:54.3164136Z IProgressMonitor sub = SubMonitor.convert(monitor, 50);
2026-02-01T14:55:54.3164916Z // Use sub monitor
2026-02-01T14:55:54.3165435Z sub.worked(10);
2026-02-01T14:55:54.3165903Z }
2026-02-01T14:55:54.3166324Z }
2026-02-01T14:55:54.3166768Z > but was: <package test;
2026-02-01T14:55:54.3167386Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T14:55:54.3168210Z import org.eclipse.core.runtime.SubProgressMonitor;
2026-02-01T14:55:54.3168909Z public class Test {
2026-02-01T14:55:54.3169401Z public void doWork(IProgressMonitor monitor) {
2026-02-01T14:55:54.3170213Z IProgressMonitor sub = new SubProgressMonitor(monitor, 50);
2026-02-01T14:55:54.3171002Z // Use sub monitor
2026-02-01T14:55:54.3171519Z sub.worked(10);
2026-02-01T14:55:54.3172064Z }
2026-02-01T14:55:54.3172470Z }
2026-02-01T14:55:54.3173031Z >
2026-02-01T14:55:54.3173472Z Tests run: 13, Failures: 1, Errors: 0, Skipped: 0
2026-02-01T14:55:55.9123675Z [INFO]

@carstenartur
Copy link
Copy Markdown
Owner

@copilot Consider Review comments

Copilot AI changed the title [WIP] Fix incomplete migration of SubProgressMonitor to SubMonitor [WIP] Add SubProgressMonitor flag mapping; standalone transformation incomplete Feb 1, 2026
Copilot AI requested a review from carstenartur February 1, 2026 16:12
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Feb 1, 2026

@copilot Consider Review comments

Review comments addressed in commit b121e22:

  1. ✅ Documented flag dropping behavior for standalone SubProgressMonitor (README + code comments)
  2. ✅ Added test case for standalone SubProgressMonitor with flags
  3. ✅ Documented bitwise OR limitation in flag mapping
  4. ✅ Fixed duplicate comment
  5. ✅ Updated README limitations section

Note: The standalone SubProgressMonitor transformation (test [9]) is still failing as mentioned in the PR description. The infrastructure is in place but requires further debugging of the AST visitor chain to make it functional.

@carstenartur carstenartur force-pushed the copilot/cleanup-subprogressmonitor-usage branch from b121e22 to f9ffb69 Compare February 1, 2026 16:48
Copilot AI changed the title [WIP] Add SubProgressMonitor flag mapping; standalone transformation incomplete Add automatic done() call removal for SubMonitor migration Feb 1, 2026
@carstenartur
Copy link
Copy Markdown
Owner

@copilot 2026-02-01T18:12:25.7909806Z Running org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest
2026-02-01T18:12:27.5017143Z
2026-02-01T18:12:27.5018724Z (java:4680): dbind-WARNING **: 18:12:27.495: AT-SPI: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files
2026-02-01T18:12:32.2061631Z Tests run: 16, Failures: 14, Errors: 0, Skipped: 0, Time elapsed: 6.173 s <<< FAILURE! -- in org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest
2026-02-01T18:12:32.2120009Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupdonttouch(NOJFaceCleanupCases)[1] -- Time elapsed: 2.349 s
2026-02-01T18:12:32.2122015Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[1] -- Time elapsed: 0.287 s <<< FAILURE!
2026-02-01T18:12:32.2123529Z org.opentest4j.AssertionFailedError:
2026-02-01T18:12:32.2124313Z expected: <package test;
2026-02-01T18:12:32.2124863Z import java.util.;
2026-02-01T18:12:32.2125508Z import org.eclipse.core.runtime.CoreException;
2026-02-01T18:12:32.2126200Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.2127036Z import org.eclipse.core.runtime.SubMonitor;
2026-02-01T18:12:32.2127921Z import org.eclipse.jdt.internal.ui.wizards.NewWizardMessages;
2026-02-01T18:12:32.2129042Z public class Test extends ArrayList {
2026-02-01T18:12:32.2130218Z public void createPackageFragmentRoot(IProgressMonitor monitor) throws CoreException, InterruptedException {
2026-02-01T18:12:32.2131842Z SubMonitor subMonitor=SubMonitor.convert(monitor,NewWizardMessages.NewSourceFolderWizardPage_operation,3);
2026-02-01T18:12:32.2133214Z IProgressMonitor subProgressMonitor= subMonitor.split(1);
2026-02-01T18:12:32.2134145Z IProgressMonitor subProgressMonitor2= subMonitor.split(2);
2026-02-01T18:12:32.2134890Z }
2026-02-01T18:12:32.2135417Z }
2026-02-01T18:12:32.2136059Z > but was: <package test;
2026-02-01T18:12:32.2136696Z import java.util.
;
2026-02-01T18:12:32.2137338Z import org.eclipse.core.runtime.CoreException;
2026-02-01T18:12:32.2138429Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.2139397Z import org.eclipse.core.runtime.SubProgressMonitor;
2026-02-01T18:12:32.2140373Z import org.eclipse.jdt.internal.ui.wizards.NewWizardMessages;
2026-02-01T18:12:32.2141339Z public class Test extends ArrayList {
2026-02-01T18:12:32.2142583Z public void createPackageFragmentRoot(IProgressMonitor monitor) throws CoreException, InterruptedException {
2026-02-01T18:12:32.2144098Z monitor.beginTask(NewWizardMessages.NewSourceFolderWizardPage_operation, 3);
2026-02-01T18:12:32.2145346Z IProgressMonitor subProgressMonitor= new SubProgressMonitor(monitor, 1);
2026-02-01T18:12:32.2146511Z IProgressMonitor subProgressMonitor2= new SubProgressMonitor(monitor, 2);
2026-02-01T18:12:32.2147398Z }
2026-02-01T18:12:32.2147853Z }
2026-02-01T18:12:32.2148458Z >
2026-02-01T18:12:32.2149192Z at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
2026-02-01T18:12:32.2150456Z at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
2026-02-01T18:12:32.2152072Z at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
2026-02-01T18:12:32.2153026Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
2026-02-01T18:12:32.2154068Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
2026-02-01T18:12:32.2155028Z at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1145)
2026-02-01T18:12:32.2156391Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertEqualStringsIgnoreOrder(AbstractEclipseJava.java:628)
2026-02-01T18:12:32.2158535Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertRefactoringResultAsExpected(AbstractEclipseJava.java:534)
2026-02-01T18:12:32.2161351Z at org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(Java8CleanUpTest.java:502)
2026-02-01T18:12:32.2163019Z at java.base/java.lang.reflect.Method.invoke(Method.java:580)
2026-02-01T18:12:32.2163910Z at java.base/java.util.Optional.ifPresent(Optional.java:178)
2026-02-01T18:12:32.2164872Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.2240774Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2312975Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.2313951Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.2314836Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2315662Z at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
2026-02-01T18:12:32.2316533Z at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
2026-02-01T18:12:32.2317514Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.2318685Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.2319713Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.2320774Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.2321785Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.2322762Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.2323696Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.2324699Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.2325705Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.2326693Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.2327709Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.2328901Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.2329989Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.2331005Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.2332042Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.2333077Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2334140Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2335187Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2336293Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.2337914Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.2389772Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.2390934Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.2392043Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.2393140Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.2394150Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.2394971Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.2395650Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.2397394Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[2] -- Time elapsed: 0.273 s <<< FAILURE!
2026-02-01T18:12:32.2398701Z org.opentest4j.AssertionFailedError:
2026-02-01T18:12:32.2399119Z expected: <package test;
2026-02-01T18:12:32.2399436Z import java.util.;
2026-02-01T18:12:32.2399807Z import org.eclipse.core.runtime.CoreException;
2026-02-01T18:12:32.2400348Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.2400878Z import org.eclipse.core.runtime.SubMonitor;
2026-02-01T18:12:32.2401472Z import org.eclipse.jdt.internal.ui.wizards.NewWizardMessages;
2026-02-01T18:12:32.2402093Z public class Test extends ArrayList {
2026-02-01T18:12:32.2402977Z public void createPackageFragmentRoot(IProgressMonitor monitor) throws CoreException, InterruptedException {
2026-02-01T18:12:32.2404257Z SubMonitor subMonitor=SubMonitor.convert(monitor,NewWizardMessages.NewSourceFolderWizardPage_operation,3);
2026-02-01T18:12:32.2405229Z IProgressMonitor subProgressMonitor= subMonitor.split(1);
2026-02-01T18:12:32.2405868Z IProgressMonitor subProgressMonitor2= subMonitor.split(2);
2026-02-01T18:12:32.2406367Z }
2026-02-01T18:12:32.2407060Z public void createPackageFragmentRoot2(IProgressMonitor monitor) throws CoreException, InterruptedException {
2026-02-01T18:12:32.2408455Z SubMonitor subMonitor=SubMonitor.convert(monitor,NewWizardMessages.NewSourceFolderWizardPage_operation,3);
2026-02-01T18:12:32.2409404Z IProgressMonitor subProgressMonitor3= subMonitor.split(1);
2026-02-01T18:12:32.2410028Z IProgressMonitor subProgressMonitor4= subMonitor.split(2);
2026-02-01T18:12:32.2410497Z }
2026-02-01T18:12:32.2410710Z }
2026-02-01T18:12:32.2410964Z > but was: <package test;
2026-02-01T18:12:32.2411287Z import java.util.
;
2026-02-01T18:12:32.2411649Z import org.eclipse.core.runtime.CoreException;
2026-02-01T18:12:32.2412187Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.2412752Z import org.eclipse.core.runtime.SubProgressMonitor;
2026-02-01T18:12:32.2413385Z import org.eclipse.jdt.internal.ui.wizards.NewWizardMessages;
2026-02-01T18:12:32.2413980Z public class Test extends ArrayList {
2026-02-01T18:12:32.2414822Z public void createPackageFragmentRoot(IProgressMonitor monitor) throws CoreException, InterruptedException {
2026-02-01T18:12:32.2415911Z monitor.beginTask(NewWizardMessages.NewSourceFolderWizardPage_operation, 3);
2026-02-01T18:12:32.2416766Z IProgressMonitor subProgressMonitor= new SubProgressMonitor(monitor, 1);
2026-02-01T18:12:32.2417580Z IProgressMonitor subProgressMonitor2= new SubProgressMonitor(monitor, 2);
2026-02-01T18:12:32.2468812Z }
2026-02-01T18:12:32.2469696Z public void createPackageFragmentRoot2(IProgressMonitor monitor) throws CoreException, InterruptedException {
2026-02-01T18:12:32.2470903Z monitor.beginTask(NewWizardMessages.NewSourceFolderWizardPage_operation, 3);
2026-02-01T18:12:32.2471816Z IProgressMonitor subProgressMonitor3= new SubProgressMonitor(monitor, 1);
2026-02-01T18:12:32.2472703Z IProgressMonitor subProgressMonitor4= new SubProgressMonitor(monitor, 2);
2026-02-01T18:12:32.2473861Z }
2026-02-01T18:12:32.2474114Z }
2026-02-01T18:12:32.2474348Z >
2026-02-01T18:12:32.2474933Z at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
2026-02-01T18:12:32.2476114Z at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
2026-02-01T18:12:32.2477163Z at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
2026-02-01T18:12:32.2477949Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
2026-02-01T18:12:32.2478967Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
2026-02-01T18:12:32.2479872Z at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1145)
2026-02-01T18:12:32.2481208Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertEqualStringsIgnoreOrder(AbstractEclipseJava.java:628)
2026-02-01T18:12:32.2483150Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertRefactoringResultAsExpected(AbstractEclipseJava.java:534)
2026-02-01T18:12:32.2484792Z at org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(Java8CleanUpTest.java:502)
2026-02-01T18:12:32.2485913Z at java.base/java.lang.reflect.Method.invoke(Method.java:580)
2026-02-01T18:12:32.2486620Z at java.base/java.util.Optional.ifPresent(Optional.java:178)
2026-02-01T18:12:32.2487429Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.2488581Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2489552Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.2490526Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.2491524Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2492471Z at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
2026-02-01T18:12:32.2493482Z at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
2026-02-01T18:12:32.2494548Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.2495536Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.2496619Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.2497676Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.2526383Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.2527393Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.2528522Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.2529631Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.2530636Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.2531646Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.2532741Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.2533846Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.2534952Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.2535902Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.2536797Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.2537691Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2539219Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2540085Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2541005Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.2541911Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.2542849Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.2543885Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.2544891Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.2545821Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.2547110Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.2588198Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.2589144Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.2590314Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[3] -- Time elapsed: 0.289 s <<< FAILURE!
2026-02-01T18:12:32.2591395Z org.opentest4j.AssertionFailedError:
2026-02-01T18:12:32.2591801Z expected: <package test;
2026-02-01T18:12:32.2592203Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.2592714Z import org.eclipse.core.runtime.SubMonitor;
2026-02-01T18:12:32.2593130Z public class Test {
2026-02-01T18:12:32.2593469Z public void doWork(IProgressMonitor monitor) {
2026-02-01T18:12:32.2594024Z SubMonitor subMonitor=SubMonitor.convert(monitor,"Task",100);
2026-02-01T18:12:32.2594618Z IProgressMonitor sub= subMonitor.split(50, 1);
2026-02-01T18:12:32.2595016Z }
2026-02-01T18:12:32.2595248Z }
2026-02-01T18:12:32.2595490Z > but was: <package test;
2026-02-01T18:12:32.2595894Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.2596429Z import org.eclipse.core.runtime.SubProgressMonitor;
2026-02-01T18:12:32.2596892Z public class Test {
2026-02-01T18:12:32.2597232Z public void doWork(IProgressMonitor monitor) {
2026-02-01T18:12:32.2597662Z monitor.beginTask("Task", 100);
2026-02-01T18:12:32.2598307Z IProgressMonitor sub= new SubProgressMonitor(monitor, 50, 1);
2026-02-01T18:12:32.2598794Z }
2026-02-01T18:12:32.2599003Z }
2026-02-01T18:12:32.2599217Z >
2026-02-01T18:12:32.2599772Z at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
2026-02-01T18:12:32.2600846Z at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
2026-02-01T18:12:32.2601825Z at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
2026-02-01T18:12:32.2602633Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
2026-02-01T18:12:32.2603431Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
2026-02-01T18:12:32.2604190Z at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1145)
2026-02-01T18:12:32.2605352Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertEqualStringsIgnoreOrder(AbstractEclipseJava.java:628)
2026-02-01T18:12:32.2606956Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertRefactoringResultAsExpected(AbstractEclipseJava.java:534)
2026-02-01T18:12:32.2608606Z at org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(Java8CleanUpTest.java:502)
2026-02-01T18:12:32.2609634Z at java.base/java.lang.reflect.Method.invoke(Method.java:580)
2026-02-01T18:12:32.2610269Z at java.base/java.util.Optional.ifPresent(Optional.java:178)
2026-02-01T18:12:32.2610996Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.2612302Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2613187Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.2614038Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.2614951Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2615792Z at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
2026-02-01T18:12:32.2616705Z at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
2026-02-01T18:12:32.2617741Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.2634649Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.2636175Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.2637301Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.2638513Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.2639413Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.2640310Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.2641248Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.2708917Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.2710356Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.2711483Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.2712633Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.2713751Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.2714761Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.2715773Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.2716781Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2717773Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2718852Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2719812Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.2720776Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.2721721Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.2722717Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.2723704Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.2724654Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.2725545Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.2726312Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.2726939Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.2728262Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[4] -- Time elapsed: 0.185 s <<< FAILURE!
2026-02-01T18:12:32.2729487Z org.opentest4j.AssertionFailedError:
2026-02-01T18:12:32.2729943Z expected: <package test;
2026-02-01T18:12:32.2730841Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.2731399Z import org.eclipse.core.runtime.SubMonitor;
2026-02-01T18:12:32.2731860Z public class Test {
2026-02-01T18:12:32.2732241Z public void doWork(IProgressMonitor monitor) {
2026-02-01T18:12:32.2732711Z String subMonitor = "test";
2026-02-01T18:12:32.2733234Z SubMonitor subMonitor2=SubMonitor.convert(monitor,"Task",100);
2026-02-01T18:12:32.2733886Z IProgressMonitor sub= subMonitor2.split(50);
2026-02-01T18:12:32.2734354Z }
2026-02-01T18:12:32.2734596Z }
2026-02-01T18:12:32.2734901Z > but was: <package test;
2026-02-01T18:12:32.2735374Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.2735982Z import org.eclipse.core.runtime.SubProgressMonitor;
2026-02-01T18:12:32.2736491Z public class Test {
2026-02-01T18:12:32.2736882Z public void doWork(IProgressMonitor monitor) {
2026-02-01T18:12:32.2737565Z String subMonitor = "test";
2026-02-01T18:12:32.2737967Z monitor.beginTask("Task", 100);
2026-02-01T18:12:32.2759994Z IProgressMonitor sub= new SubProgressMonitor(monitor, 50);
2026-02-01T18:12:32.2760505Z }
2026-02-01T18:12:32.2760749Z }
2026-02-01T18:12:32.2760994Z >
2026-02-01T18:12:32.2761605Z at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
2026-02-01T18:12:32.2762809Z at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
2026-02-01T18:12:32.2763901Z at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
2026-02-01T18:12:32.2764794Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
2026-02-01T18:12:32.2765671Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
2026-02-01T18:12:32.2766578Z at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1145)
2026-02-01T18:12:32.2767970Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertEqualStringsIgnoreOrder(AbstractEclipseJava.java:628)
2026-02-01T18:12:32.2769885Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertRefactoringResultAsExpected(AbstractEclipseJava.java:534)
2026-02-01T18:12:32.2771481Z at org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(Java8CleanUpTest.java:502)
2026-02-01T18:12:32.2772492Z at java.base/java.lang.reflect.Method.invoke(Method.java:580)
2026-02-01T18:12:32.2773124Z at java.base/java.util.Optional.ifPresent(Optional.java:178)
2026-02-01T18:12:32.2773861Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.2774756Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2775647Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.2776501Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.2777373Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2778337Z at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
2026-02-01T18:12:32.2779202Z at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
2026-02-01T18:12:32.2780166Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.2781096Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.2782056Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.2783040Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.2783989Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.2784876Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.2785784Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.2787116Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.2788180Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.2789123Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.2790090Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.2791077Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.2792024Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.2792969Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.2794190Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.2795414Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2796360Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2797297Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2798423Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.2799489Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.2800523Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.2801619Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.2802747Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.2803829Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.2804834Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.2805669Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.2806325Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.2807454Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[5] -- Time elapsed: 0.177 s
2026-02-01T18:12:32.2809434Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[6] -- Time elapsed: 0.259 s <<< FAILURE!
2026-02-01T18:12:32.2810691Z org.opentest4j.AssertionFailedError:
2026-02-01T18:12:32.2811178Z expected: <package test;
2026-02-01T18:12:32.2811660Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.2812275Z import org.eclipse.core.runtime.SubMonitor;
2026-02-01T18:12:32.2812778Z public class Test {
2026-02-01T18:12:32.2813224Z // This method already uses SubMonitor - should not be modified
2026-02-01T18:12:32.2813937Z public void alreadyConverted(IProgressMonitor monitor) {
2026-02-01T18:12:32.2814732Z SubMonitor subMonitor=SubMonitor.convert(monitor,"Already converted",50);
2026-02-01T18:12:32.2815449Z IProgressMonitor sub= subMonitor.split(25);
2026-02-01T18:12:32.2815910Z }
2026-02-01T18:12:32.2816367Z // This method still uses SubProgressMonitor - should be converted
2026-02-01T18:12:32.2817107Z public void needsConversion(IProgressMonitor monitor) {
2026-02-01T18:12:32.2817891Z SubMonitor subMonitor=SubMonitor.convert(monitor,"Needs conversion",100);
2026-02-01T18:12:32.2818736Z IProgressMonitor sub= subMonitor.split(60);
2026-02-01T18:12:32.2819151Z }
2026-02-01T18:12:32.2819383Z }
2026-02-01T18:12:32.2819642Z > but was: <package test;
2026-02-01T18:12:32.2820080Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.2820660Z import org.eclipse.core.runtime.SubProgressMonitor;
2026-02-01T18:12:32.2821246Z import org.eclipse.core.runtime.SubMonitor;
2026-02-01T18:12:32.2821950Z public class Test {
2026-02-01T18:12:32.2822390Z // This method already uses SubMonitor - should not be modified
2026-02-01T18:12:32.2823013Z public void alreadyConverted(IProgressMonitor monitor) {
2026-02-01T18:12:32.2823749Z SubMonitor subMonitor=SubMonitor.convert(monitor,"Already converted",50);
2026-02-01T18:12:32.2824429Z IProgressMonitor sub= subMonitor.split(25);
2026-02-01T18:12:32.2824851Z }
2026-02-01T18:12:32.2825270Z // This method still uses SubProgressMonitor - should be converted
2026-02-01T18:12:32.2825947Z public void needsConversion(IProgressMonitor monitor) {
2026-02-01T18:12:32.2826498Z monitor.beginTask("Needs conversion", 100);
2026-02-01T18:12:32.2827068Z IProgressMonitor sub= new SubProgressMonitor(monitor, 60);
2026-02-01T18:12:32.2827532Z }
2026-02-01T18:12:32.2827752Z }
2026-02-01T18:12:32.2828132Z >
2026-02-01T18:12:32.2828906Z at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
2026-02-01T18:12:32.2830094Z at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
2026-02-01T18:12:32.2831177Z at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
2026-02-01T18:12:32.2832027Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
2026-02-01T18:12:32.2832883Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
2026-02-01T18:12:32.2833715Z at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1145)
2026-02-01T18:12:32.2834974Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertEqualStringsIgnoreOrder(AbstractEclipseJava.java:628)
2026-02-01T18:12:32.2836710Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertRefactoringResultAsExpected(AbstractEclipseJava.java:534)
2026-02-01T18:12:32.2838501Z at org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(Java8CleanUpTest.java:502)
2026-02-01T18:12:32.2839644Z at java.base/java.lang.reflect.Method.invoke(Method.java:580)
2026-02-01T18:12:32.2840338Z at java.base/java.util.Optional.ifPresent(Optional.java:178)
2026-02-01T18:12:32.2841171Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.2842150Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2843143Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.2844199Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.2845184Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2846078Z at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
2026-02-01T18:12:32.2847057Z at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
2026-02-01T18:12:32.2848314Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.2849332Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.2850389Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.2851439Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.2852472Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.2853431Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.2854396Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.2855418Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.2856410Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.2857414Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.2858834Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.2859869Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.2860867Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.2861712Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.2862644Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.2863597Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2864608Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2865867Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2866978Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.2868194Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.2869269Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.2870378Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.2871500Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.2872556Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.2873519Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.2874347Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.2875025Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.2876301Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[7] -- Time elapsed: 0.126 s <<< FAILURE!
2026-02-01T18:12:32.2877515Z org.opentest4j.AssertionFailedError:
2026-02-01T18:12:32.2877970Z expected: <package test;
2026-02-01T18:12:32.2908898Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.2909446Z import org.eclipse.core.runtime.SubMonitor;
2026-02-01T18:12:32.2909882Z public class Test {
2026-02-01T18:12:32.2910261Z public void outerMethod(IProgressMonitor monitor) {
2026-02-01T18:12:32.2910901Z SubMonitor subMonitor=SubMonitor.convert(monitor,"Outer task",50);
2026-02-01T18:12:32.2911536Z IProgressMonitor sub= subMonitor.split(25);
2026-02-01T18:12:32.2911977Z }
2026-02-01T18:12:32.2912237Z class InnerClass {
2026-02-01T18:12:32.2912625Z public void innerMethod(IProgressMonitor monitor) {
2026-02-01T18:12:32.2913288Z SubMonitor subMonitor=SubMonitor.convert(monitor,"Inner task",100);
2026-02-01T18:12:32.2913988Z IProgressMonitor sub= subMonitor.split(50);
2026-02-01T18:12:32.2914428Z }
2026-02-01T18:12:32.2914676Z }
2026-02-01T18:12:32.2914915Z }
2026-02-01T18:12:32.2915175Z > but was: <package test;
2026-02-01T18:12:32.2915631Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.2916233Z import org.eclipse.core.runtime.SubProgressMonitor;
2026-02-01T18:12:32.2916716Z public class Test {
2026-02-01T18:12:32.2948430Z public void outerMethod(IProgressMonitor monitor) {
2026-02-01T18:12:32.2949119Z monitor.beginTask("Outer task", 50);
2026-02-01T18:12:32.2949655Z IProgressMonitor sub= new SubProgressMonitor(monitor, 25);
2026-02-01T18:12:32.2950248Z }
2026-02-01T18:12:32.2950502Z class InnerClass {
2026-02-01T18:12:32.2950879Z public void innerMethod(IProgressMonitor monitor) {
2026-02-01T18:12:32.2951412Z monitor.beginTask("Inner task", 100);
2026-02-01T18:12:32.2952007Z IProgressMonitor sub= new SubProgressMonitor(monitor, 50);
2026-02-01T18:12:32.2952515Z }
2026-02-01T18:12:32.2953240Z }
2026-02-01T18:12:32.2953485Z }
2026-02-01T18:12:32.2953722Z >
2026-02-01T18:12:32.2954329Z at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
2026-02-01T18:12:32.2955560Z at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
2026-02-01T18:12:32.2956609Z at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
2026-02-01T18:12:32.2957482Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
2026-02-01T18:12:32.2958509Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
2026-02-01T18:12:32.2959316Z at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1145)
2026-02-01T18:12:32.2960599Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertEqualStringsIgnoreOrder(AbstractEclipseJava.java:628)
2026-02-01T18:12:32.2962420Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertRefactoringResultAsExpected(AbstractEclipseJava.java:534)
2026-02-01T18:12:32.2964338Z at org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(Java8CleanUpTest.java:502)
2026-02-01T18:12:32.2965436Z at java.base/java.lang.reflect.Method.invoke(Method.java:580)
2026-02-01T18:12:32.2966097Z at java.base/java.util.Optional.ifPresent(Optional.java:178)
2026-02-01T18:12:32.2966899Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.2967907Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2968944Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.2969802Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.2970663Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2971472Z at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
2026-02-01T18:12:32.2972352Z at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
2026-02-01T18:12:32.2973319Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.2974260Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.2975236Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.2976240Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.2977201Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.2978232Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.2979128Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.2980082Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.2981019Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.2981948Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.2982919Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.2983902Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.2984850Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.2985730Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.2986657Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.2987583Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2988643Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2989816Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.2990795Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.2991743Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.2992703Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.2993718Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.2994750Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.2995722Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.2996813Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.2997609Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.3028820Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.3030254Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[8] -- Time elapsed: 0.158 s <<< FAILURE!
2026-02-01T18:12:32.3031524Z org.opentest4j.AssertionFailedError:
2026-02-01T18:12:32.3031992Z expected: <package test;
2026-02-01T18:12:32.3032386Z import java.util.function.Consumer;
2026-02-01T18:12:32.3032914Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.3033495Z import org.eclipse.core.runtime.SubMonitor;
2026-02-01T18:12:32.3033956Z public class Test {
2026-02-01T18:12:32.3034371Z public void withLambda(IProgressMonitor monitor) {
2026-02-01T18:12:32.3034914Z Consumer task = m -> {
2026-02-01T18:12:32.3035542Z SubMonitor subMonitor=SubMonitor.convert(m,"Lambda task",100);
2026-02-01T18:12:32.3036187Z IProgressMonitor sub = subMonitor.split(50);
2026-02-01T18:12:32.3036647Z };
2026-02-01T18:12:32.3036921Z task.accept(monitor);
2026-02-01T18:12:32.3037242Z }
2026-02-01T18:12:32.3037487Z }
2026-02-01T18:12:32.3037755Z > but was: <package test;
2026-02-01T18:12:32.3038391Z import java.util.function.Consumer;
2026-02-01T18:12:32.3038920Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.3039516Z import org.eclipse.core.runtime.SubProgressMonitor;
2026-02-01T18:12:32.3039996Z public class Test {
2026-02-01T18:12:32.3040373Z public void withLambda(IProgressMonitor monitor) {
2026-02-01T18:12:32.3040892Z Consumer task = m -> {
2026-02-01T18:12:32.3041344Z m.beginTask("Lambda task", 100);
2026-02-01T18:12:32.3041851Z IProgressMonitor sub = new SubProgressMonitor(m, 50);
2026-02-01T18:12:32.3042329Z };
2026-02-01T18:12:32.3042602Z task.accept(monitor);
2026-02-01T18:12:32.3042912Z }
2026-02-01T18:12:32.3043155Z }
2026-02-01T18:12:32.3043467Z >
2026-02-01T18:12:32.3044095Z at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
2026-02-01T18:12:32.3045292Z at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
2026-02-01T18:12:32.3046368Z at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
2026-02-01T18:12:32.3047225Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
2026-02-01T18:12:32.3048266Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
2026-02-01T18:12:32.3049105Z at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1145)
2026-02-01T18:12:32.3050278Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertEqualStringsIgnoreOrder(AbstractEclipseJava.java:628)
2026-02-01T18:12:32.3052044Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertRefactoringResultAsExpected(AbstractEclipseJava.java:534)
2026-02-01T18:12:32.3053641Z at org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(Java8CleanUpTest.java:502)
2026-02-01T18:12:32.3055203Z at java.base/java.lang.reflect.Method.invoke(Method.java:580)
2026-02-01T18:12:32.3055876Z at java.base/java.util.Optional.ifPresent(Optional.java:178)
2026-02-01T18:12:32.3056650Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.3057606Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3089150Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.3090211Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.3091183Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3092010Z at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
2026-02-01T18:12:32.3093245Z at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
2026-02-01T18:12:32.3094246Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.3095198Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.3096199Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.3097264Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.3098452Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.3099389Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.3100326Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.3101299Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.3102313Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.3103328Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.3104358Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.3105367Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.3106346Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.3107263Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.3108333Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.3109264Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3110195Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3111127Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3112116Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.3113117Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.3114107Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.3115133Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.3116174Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.3117171Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.3148525Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.3149552Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.3150745Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.3151942Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[9] -- Time elapsed: 0.150 s <<< FAILURE!
2026-02-01T18:12:32.3153064Z org.opentest4j.AssertionFailedError:
2026-02-01T18:12:32.3153487Z expected: <package test;
2026-02-01T18:12:32.3153909Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.3154453Z import org.eclipse.core.runtime.SubMonitor;
2026-02-01T18:12:32.3154902Z public class Test {
2026-02-01T18:12:32.3155283Z public void doWork(IProgressMonitor monitor) {
2026-02-01T18:12:32.3155837Z IProgressMonitor sub = SubMonitor.convert(monitor, 50);
2026-02-01T18:12:32.3156341Z // Use sub monitor
2026-02-01T18:12:32.3156633Z sub.worked(10);
2026-02-01T18:12:32.3156910Z }
2026-02-01T18:12:32.3157151Z }
2026-02-01T18:12:32.3157650Z > but was: <package test;
2026-02-01T18:12:32.3158253Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.3158832Z import org.eclipse.core.runtime.SubProgressMonitor;
2026-02-01T18:12:32.3159287Z public class Test {
2026-02-01T18:12:32.3159631Z public void doWork(IProgressMonitor monitor) {
2026-02-01T18:12:32.3160170Z IProgressMonitor sub = new SubProgressMonitor(monitor, 50);
2026-02-01T18:12:32.3160696Z // Use sub monitor
2026-02-01T18:12:32.3160986Z sub.worked(10);
2026-02-01T18:12:32.3161244Z }
2026-02-01T18:12:32.3161472Z }
2026-02-01T18:12:32.3161708Z >
2026-02-01T18:12:32.3162308Z at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
2026-02-01T18:12:32.3163428Z at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
2026-02-01T18:12:32.3164464Z at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
2026-02-01T18:12:32.3165276Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
2026-02-01T18:12:32.3166144Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
2026-02-01T18:12:32.3166991Z at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1145)
2026-02-01T18:12:32.3168376Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertEqualStringsIgnoreOrder(AbstractEclipseJava.java:628)
2026-02-01T18:12:32.3169968Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertRefactoringResultAsExpected(AbstractEclipseJava.java:534)
2026-02-01T18:12:32.3171467Z at org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(Java8CleanUpTest.java:502)
2026-02-01T18:12:32.3172453Z at java.base/java.lang.reflect.Method.invoke(Method.java:580)
2026-02-01T18:12:32.3173068Z at java.base/java.util.Optional.ifPresent(Optional.java:178)
2026-02-01T18:12:32.3173792Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.3174676Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3175565Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.3176416Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.3177281Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3318676Z at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
2026-02-01T18:12:32.3320033Z at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
2026-02-01T18:12:32.3321259Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.3322529Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.3323603Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.3324680Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.3326184Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.3327107Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.3328210Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.3329221Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.3330215Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.3331193Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.3332231Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.3333264Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.3334473Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.3335378Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.3336288Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.3337206Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3338281Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3339285Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3340363Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.3341468Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.3342521Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.3343706Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.3344731Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.3345684Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.3346586Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.3347381Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.3408441Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.3410018Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[10] -- Time elapsed: 0.161 s <<< FAILURE!
2026-02-01T18:12:32.3411132Z org.opentest4j.AssertionFailedError:
2026-02-01T18:12:32.3411551Z expected: <package test;
2026-02-01T18:12:32.3412006Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.3412524Z import org.eclipse.core.runtime.SubMonitor;
2026-02-01T18:12:32.3412961Z public class Test {
2026-02-01T18:12:32.3413313Z public void doWork(IProgressMonitor monitor) {
2026-02-01T18:12:32.3413855Z IProgressMonitor sub = SubMonitor.convert(monitor, 50);
2026-02-01T18:12:32.3414332Z sub.worked(10);
2026-02-01T18:12:32.3414605Z }
2026-02-01T18:12:32.3414830Z }
2026-02-01T18:12:32.3415079Z > but was: <package test;
2026-02-01T18:12:32.3415509Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.3416084Z import org.eclipse.core.runtime.SubProgressMonitor;
2026-02-01T18:12:32.3416555Z public class Test {
2026-02-01T18:12:32.3416916Z public void doWork(IProgressMonitor monitor) {
2026-02-01T18:12:32.3417723Z IProgressMonitor sub = new SubProgressMonitor(monitor, 50, SubProgressMonitor.SUPPRESS_SUBTASK_LABEL);
2026-02-01T18:12:32.3418617Z sub.worked(10);
2026-02-01T18:12:32.3418886Z }
2026-02-01T18:12:32.3419123Z }
2026-02-01T18:12:32.3419345Z >
2026-02-01T18:12:32.3419926Z at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
2026-02-01T18:12:32.3421627Z at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
2026-02-01T18:12:32.3422634Z at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
2026-02-01T18:12:32.3423449Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
2026-02-01T18:12:32.3424259Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
2026-02-01T18:12:32.3425058Z at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1145)
2026-02-01T18:12:32.3426247Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertEqualStringsIgnoreOrder(AbstractEclipseJava.java:628)
2026-02-01T18:12:32.3427897Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertRefactoringResultAsExpected(AbstractEclipseJava.java:534)
2026-02-01T18:12:32.3429786Z at org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(Java8CleanUpTest.java:502)
2026-02-01T18:12:32.3430816Z at java.base/java.lang.reflect.Method.invoke(Method.java:580)
2026-02-01T18:12:32.3431456Z at java.base/java.util.Optional.ifPresent(Optional.java:178)
2026-02-01T18:12:32.3432200Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.3433092Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3433986Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.3434842Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.3435727Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3436547Z at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
2026-02-01T18:12:32.3437429Z at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
2026-02-01T18:12:32.3449689Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.3450747Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.3451808Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.3452880Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.3453913Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.3454867Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.3455790Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.3456748Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.3457725Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.3458875Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.3459915Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.3460961Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.3461964Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.3462868Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.3463798Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.3464723Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3465671Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3466632Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3468181Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.3469169Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.3470097Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.3471064Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.3472037Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.3472987Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.3473869Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.3474827Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.3475445Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.3476610Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[11] -- Time elapsed: 0.142 s <<< FAILURE!
2026-02-01T18:12:32.3477704Z org.opentest4j.AssertionFailedError:
2026-02-01T18:12:32.3528680Z expected: <package test;
2026-02-01T18:12:32.3529218Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.3529776Z import org.eclipse.core.runtime.SubMonitor;
2026-02-01T18:12:32.3530214Z public class Test {
2026-02-01T18:12:32.3530587Z public void doWork(IProgressMonitor monitor) {
2026-02-01T18:12:32.3531193Z SubMonitor subMonitor=SubMonitor.convert(monitor,"Task",100);
2026-02-01T18:12:32.3531941Z IProgressMonitor sub = subMonitor.split(50, SubMonitor.SUPPRESS_SUBTASK);
2026-02-01T18:12:32.3532534Z }
2026-02-01T18:12:32.3532772Z }
2026-02-01T18:12:32.3533062Z > but was: <package test;
2026-02-01T18:12:32.3533494Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.3534089Z import org.eclipse.core.runtime.SubProgressMonitor;
2026-02-01T18:12:32.3534578Z public class Test {
2026-02-01T18:12:32.3534961Z public void doWork(IProgressMonitor monitor) {
2026-02-01T18:12:32.3535431Z monitor.beginTask("Task", 100);
2026-02-01T18:12:32.3536194Z IProgressMonitor sub = new SubProgressMonitor(monitor, 50, SubProgressMonitor.SUPPRESS_SUBTASK_LABEL);
2026-02-01T18:12:32.3536985Z }
2026-02-01T18:12:32.3537220Z }
2026-02-01T18:12:32.3537445Z >
2026-02-01T18:12:32.3538167Z at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
2026-02-01T18:12:32.3539328Z at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
2026-02-01T18:12:32.3540341Z at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
2026-02-01T18:12:32.3541158Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
2026-02-01T18:12:32.3541968Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
2026-02-01T18:12:32.3542765Z at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1145)
2026-02-01T18:12:32.3544030Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertEqualStringsIgnoreOrder(AbstractEclipseJava.java:628)
2026-02-01T18:12:32.3545665Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertRefactoringResultAsExpected(AbstractEclipseJava.java:534)
2026-02-01T18:12:32.3547192Z at org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(Java8CleanUpTest.java:502)
2026-02-01T18:12:32.3548336Z at java.base/java.lang.reflect.Method.invoke(Method.java:580)
2026-02-01T18:12:32.3548969Z at java.base/java.util.Optional.ifPresent(Optional.java:178)
2026-02-01T18:12:32.3549705Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.3550597Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3551913Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.3552791Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.3553683Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3554501Z at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
2026-02-01T18:12:32.3555377Z at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
2026-02-01T18:12:32.3556352Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.3557303Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.3588647Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.3590174Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.3591245Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.3592231Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.3593199Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.3594231Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.3595213Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.3596189Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.3597194Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.3598437Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.3599428Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.3600320Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.3601213Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.3602121Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3603028Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3603908Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3604909Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.3605898Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.3606868Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.3607896Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.3609079Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.3610071Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.3611009Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.3611809Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.3612458Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.3613661Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[12] -- Time elapsed: 0.140 s <<< FAILURE!
2026-02-01T18:12:32.3614776Z org.opentest4j.AssertionFailedError:
2026-02-01T18:12:32.3615196Z expected: <package test;
2026-02-01T18:12:32.3615626Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.3616167Z import org.eclipse.core.runtime.SubMonitor;
2026-02-01T18:12:32.3616850Z public class Test {
2026-02-01T18:12:32.3617221Z public void doWork(IProgressMonitor monitor) {
2026-02-01T18:12:32.3617809Z SubMonitor subMonitor=SubMonitor.convert(monitor,"Task",100);
2026-02-01T18:12:32.3648775Z IProgressMonitor sub = subMonitor.split(50);
2026-02-01T18:12:32.3649229Z }
2026-02-01T18:12:32.3649455Z }
2026-02-01T18:12:32.3649694Z > but was: <package test;
2026-02-01T18:12:32.3650114Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.3650685Z import org.eclipse.core.runtime.SubProgressMonitor;
2026-02-01T18:12:32.3651147Z public class Test {
2026-02-01T18:12:32.3651503Z public void doWork(IProgressMonitor monitor) {
2026-02-01T18:12:32.3651974Z monitor.beginTask("Task", 100);
2026-02-01T18:12:32.3652726Z IProgressMonitor sub = new SubProgressMonitor(monitor, 50, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK);
2026-02-01T18:12:32.3653827Z }
2026-02-01T18:12:32.3654046Z }
2026-02-01T18:12:32.3654264Z >
2026-02-01T18:12:32.3654843Z at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
2026-02-01T18:12:32.3655959Z at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
2026-02-01T18:12:32.3656986Z at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
2026-02-01T18:12:32.3657859Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
2026-02-01T18:12:32.3658846Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
2026-02-01T18:12:32.3659632Z at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1145)
2026-02-01T18:12:32.3660806Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertEqualStringsIgnoreOrder(AbstractEclipseJava.java:628)
2026-02-01T18:12:32.3662449Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertRefactoringResultAsExpected(AbstractEclipseJava.java:534)
2026-02-01T18:12:32.3663984Z at org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(Java8CleanUpTest.java:502)
2026-02-01T18:12:32.3665000Z at java.base/java.lang.reflect.Method.invoke(Method.java:580)
2026-02-01T18:12:32.3665628Z at java.base/java.util.Optional.ifPresent(Optional.java:178)
2026-02-01T18:12:32.3666361Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.3667261Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3668296Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.3669199Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.3670098Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3670944Z at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
2026-02-01T18:12:32.3671870Z at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
2026-02-01T18:12:32.3672893Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.3673860Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.3674870Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.3675926Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.3676996Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.3677949Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.3709382Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.3710389Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.3711781Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.3712729Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.3713749Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.3714783Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.3715800Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.3716731Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.3717673Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.3718770Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3719954Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3720907Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3721874Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.3722846Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.3723788Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.3724788Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.3725761Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.3726714Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.3727606Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.3728535Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.3729172Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.3730334Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[13] -- Time elapsed: 0.715 s <<< FAILURE!
2026-02-01T18:12:32.3731423Z org.opentest4j.AssertionFailedError:
2026-02-01T18:12:32.3731829Z expected: <package test;
2026-02-01T18:12:32.3732239Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.3732756Z import org.eclipse.core.runtime.SubMonitor;
2026-02-01T18:12:32.3733174Z public class Test {
2026-02-01T18:12:32.3733520Z public void doWork(IProgressMonitor monitor) {
2026-02-01T18:12:32.3734079Z SubMonitor subMonitor=SubMonitor.convert(monitor,"Task",100);
2026-02-01T18:12:32.3734638Z IProgressMonitor sub = subMonitor.split(50);
2026-02-01T18:12:32.3735041Z sub.worked(10);
2026-02-01T18:12:32.3735318Z }
2026-02-01T18:12:32.3735539Z }
2026-02-01T18:12:32.3735774Z > but was: <package test;
2026-02-01T18:12:32.3736199Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.3736712Z import org.eclipse.core.runtime.SubMonitor;
2026-02-01T18:12:32.3737116Z public class Test {
2026-02-01T18:12:32.3737459Z public void doWork(IProgressMonitor monitor) {
2026-02-01T18:12:32.3737902Z monitor.beginTask("Task", 100);
2026-02-01T18:12:32.3799051Z IProgressMonitor sub = SubMonitor.convert(monitor, 50);
2026-02-01T18:12:32.3799600Z sub.worked(10);
2026-02-01T18:12:32.3799887Z monitor.done();
2026-02-01T18:12:32.3800154Z }
2026-02-01T18:12:32.3800368Z }
2026-02-01T18:12:32.3800586Z >
2026-02-01T18:12:32.3801147Z at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
2026-02-01T18:12:32.3802217Z at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
2026-02-01T18:12:32.3803191Z at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
2026-02-01T18:12:32.3804036Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
2026-02-01T18:12:32.3805274Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
2026-02-01T18:12:32.3806043Z at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1145)
2026-02-01T18:12:32.3807218Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertEqualStringsIgnoreOrder(AbstractEclipseJava.java:628)
2026-02-01T18:12:32.3809024Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertRefactoringResultAsExpected(AbstractEclipseJava.java:534)
2026-02-01T18:12:32.3810534Z at org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(Java8CleanUpTest.java:502)
2026-02-01T18:12:32.3811538Z at java.base/java.lang.reflect.Method.invoke(Method.java:580)
2026-02-01T18:12:32.3812184Z at java.base/java.util.Optional.ifPresent(Optional.java:178)
2026-02-01T18:12:32.3812920Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.3814058Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3814942Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.3815791Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.3816666Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3817478Z at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
2026-02-01T18:12:32.3818514Z at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
2026-02-01T18:12:32.3819493Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.3820440Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.3821418Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.3822406Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.3823360Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.3824248Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.3825142Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.3826084Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.3827015Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.3827943Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.3904961Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.3906132Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.3907136Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.3908228Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.3909180Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.3910100Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3911018Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3911945Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.3912918Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.3913880Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.3914840Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.3916363Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.3917367Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.3918492Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.3919477Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.3920330Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.3921007Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.3922283Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[14] -- Time elapsed: 0.298 s <<< FAILURE!
2026-02-01T18:12:32.3923655Z org.opentest4j.AssertionFailedError:
2026-02-01T18:12:32.3924108Z expected: <package test;
2026-02-01T18:12:32.3924556Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.3925099Z import org.eclipse.core.runtime.SubMonitor;
2026-02-01T18:12:32.3925556Z public class Test {
2026-02-01T18:12:32.3925936Z public void doWork(IProgressMonitor monitor) {
2026-02-01T18:12:32.3926543Z SubMonitor subMonitor=SubMonitor.convert(monitor,"Task",100);
2026-02-01T18:12:32.3927155Z IProgressMonitor sub1 = subMonitor.split(30);
2026-02-01T18:12:32.3927602Z sub1.worked(10);
2026-02-01T18:12:32.3927955Z IProgressMonitor sub2 = subMonitor.split(40);
2026-02-01T18:12:32.3944569Z sub2.worked(20);
2026-02-01T18:12:32.3944912Z }
2026-02-01T18:12:32.3945158Z }
2026-02-01T18:12:32.3945436Z > but was: <package test;
2026-02-01T18:12:32.3945923Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.3946481Z import org.eclipse.core.runtime.SubMonitor;
2026-02-01T18:12:32.3946929Z public class Test {
2026-02-01T18:12:32.3947343Z public void doWork(IProgressMonitor monitor) {
2026-02-01T18:12:32.3947860Z monitor.beginTask("Task", 100);
2026-02-01T18:12:32.3948541Z IProgressMonitor sub1 = SubMonitor.convert(monitor, 30);
2026-02-01T18:12:32.3949078Z sub1.worked(10);
2026-02-01T18:12:32.3949774Z IProgressMonitor sub2 = SubMonitor.convert(monitor, 40);
2026-02-01T18:12:32.3950320Z sub2.worked(20);
2026-02-01T18:12:32.3950621Z monitor.done();
2026-02-01T18:12:32.3950915Z }
2026-02-01T18:12:32.3951165Z }
2026-02-01T18:12:32.3951406Z >
2026-02-01T18:12:32.3952040Z at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
2026-02-01T18:12:32.3953213Z at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
2026-02-01T18:12:32.3954299Z at org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
2026-02-01T18:12:32.4019111Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
2026-02-01T18:12:32.4020220Z at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
2026-02-01T18:12:32.4021095Z at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1145)
2026-02-01T18:12:32.4022471Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertEqualStringsIgnoreOrder(AbstractEclipseJava.java:628)
2026-02-01T18:12:32.4024390Z at org.sandbox.jdt.ui.tests.quickfix.rules.AbstractEclipseJava.assertRefactoringResultAsExpected(AbstractEclipseJava.java:534)
2026-02-01T18:12:32.4026144Z at org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(Java8CleanUpTest.java:502)
2026-02-01T18:12:32.4027326Z at java.base/java.lang.reflect.Method.invoke(Method.java:580)
2026-02-01T18:12:32.4028211Z at java.base/java.util.Optional.ifPresent(Optional.java:178)
2026-02-01T18:12:32.4029046Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.4030061Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.4031047Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.4032491Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
2026-02-01T18:12:32.4033505Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.4034438Z at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
2026-02-01T18:12:32.4035456Z at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
2026-02-01T18:12:32.4036554Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.4037586Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.4129944Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.4131230Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.4132904Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.4133946Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.4134975Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.4136060Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.4137084Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.4138283Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.4139453Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.4140424Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.4141437Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.4142389Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.4143393Z at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
2026-02-01T18:12:32.4144446Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.4145504Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.4146526Z at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
2026-02-01T18:12:32.4147611Z at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
2026-02-01T18:12:32.4148856Z at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
2026-02-01T18:12:32.4149962Z at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
2026-02-01T18:12:32.4151131Z at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
2026-02-01T18:12:32.4152390Z at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
2026-02-01T18:12:32.4153522Z at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2026-02-01T18:12:32.4154604Z at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
2026-02-01T18:12:32.4155522Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.4156266Z at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
2026-02-01T18:12:32.4157666Z org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest.testJFaceCleanupParametrized(JFaceCleanupCases)[15] -- Time elapsed: 0.166 s <<< FAILURE!
2026-02-01T18:12:32.4249690Z org.opentest4j.AssertionFailedError:
2026-02-01T18:12:32.4250238Z expected: <package test;
2026-02-01T18:12:32.4250692Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.4251286Z import org.eclipse.core.runtime.SubMonitor;
2026-02-01T18:12:32.4252327Z // Simulating a scenario where both imports might coexist
2026-02-01T18:12:32.4252835Z public class Test {
2026-02-01T18:12:32.4253221Z public void doWork(IProgressMonitor monitor) {
2026-02-01T18:12:32.4253908Z SubMonitor subMonitor=SubMonitor.convert(monitor,"Task with both imports",100);
2026-02-01T18:12:32.4254660Z // Only Eclipse's SubProgressMonitor should be converted
2026-02-01T18:12:32.4255219Z IProgressMonitor sub= subMonitor.split(50);
2026-02-01T18:12:32.4255649Z }
2026-02-01T18:12:32.4255883Z }
2026-02-01T18:12:32.4256591Z > but was: <package test;
2026-02-01T18:12:32.4257187Z import org.eclipse.core.runtime.IProgressMonitor;
2026-02-01T18:12:32.4257932Z import org.eclipse.core.runtime.SubProgressMonitor;
2026-02-01T18:12:32.4259090Z import org.eclipse.core.runtime.SubMonitor;
2026-02-01T18:12:32.4259821Z // Simulating a scenario where both imports might coexist
2026-02-01T18:12:32.4260703Z public class Test {
2026-02-01T18:12:32.4261303Z public void doWork(IProgressMonitor monitor) {
2026-02-01T18:12:32.4261989Z monitor.beginTask("Task with both imports", 100);
2026-02-01T18:12:32.4262652Z // Only Eclipse's SubProgressMonitor should be converted
2026-02-01T18:12:32.4263535Z IProgressMonitor sub= new SubProgressMonitor(monitor, 50);
2026-02-01T18:12:32.4329110Z }
2026-02-01T18:12:32.4329455Z }
2026-02-01T18:12:32.4329683Z >

Copy link
Copy Markdown
Contributor Author

Copilot AI commented Feb 1, 2026

@copilot 2026-02-01T18:12:25.7909806Z Running org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest
2026-02-01T18:12:27.5017143Z
2026-02-01T18:12:27.5018724Z (java:4680): dbind-WARNING **: 18:12:27.495:...

The done() removal feature caused widespread test failures (14 out of 16 tests failing). I've temporarily disabled it in commit d2c8a37 to restore the working state of the main SubProgressMonitor transformation.

The feature infrastructure remains in place but is commented out. The issue needs further investigation - the done() visitor may have been interfering with the primary transformation or the scope matching was incorrect.

The core SubProgressMonitor → SubMonitor conversion, flag mapping, and standalone conversion features should now work correctly again.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • www.eclipse.org
    • Triggering command: /usr/lib/jvm/temurin-21-jdk-amd64/bin/java /usr/lib/jvm/temurin-21-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.12/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.12/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.12 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.12/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/sandbox/sandbox org.codehaus.plexus.classworlds.launcher.Launcher clean verify -DskipTests=false (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

@carstenartur carstenartur force-pushed the copilot/cleanup-subprogressmonitor-usage branch from d2c8a37 to f18b7c5 Compare February 3, 2026 05:10
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 3, 2026

Test Results

1 145 tests  +12   1 109 ✅ +12   1m 57s ⏱️ +8s
  184 suites + 1      36 💤 ± 0 
  184 files   + 1       0 ❌ ± 0 

Results for commit 4a0384f. ± Comparison against base commit aa2250c.

This pull request removes 1 and adds 13 tests. Note that renamed tests count towards both.
org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest ‑ testJFaceCleanupParametrized(JFaceCleanupCases)[9] BothImportsCoexist
org.sandbox.jdt.ui.tests.quickfix.ClassInstanceCreationVisitorTest ‑ testDeeplyNestedClassInstanceCreation
org.sandbox.jdt.ui.tests.quickfix.ClassInstanceCreationVisitorTest ‑ testFindAllClassInstanceCreationInMethod
org.sandbox.jdt.ui.tests.quickfix.ClassInstanceCreationVisitorTest ‑ testFindClassInstanceCreationInAnonymousClasses
org.sandbox.jdt.ui.tests.quickfix.ClassInstanceCreationVisitorTest ‑ testFindClassInstanceCreationInLambdas
org.sandbox.jdt.ui.tests.quickfix.ClassInstanceCreationVisitorTest ‑ testFindClassInstanceCreationInNestedBlocks
org.sandbox.jdt.ui.tests.quickfix.ClassInstanceCreationVisitorTest ‑ testFindClassInstanceCreationWithTypeFilter
org.sandbox.jdt.ui.tests.quickfix.ClassInstanceCreationVisitorTest ‑ testFindStandaloneClassInstanceCreation
org.sandbox.jdt.ui.tests.quickfix.ClassInstanceCreationVisitorTest ‑ testJFacePluginPattern
org.sandbox.jdt.ui.tests.quickfix.ClassInstanceCreationVisitorTest ‑ testMultipleBlocksWithSeparateInstances
org.sandbox.jdt.ui.tests.quickfix.ClassInstanceCreationVisitorTest ‑ testScopeFunctionBehavior
org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest ‑ testJFaceCleanupParametrized(JFaceCleanupCases)[10] PrependMainLabelToSubtaskFlag
org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest ‑ testJFaceCleanupParametrized(JFaceCleanupCases)[11] BothImportsCoexist
org.sandbox.jdt.ui.tests.quickfix.Java8CleanUpTest ‑ testJFaceCleanupParametrized(JFaceCleanupCases)[9] SuppressSubtaskLabelFlag

♻️ This comment has been updated with latest results.

@carstenartur carstenartur force-pushed the copilot/cleanup-subprogressmonitor-usage branch from f18b7c5 to f740a82 Compare February 3, 2026 05:46
Copilot AI and others added 5 commits February 3, 2026 21:14
- Added test case for standalone SubProgressMonitor with flags (shows flags are dropped)
- Updated README.md to document flag dropping behavior for standalone cases
- Added documentation about bitwise OR limitation in flag mapping
- Improved inline comments to clarify flag handling
- Fixed duplicate comment in mapSubProgressMonitorFlags method

Co-authored-by: carstenartur <3164220+carstenartur@users.noreply.github.com>
- Added doneInvocations tracking to MonitorHolder
- Implemented done() call visitor in find() method
- Added removal logic in rewrite() method
- Added DoneCallRemoval and MultipleDoneCalls test cases
- Updated README: added feature to Key Features, added example, removed limitation
- Tests show feature is detected but removal not yet working correctly

Co-authored-by: carstenartur <3164220+carstenartur@users.noreply.github.com>
The previous implementation only checked the last holder, which missed done() calls.
Now searches through all MonitorHolders to properly associate done() calls with their
corresponding beginTask transformations.

Co-authored-by: carstenartur <3164220+carstenartur@users.noreply.github.com>
The done() removal feature is causing 14 out of 16 tests to fail. Disabling it
temporarily to restore functionality while investigating the root cause of the
failures. The infrastructure (doneInvocations tracking) remains in place for
future re-enablement once the issue is resolved.

Co-authored-by: carstenartur <3164220+carstenartur@users.noreply.github.com>
@carstenartur carstenartur force-pushed the copilot/cleanup-subprogressmonitor-usage branch from d398274 to c192348 Compare February 3, 2026 20:14
Copilot AI and others added 2 commits February 4, 2026 04:52
Co-authored-by: carstenartur <3164220+carstenartur@users.noreply.github.com>
… done() visitors

The ClassInstanceCreation and done() method visitors had scope functions that prevented
them from accessing the holders created by the beginTask visitor. When multiple visitors
use different scope functions, they get separate holder instances and can't share data.

Removed the scope functions from:
1. callClassInstanceCreationVisitor for SubProgressMonitor detection
2. callMethodInvocationVisitor for done() call detection

This allows these visitors to access the global holder populated by beginTask visitor,
enabling proper SubProgressMonitor transformation.

Co-authored-by: carstenartur <3164220+carstenartur@users.noreply.github.com>
Copilot AI changed the title Add automatic done() call removal for SubMonitor migration Fix visitor scope isolation breaking SubProgressMonitor transformation Feb 4, 2026
Copilot AI requested a review from carstenartur February 4, 2026 04:55
…nitor elements

The scope functions `s -> ASTNodes.getTypedAncestor(s, Block.class)` are intentional
and necessary. They group related progress monitor elements (beginTask, SubProgressMonitor,
done) that belong together within the same Block scope.

Restored scope functions to:
- callClassInstanceCreationVisitor for SubProgressMonitor detection
- callMethodInvocationVisitor for done() call detection

This ensures all three visitors (beginTask, SubProgressMonitor, done) operate on the
same Block-scoped holder, allowing proper matching of related monitor operations.

Co-authored-by: carstenartur <3164220+carstenartur@users.noreply.github.com>
Copilot AI changed the title Fix visitor scope isolation breaking SubProgressMonitor transformation Restore scope functions for Block-scoped progress monitor grouping Feb 4, 2026
@carstenartur carstenartur merged commit 7029917 into main Feb 5, 2026
1 check passed
@carstenartur carstenartur deleted the copilot/cleanup-subprogressmonitor-usage branch February 5, 2026 18:33
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.

3 participants