@@ -338,6 +338,7 @@ public SuiteLauncherDiscoveryRequestBuilder applyConfigurationParametersFromSuit
338338 * <li>{@link SelectModules}</li>
339339 * <li>{@link SelectUris}</li>
340340 * <li>{@link SelectPackages}</li>
341+ * <li>{@link Select}</li>
341342 * </ul>
342343 *
343344 * @param suiteClass the class to apply the discovery selectors and filter
@@ -349,71 +350,84 @@ public SuiteLauncherDiscoveryRequestBuilder applyConfigurationParametersFromSuit
349350 public SuiteLauncherDiscoveryRequestBuilder applySelectorsAndFiltersFromSuite (Class <?> suiteClass ) {
350351 Preconditions .notNull (suiteClass , "Suite class must not be null" );
351352
352- // Annotations in alphabetical order (except @SelectClasses)
353- // @formatter:off
354- findAnnotationValues (suiteClass , ExcludeClassNamePatterns .class , ExcludeClassNamePatterns ::value )
355- .flatMap (SuiteLauncherDiscoveryRequestBuilder ::trimmed )
356- .map (ClassNameFilter ::excludeClassNamePatterns )
353+ addExcludeFilters (suiteClass );
354+ // Process @SelectClasses and @SelectMethod before @IncludeClassNamePatterns, since the names
355+ // of selected classes get automatically added to the include filter.
356+ addClassAndMethodSelectors (suiteClass );
357+ addIncludeFilters (suiteClass );
358+ addOtherSelectors (suiteClass );
359+ return this ;
360+ }
361+
362+ private void addExcludeFilters (Class <?> suiteClass ) {
363+ findAnnotationValues (suiteClass , ExcludeClassNamePatterns .class , ExcludeClassNamePatterns ::value ) //
364+ .flatMap (SuiteLauncherDiscoveryRequestBuilder ::trimmed ) //
365+ .map (ClassNameFilter ::excludeClassNamePatterns ) //
357366 .ifPresent (this ::filters );
358- findAnnotationValues (suiteClass , ExcludeEngines .class , ExcludeEngines ::value )
359- .map (EngineFilter ::excludeEngines )
367+ findAnnotationValues (suiteClass , ExcludeEngines .class , ExcludeEngines ::value ) //
368+ .map (EngineFilter ::excludeEngines ) //
360369 .ifPresent (this ::filters );
361- findAnnotationValues (suiteClass , ExcludePackages .class , ExcludePackages ::value )
362- .map (PackageNameFilter ::excludePackageNames )
370+ findAnnotationValues (suiteClass , ExcludePackages .class , ExcludePackages ::value ) //
371+ .map (PackageNameFilter ::excludePackageNames ) //
363372 .ifPresent (this ::filters );
364- findAnnotationValues (suiteClass , ExcludeTags .class , ExcludeTags ::value )
365- .map (TagFilter ::excludeTags )
373+ findAnnotationValues (suiteClass , ExcludeTags .class , ExcludeTags ::value ) //
374+ .map (TagFilter ::excludeTags ) //
366375 .ifPresent (this ::filters );
367- // Process @SelectClasses before @IncludeClassNamePatterns, since the names
368- // of selected classes get automatically added to the include filter.
369- findAnnotation (suiteClass , SelectClasses .class )
370- .map (annotation -> selectClasses (suiteClass , annotation ))
376+ }
377+
378+ private void addClassAndMethodSelectors (Class <?> suiteClass ) {
379+ findAnnotation (suiteClass , SelectClasses .class ) //
380+ .map (annotation -> selectClasses (suiteClass , annotation )) //
371381 .ifPresent (this ::selectors );
372- findRepeatableAnnotations (suiteClass , SelectMethod .class )
373- .stream ()
374- .map (annotation -> selectMethod (suiteClass , annotation ))
382+ findRepeatableAnnotations (suiteClass , SelectMethod .class ) //
383+ .stream () //
384+ .map (annotation -> selectMethod (suiteClass , annotation )) //
375385 .forEach (this ::selectors );
376- findAnnotationValues (suiteClass , IncludeClassNamePatterns .class , IncludeClassNamePatterns ::value )
377- .flatMap (SuiteLauncherDiscoveryRequestBuilder ::trimmed )
378- .map (this ::createIncludeClassNameFilter )
386+ }
387+
388+ private void addIncludeFilters (Class <?> suiteClass ) {
389+ findAnnotationValues (suiteClass , IncludeClassNamePatterns .class , IncludeClassNamePatterns ::value ) //
390+ .flatMap (SuiteLauncherDiscoveryRequestBuilder ::trimmed ) //
391+ .map (this ::createIncludeClassNameFilter ) //
379392 .ifPresent (filters -> {
380393 this .includeClassNamePatternsUsed = true ;
381394 filters (filters );
382395 });
383- findAnnotationValues (suiteClass , IncludeEngines .class , IncludeEngines ::value )
384- .map (EngineFilter ::includeEngines )
396+ findAnnotationValues (suiteClass , IncludeEngines .class , IncludeEngines ::value ) //
397+ .map (EngineFilter ::includeEngines ) //
385398 .ifPresent (this ::filters );
386- findAnnotationValues (suiteClass , IncludePackages .class , IncludePackages ::value )
387- .map (PackageNameFilter ::includePackageNames )
399+ findAnnotationValues (suiteClass , IncludePackages .class , IncludePackages ::value ) //
400+ .map (PackageNameFilter ::includePackageNames ) //
388401 .ifPresent (this ::filters );
389- findAnnotationValues (suiteClass , IncludeTags .class , IncludeTags ::value )
390- .map (TagFilter ::includeTags )
402+ findAnnotationValues (suiteClass , IncludeTags .class , IncludeTags ::value ) //
403+ .map (TagFilter ::includeTags ) //
391404 .ifPresent (this ::filters );
392- findRepeatableAnnotations (suiteClass , SelectClasspathResource .class )
393- .stream ()
394- .map (annotation -> selectClasspathResource (annotation .value (), annotation .line (), annotation .column ()))
405+ }
406+
407+ private void addOtherSelectors (Class <?> suiteClass ) {
408+ findRepeatableAnnotations (suiteClass , SelectClasspathResource .class ) //
409+ .stream () //
410+ .map (annotation -> selectClasspathResource (annotation .value (), annotation .line (), annotation .column ())) //
395411 .forEach (this ::selectors );
396- findAnnotationValues (suiteClass , SelectDirectories .class , SelectDirectories ::value )
397- .map (AdditionalDiscoverySelectors ::selectDirectories )
412+ findAnnotationValues (suiteClass , SelectDirectories .class , SelectDirectories ::value ) //
413+ .map (AdditionalDiscoverySelectors ::selectDirectories ) //
398414 .ifPresent (this ::selectors );
399- findRepeatableAnnotations (suiteClass , SelectFile .class )
400- .stream ()
401- .map (annotation -> selectFile (annotation .value (), annotation .line (), annotation .column ()))
415+ findRepeatableAnnotations (suiteClass , SelectFile .class ) //
416+ .stream () //
417+ .map (annotation -> selectFile (annotation .value (), annotation .line (), annotation .column ())) //
402418 .forEach (this ::selectors );
403- findAnnotationValues (suiteClass , SelectModules .class , SelectModules ::value )
404- .map (AdditionalDiscoverySelectors ::selectModules )
419+ findAnnotationValues (suiteClass , SelectModules .class , SelectModules ::value ) //
420+ .map (AdditionalDiscoverySelectors ::selectModules ) //
405421 .ifPresent (this ::selectors );
406- findAnnotationValues (suiteClass , SelectUris .class , SelectUris ::value )
407- .map (AdditionalDiscoverySelectors ::selectUris )
422+ findAnnotationValues (suiteClass , SelectUris .class , SelectUris ::value ) //
423+ .map (AdditionalDiscoverySelectors ::selectUris ) //
408424 .ifPresent (this ::selectors );
409- findAnnotationValues (suiteClass , SelectPackages .class , SelectPackages ::value )
410- .map (AdditionalDiscoverySelectors ::selectPackages )
425+ findAnnotationValues (suiteClass , SelectPackages .class , SelectPackages ::value ) //
426+ .map (AdditionalDiscoverySelectors ::selectPackages ) //
411427 .ifPresent (this ::selectors );
412- findAnnotationValues (suiteClass , Select .class , Select ::value )
413- .map (AdditionalDiscoverySelectors ::parseIdentifiers )
428+ findAnnotationValues (suiteClass , Select .class , Select ::value ) //
429+ .map (AdditionalDiscoverySelectors ::parseIdentifiers ) //
414430 .ifPresent (this ::selectors );
415- // @formatter:on
416- return this ;
417431 }
418432
419433 /**
0 commit comments