This test plan covers Qute functionality provided by quarkus-qute
,quarkus-resteasy-qute
and quarkus-resteasy-reactive-qute
and extensions.
The list below lists the functionality described in the Qute guide [1]. Keyword "covered" means the functionality is covered in upstream tests. We need to create tests for the functionality described as "not covered", "covered partially" or which is important enough to be covered independently of the upstream coverage.
- Qute.fmt usage
- Template.render (synchronous)
- Template.renderAsync
- Template.createMulti() and createUni()
- Engine injection
- Template injection by template name
- Template injection with @Location tag (template locators)
- Content:
- rendering of tags (parsed and unparsed covered)
- expressions (4 types, coverage status unclear)
- arrays (covered partially)
- loops (covered partially, especially metadata)
- character escapes and raw data (covered)
- virtual methods (covered)
if
andwhen
sections (covered)- template inheritance (covered, probably worth some addition)
- with (covered) and let (covered) sections
- eval sections (covered)
- Encoding: non-latin, RTL and multibyte scripts (this is not covered)
- Unparsed Character Data (covered upstream but not for multiline)
- User-defined tags (covered)
- Values resolvers (covered)
- Content filters (covered)
- Direct bean injection (covered) with type-safe Expressions (covered)
- @CheckedTemplate (covered)
- Build-name templates: maps (not covered), lists (covered), integers (covered), strings (covered), time (covered)
- Other templates: @TemplateData (covered), @TemplateEnum (covered), @TemplateGlobal (covered), @CheckedTemplate (covered). These may require special treatment[3] to work in native mode.
- Content negotiation.
- Check development mode updates
- Message bundles (covered upstream, coverage for a single non-trivial case exists in TS). We should add coverage for multiline RTL text.
There are 2 new modules (reactive and non-reactive) planned for QuarkusTS. Tests do not require heavy IO traffic or external connections, so their running time should be comparable to running time of http-minimum module.
- Bare metal
- 1 minute for JVM mode
- 4 minute for native mode
- OpenShift
- 6 minutes for JVM mode
- 12 minutes for native mode
Additionally, we need to enable qute module in quickstarts (<1 minute running time in JVM mode) for our acceptance and interoperability tests.
- Create two new test modules under under https://github.com/quarkus-qe/quarkus-test-suite/tree/main/qute.
- One should cover the reactive module
- Another should cover the synchronous one.
- Both should have the same tests but use different outputs in their endpoints.
- Add
qute-quickstart
to the acceptance set and to the interoperability sets.
- Getting templates from DB (see [2]), since it is not currently supported in upstream.
5-10 developer days
- https://issues.redhat.com/browse/QUARKUS-2330 (RESTEasy)
- https://issues.redhat.com/browse/QUARKUS-2329 (RESTEasy reactive)
- https://issues.redhat.com/browse/QUARKUS-2328 (templating)