Skip to content

add enumsource exclude reinclude functionality again#2940

Closed
carstenartur wants to merge 6 commits into
eclipse-jdt:masterfrom
carstenartur:copilot/add-enumsource-exclude-reinclude-functionality-again
Closed

add enumsource exclude reinclude functionality again#2940
carstenartur wants to merge 6 commits into
eclipse-jdt:masterfrom
carstenartur:copilot/add-enumsource-exclude-reinclude-functionality-again

Conversation

@carstenartur
Copy link
Copy Markdown
Contributor

@carstenartur carstenartur commented Apr 16, 2026

What it does

Second work package from #2744 (first was #2907 — disable/enable test). Adds right-click context menu support in the JUnit test viewer to exclude specific enum values from @EnumSource parameterized tests and re-include them.

New infrastructure

  • EnumSourceValidator — Reads/writes @EnumSource annotation state via AST bindings: checks EXCLUDE mode, extracts excluded names, removes exclusions, strips [N] display-name prefix to recover enum constant names
  • ParameterizedTestMetadataExtractor — Lazily populates isParameterizedTest / parameterSourceType / parameterEnumType on TestCaseElement by parsing AST on demand; result is cached to avoid repeated parses
  • TestAnnotationModifier.excludeEnumValue(IMethod, String) — AST rewrite that converts @EnumSource(Foo.class)@EnumSource(value=Foo.class, mode=Mode.EXCLUDE, names={"X"}), or appends to an existing exclusion list

New actions

Action Trigger Effect
ExcludeParameterValueAction Right-click TestCaseElement under @EnumSource Adds value to names with mode=EXCLUDE; warns when ≤1 values remain
ReincludeAllEnumValuesAction Submenu on TestSuiteElement Removes mode + names attributes entirely; cleans up Mode import
ReincludeEnumValueAction Submenu entry per excluded name Removes one name; removes mode+names when list becomes empty

Model / UI changes

  • TestCaseElement — Three new fields: fIsParameterizedTest, fParameterSourceType, fParameterEnumType
  • TestSuiteElement — Added getSingleDynamicChild()
  • TestViewer — Wires ExcludeParameterValueAction for case elements; addReincludeExcludedValuesSubmenu() builds the re-include submenu when isExcludeMode() is true
  • TestSessionLabelProvider — Flat-layout label appends [@EnumSource(EnumType)] when metadata is populated

Tests

ExcludeParameterValueDisplayNameTest covers: initial exclude, append to existing exclusion list, remove-all, remove-single-value (including last-value-clears-mode), display-name stripping, and computeNamesAfterReinclude edge cases.

How to test

Author checklist

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants