-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Introduce ConversionService
in junit-platform-commons
#4219
base: main
Are you sure you want to change the base?
Conversation
There is plenty of work to do 🙃 The current highlights:
Any feedback would be highly appreciated! |
c31ca83
to
b19cba8
Compare
b19cba8
to
a7a8aa3
Compare
3304ad5
to
c886b7a
Compare
junit-jupiter-params/src/main/java/org/junit/jupiter/params/converter/ArgumentConverter.java
Show resolved
Hide resolved
c886b7a
to
7ea91b8
Compare
Thanks for the draft! 👍 The tests are failing due to:
That's because
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks very promising! 👍
...m-commons/src/main/java/org/junit/platform/commons/support/conversion/ConversionSupport.java
Show resolved
Hide resolved
...m-commons/src/main/java/org/junit/platform/commons/support/conversion/ConversionSupport.java
Show resolved
Hide resolved
...m-commons/src/main/java/org/junit/platform/commons/support/conversion/ConversionSupport.java
Outdated
Show resolved
Hide resolved
...ns/src/main/java/org/junit/platform/commons/support/conversion/DefaultConversionService.java
Outdated
Show resolved
Hide resolved
|
||
import org.junit.platform.commons.support.conversion.TypedConversionService; | ||
|
||
// FIXME delete |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This would make a good test case, though. We have existing tests that register services for tests using an extra class loader:
junit5/platform-tests/src/test/java/org/junit/platform/launcher/core/LauncherFactoryTests.java
Lines 353 to 366 in 16c6f72
private static void withTestServices(Runnable runnable) { | |
var current = Thread.currentThread().getContextClassLoader(); | |
var url = LauncherFactoryTests.class.getClassLoader().getResource("testservices/"); | |
try (var classLoader = new URLClassLoader(new URL[] { url }, current)) { | |
Thread.currentThread().setContextClassLoader(classLoader); | |
runnable.run(); | |
} | |
catch (IOException e) { | |
throw new UncheckedIOException(e); | |
} | |
finally { | |
Thread.currentThread().setContextClassLoader(current); | |
} | |
} |
We could generalize and move that method to a test utility class (e.g. in junit-jupiter-api/src/testFixtures
) so it can be reused here.
When you add that, you'll also have to add it to |
2e17c2b
to
0c2faa7
Compare
I've been lagging behind with this one but I should be able to spend time on it in the upcoming weekend. |
0c2faa7
to
098c972
Compare
098c972
to
8ed6eb6
Compare
@@ -30,17 +29,6 @@ | |||
@API(status = EXPERIMENTAL, since = "1.11") | |||
public final class ConversionSupport { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I realized now that there are no tests for ConversionSupport
in junit-platform-commons
, but DefaultArgumentConverterTests
from jupiter-tests
provide the corresponding coverage.
Is that intended or should I add something to platform-tests
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think that's because the functionality was originally in DefaultArgumentConverter
and was later extracted into ConversionSupport
. I think it would be good to move the String
conversion tests to a separate test for ConversionSupport
directly.
@scordio Do you have time to do that as part of this PR or shall I do that separately as a preparatory step?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No worries, I can take care of that!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Raised #4305.
@@ -46,6 +46,9 @@ protected TypedArgumentConverter(Class<S> sourceType, Class<T> targetType) { | |||
this.targetType = Preconditions.notNull(targetType, "targetType must not be null"); | |||
} | |||
|
|||
/** | |||
* {@inheritDoc} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Isn't this superfluous if you're not adding additional Javadoc yourself?
Overview
ConversionService
SPI #853Locale
argument conversion not settinglanguage
andcountry
properly #3141I hereby agree to the terms of the JUnit Contributor License Agreement.
Definition of Done
@API
annotations