Skip to content

Conversation

@Bukama
Copy link
Contributor

@Bukama Bukama commented Nov 7, 2025

This is a first draft (cause I'm getting tired and will pause for today) of passing the @DefaultLocale and @DefaultTimezone extensions to JUnit.

Points I have to check (feel free to gimme some hints)

  • How to use JUnits internal testkit
  • Why checkstyle fails just right after spotless:apply goal was run
  • That ArchUnit rules are in place

I hereby agree to the terms of the JUnit Contributor License Agreement.


Definition of Done

@sbrannen sbrannen linked an issue Nov 8, 2025 that may be closed by this pull request
@sbrannen sbrannen changed the title Initial draft for providing DefaultLocale and DefaulTimezone extensions Initial draft for providing @DefaultLocale and @DefaulTimezone extensions Nov 8, 2025
Copy link
Member

@marcphilipp marcphilipp left a comment

Choose a reason for hiding this comment

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

Thanks for this initial push! 👍

How to use JUnit's internal testkit

We just use EngineTestKit directly, without the abstraction that Pioneer has. I commented on one such test.

Why checkstyle fails just right after spotless:apply goal was run

Checkstyle can fail even though Spotless formatted the code. Spotless is purely about formatting, while we use Checkstyle for some more semantic checks.

That ArchUnit rules are in place

What did you want to check for?

@marcphilipp marcphilipp changed the title Initial draft for providing @DefaultLocale and @DefaulTimezone extensions Initial draft for providing @DefaultLocale and @DefaultTimeZone extensions Nov 8, 2025
@Bukama
Copy link
Contributor Author

Bukama commented Nov 9, 2025

Thank you for your feedback, I think (hope) I applied all of it correctly. I find the testkit methods very confusing and verbose, but I guess that's a thing how used you are to them.

What did you want to check for?
Nothing, I saw that I have violations against ArchUnit's rules, but was too tired to check which I violate (turned out it was the missing @API annotations.

In general I'm done with most parts, I now have to figure out which are the correct findAnnotation methods in JUpiter to match those of Pioneer. Especially those with nested and class level ones.

Comment on lines 36 to 37
AnnotatedElement element = context.getElement().orElse(null);
AnnotationSupport.findAnnotation(element, DefaultLocale.class).ifPresent(
Copy link
Member

Choose a reason for hiding this comment

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

This won't find annotations on top-level and nested classes (which is why the test fail). You can either search the hierarchy upward (like the Pioneer implementation does) or implement BeforeAllCallback and store the value in the class-level store so it can be used as a fallback here.

Copy link
Member

Choose a reason for hiding this comment

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

As discussed via email, I've pushed a commit that uses BeforeAllCallback to achieve this. The second commit moves the extension implementation to junit-jupiter-api to avoid its overhead since it should only be active when the @DefaultLocale annotation is used.

@Bukama Could you please do the same for @DefaultTimeZone?

Copy link
Contributor Author

@Bukama Bukama Nov 17, 2025

Choose a reason for hiding this comment

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

Thank you for your help. Applied it to @DefaultTimeZone, but need to figure out, where I have a circular dependency (cause ArchUnit-Report is truncated).

Had to laugh when reading your move, cause the first thing I did when porting was to split api and extension, because I understood your comment in the issue to do so :D

Another question: As you released 6.1-RC1 today, I guess I should switch the @since to 6.2?

edit: Will search again tomorrow, I'm tired after 16h awake

@Bukama Bukama force-pushed the 4727_passdefaultlocale branch from 503f858 to dda60f6 Compare November 17, 2025 19:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support set / reset time zone and locale during test execution

3 participants