Skip to content

Commit e88f0aa

Browse files
committed
Sync working groups
1 parent bd41a42 commit e88f0aa

File tree

1 file changed

+29
-29
lines changed

1 file changed

+29
-29
lines changed

_data/wg.yaml

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,35 @@ working-groups:
2525
point-of-contact: "@mkouba (@<strong>Martin Kouba</strong> on Zulip)"
2626
proposal: https://github.com/quarkusio/quarkus/discussions/46627
2727
discussion: https://quarkusio.zulipchat.com/#narrow/channel/187038-dev/topic/Gizmo.202.2Ex.20WG.20chat
28+
- title: "Test classloading"
29+
board-url: "https://github.com/orgs/quarkusio/projects/30"
30+
short-description: |
31+
The goal of this working group is to rewrite Quarkus's test classloading, so that tests are run in the same classloader as the application under tests, and Quarkus extensions can do "Quarkus-y" manipulations of test classes.
32+
readme: |
33+
<p>At the moment, Quarkus tests are invoked using one classloader, and then executed in a different classloader. This mostly works well, but means some use cases don't work: extensions cannot manipulate test classes in the same way that they do normal application classes. For example, anything run via a JUnit @TestTemplate test case will see the un-transformed class.</p>
34+
<p>It also means we have extra user-facing complexity, such as the QuarkusTest*Callbacks](https://quarkus.io/guides/getting-started-testing#enrichment-via-quarkustestcallback):</p>
35+
<blockquote>
36+
<p>While it is possible to use JUnit Jupiter callback interfaces like BeforeEachCallback, you might run into classloading issues because Quarkus has to run tests in a custom classloader which JUnit is not aware of.</p>
37+
</blockquote>
38+
<p>A final benefit is a reduction in the internal complexity of our code. Hopping between classloaders during test execution takes a lot of work, and adds a lot of code! It also is brittle in places. For example, because the hop between classloaders relies on serialization in some cases, it's becoming harder to do as the JVM tightens up security restrictions. We used to rely on xstream, but that stopped working in Java 17. In https://github.com/quarkusio/quarkus/pull/40601, @dmlloyd moved us to use the JBoss Serializer, which works better, but might still be affected by future restrictions on class access.</p>
39+
<p>The goal of this working group is to allow test classes to fully participate in the 'quarkification' of classes. The mechanism for this is probably just to load the test classes with the classloader we intend to run them with, so that JUnit sees the 'correct' version of the class.</p>
40+
<ul>
41+
<li>Point of contact: @holly-cummins (@<strong>Holly Cummins</strong> on Zulip)</li>
42+
<li>Proposal: https://github.com/quarkusio/quarkus/discussions/41867</li>
43+
<li>Discussion: <a href="https://quarkusio.zulipchat.com/#narrow/channel/187038-dev/topic/WG.20.2330.20Test.20Classloading.20chatter/">Zulip topic</a></li>
44+
</ul>
45+
status: on track
46+
lts: false
47+
completed: false
48+
last-activity: 2025-06-03
49+
last-update-date: 2025-04-28
50+
last-update: |
51+
In the last month, the WG - Test classloading successfully closed significant issues related to classloader behavior, including fixing ServiceLoader errors and NullPointerExceptions that impacted test discovery. However, several issues were opened, focusing on recurring ServiceConfigurationErrors and additional classloader-related concerns. The team also initiated communications with the first blog detailing test classloading changes. This ongoing work aims to enhance Quarkus's test environment by ensuring proper classloader interactions and minimizing errors during testing.
52+
53+
(This status update was automatically generated using AI.)
54+
point-of-contact: "@holly-cummins (@<strong>Holly Cummins</strong> on Zulip)"
55+
proposal: https://github.com/quarkusio/quarkus/discussions/41867
56+
discussion: https://quarkusio.zulipchat.com/#narrow/channel/187038-dev/topic/WG.20.2330.20Test.20Classloading.20chatter/
2857
- title: "Quarkus to the CommonHaus Foundation"
2958
board-url: "https://github.com/orgs/quarkusio/projects/38"
3059
short-description: |
@@ -65,35 +94,6 @@ working-groups:
6594
Marking as risk as deadline april 1st is looming and still things to define.
6695
6796
There is a Quarkus f2f meeting next week that could clarify/move things forward and start to share more publically as things get moved over from internal IT.
68-
- title: "Test classloading"
69-
board-url: "https://github.com/orgs/quarkusio/projects/30"
70-
short-description: |
71-
The goal of this working group is to rewrite Quarkus's test classloading, so that tests are run in the same classloader as the application under tests, and Quarkus extensions can do "Quarkus-y" manipulations of test classes.
72-
readme: |
73-
<p>At the moment, Quarkus tests are invoked using one classloader, and then executed in a different classloader. This mostly works well, but means some use cases don't work: extensions cannot manipulate test classes in the same way that they do normal application classes. For example, anything run via a JUnit @TestTemplate test case will see the un-transformed class.</p>
74-
<p>It also means we have extra user-facing complexity, such as the QuarkusTest*Callbacks](https://quarkus.io/guides/getting-started-testing#enrichment-via-quarkustestcallback):</p>
75-
<blockquote>
76-
<p>While it is possible to use JUnit Jupiter callback interfaces like BeforeEachCallback, you might run into classloading issues because Quarkus has to run tests in a custom classloader which JUnit is not aware of.</p>
77-
</blockquote>
78-
<p>A final benefit is a reduction in the internal complexity of our code. Hopping between classloaders during test execution takes a lot of work, and adds a lot of code! It also is brittle in places. For example, because the hop between classloaders relies on serialization in some cases, it's becoming harder to do as the JVM tightens up security restrictions. We used to rely on xstream, but that stopped working in Java 17. In https://github.com/quarkusio/quarkus/pull/40601, @dmlloyd moved us to use the JBoss Serializer, which works better, but might still be affected by future restrictions on class access.</p>
79-
<p>The goal of this working group is to allow test classes to fully participate in the 'quarkification' of classes. The mechanism for this is probably just to load the test classes with the classloader we intend to run them with, so that JUnit sees the 'correct' version of the class.</p>
80-
<ul>
81-
<li>Point of contact: @holly-cummins (@<strong>Holly Cummins</strong> on Zulip)</li>
82-
<li>Proposal: https://github.com/quarkusio/quarkus/discussions/41867</li>
83-
<li>Discussion: <a href="https://quarkusio.zulipchat.com/#narrow/channel/187038-dev/topic/WG.20.2330.20Test.20Classloading.20chatter/">Zulip topic</a></li>
84-
</ul>
85-
status: on track
86-
lts: false
87-
completed: false
88-
last-activity: 2025-06-03
89-
last-update-date: 2025-04-28
90-
last-update: |
91-
In the last month, the WG - Test classloading successfully closed significant issues related to classloader behavior, including fixing ServiceLoader errors and NullPointerExceptions that impacted test discovery. However, several issues were opened, focusing on recurring ServiceConfigurationErrors and additional classloader-related concerns. The team also initiated communications with the first blog detailing test classloading changes. This ongoing work aims to enhance Quarkus's test environment by ensuring proper classloader interactions and minimizing errors during testing.
92-
93-
(This status update was automatically generated using AI.)
94-
point-of-contact: "@holly-cummins (@<strong>Holly Cummins</strong> on Zulip)"
95-
proposal: https://github.com/quarkusio/quarkus/discussions/41867
96-
discussion: https://quarkusio.zulipchat.com/#narrow/channel/187038-dev/topic/WG.20.2330.20Test.20Classloading.20chatter/
9797
- title: "Quarkus 3.15 LTS"
9898
board-url: "https://github.com/orgs/quarkusio/projects/28"
9999
short-description: |

0 commit comments

Comments
 (0)