Skip to content

Commit

Permalink
Dev UI qute config - switch to strict rendering
Browse files Browse the repository at this point in the history
- resolves quarkusio#18485
- also added smoke tests for most of the extensions that provide
qute-based UI

(cherry picked from commit a14ff43)
  • Loading branch information
mkouba authored and gsmet committed Jul 19, 2021
1 parent 51400c1 commit 078b012
Show file tree
Hide file tree
Showing 23 changed files with 570 additions and 37 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<a target="_blank" href="http://{info:remoteCacheManager.getConfiguration().servers().get(0).host()}:{info:remoteCacheManager.getConfiguration().servers().get(0).port()}" class="badge badge-light">
<a target="_blank" href="http://{info:remoteCacheManager.configuration.servers.get(0).host}:{info:remoteCacheManager.configuration.servers.get(0).port}" class="badge badge-light">
<i class="fa fa-external-link-alt fa-fw"></i> Web Console</a>
<br>
<a target="_blank" href="http://infinispan.org" class="badge badge-light">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
{/if}
{#if it.delay > 0}
(with delay {it.delay} {it.delayUnit.toString.toLowerCase})
{#else if !schedule.delayed.empty}
{#else if !it.delayed.empty}
(delayed for {it.delayed})
{/if}
Original file line number Diff line number Diff line change
Expand Up @@ -475,7 +475,7 @@ private Engine buildEngine(List<DevTemplatePathBuildItem> devTemplatePaths,
// Escape some characters for HTML templates
builder.addResultMapper(new HtmlEscaper());

builder.strictRendering(false)
builder.strictRendering(true)
.addValueResolver(new ReflectionValueResolver())
.addValueResolver(new JsonObjectValueResolver())
.addValueResolver(new MultiMapValueResolver())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
{#actionableExtension it/}
{/each}
</div>
{#if nonActionableExtensions.size() > 0}
{#if nonActionableExtensions}
<hr/>
<div class="row row-cols-1 row-cols-md-4">
{#each nonActionableExtensions}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,9 +146,7 @@ <h5>
{/if}
</td>
<td>
{#if item.description.fmtJavadoc && item.description.fmtJavadoc != 'NOT_FOUND'}
{item.description.fmtJavadoc}
{/if}
{item.description.fmtJavadoc??}
</td>
</tr>
{/for}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@
<link rel="shortcut icon" type="image/png" href="{devRootAppend}/resources/images/favicon.ico" >

<style>
{#insert style/}
{#insert style /}
</style>

<script src="{devRootAppend}/resources/js/jquery.min.js"></script>
<script src="{devRootAppend}/resources/js/bootstrap.bundle.min.js"></script>
<script src="{devRootAppend}/resources/js/dev-console.js"></script>

<title>
{#if currentExtensionName && currentExtensionName != 'Eclipse Vert.x - HTTP'}
{#if currentExtensionName?? && currentExtensionName != 'Eclipse Vert.x - HTTP'}
{currentExtensionName} ›
{/if}
{#insert title/}
Expand All @@ -36,7 +36,7 @@
<img src="{devRootAppend}/resources/images/quarkus_icon_rgb_reverse.svg" width="40" height="30" class="d-inline-block align-middle" alt="Quarkus"/>
<span id="navbar-title" class="align-middle">Dev UI</span>
</a>
{#if currentExtensionName}
{#if currentExtensionName??}
<span id="navbar-subtitle" class="navbar-nav">
<span class="navbar-item">
{#if currentExtensionName == 'Eclipse Vert.x - HTTP'}
Expand All @@ -53,11 +53,11 @@
</nav>

<!-- Content section / Tiles -->
<div class="container{#if fluid}-fluid{/if} main-container">
<div class="container{#if fluid??}-fluid{/if} main-container">

{#if flash['message']}
<div class="alert alert-{flash['message']['class']} show fade" role="alert" data-timer="{flash['displayTime']}">
{flash['message']['text']}
{#if flash.message??}
<div class="alert alert-{flash.message.class} show fade" role="alert" data-timer="{flash.displayTime}">
{flash.message.text}
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
Expand All @@ -82,7 +82,7 @@
</a>
</div>
<div class="col-md-auto px-0">
{#include logmanagerNav}{/include}
{#include logmanagerNav /}
</div>
<div class="col">
<a id="devUiFooterResizeButton" class="btn devUiFooterButton float-right showOnOpenFooter">
Expand All @@ -102,8 +102,8 @@
</div>
</div>

{#include logmanagerModals}{/include}
{#include testsModals}{/include}
{#include logmanagerModals /}
{#include testsModals /}

<script src="{devRootAppend}/resources/js/logstream.js"></script>
<script src="{devRootAppend}/resources/js/tests.js"></script>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,24 @@
<div class="card-header bg-primary text-light guide-padding-right">
<div class="row">
<div class="col-md-10">
{it['name']}
{it.name}
</div>
<div class="col-md-1">
{#if it['metadata'] && it['metadata']['guide']}
<a href="{it['metadata']['guide']}" class="text-light float-right" title="Guide"><i class="fa fa-book"></i></a>
{#if it.metadata.guide??}
<a href="{it.metadata.guide}" class="text-light float-right" title="Guide"><i class="fa fa-book"></i></a>
{/if}
</div>
</div>
</div>
<div class="card-body">
<p class="card-text">
{#if it['metadata'] && it['metadata']['status'] == 'experimental'}
{#if it.metadata.status?? == 'experimental'}
<span class="float-right badge badge-warning">EXPERIMENTAL</span>
{/if}
<span class="card-subtitle mb-2 text-muted">{it['description']}</span>
<span class="card-subtitle mb-2 text-muted">{it.description}</span>
<br/>
{#if it['_dev']}
{it['_dev'].raw}
{#if it._dev??}
{it._dev.raw}
{/if}
</p>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
{#if it['metadata'] && it['metadata']['unlisted'] != true}
{#if it.metadata?? && !it.metadata.unlisted??}
<div class="col mb-4">
<div class="card h-100">
<div class="card-header guide-padding-right">
<div class="row">
<div class="col-md-10">
{it['name']}
{it.name}
</div>
<div class="col-md-1">
{#if it['metadata'] && it['metadata']['guide']}
<a href="{it['metadata']['guide']}" class="text-muted float-right" title="Guide"><i class="fa fa-book"></i></a>
{#if it.metadata.guide??}
<a href="{it.metadata.guide}" class="text-muted float-right" title="Guide"><i class="fa fa-book"></i></a>
{/if}
</div>
</div>
</div>
<div class="card-body">
<p class="card-text">
{#if it['metadata'] && it['metadata']['status'] == 'experimental'}
{#if it.metadata.status?? == 'experimental'}
<span class="float-right badge badge-warning">EXPERIMENTAL</span>
{/if}
<span class="card-subtitle mb-2 text-muted">{it['description']}</span>
<span class="card-subtitle mb-2 text-muted">{it.description}</span>
<br/>
{#if it['_dev']}
{it['_dev'].raw}
{#if it._dev??}
{it._dev.raw}
{/if}
</p>
</div>
Expand Down
67 changes: 65 additions & 2 deletions integration-tests/devmode/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,40 @@
<name>Quarkus - Integration Tests - Dev Mode</name>

<dependencies>

<!-- test dependencies -->
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-deployment</artifactId>
<artifactId>quarkus-resteasy-reactive-deployment</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-scheduler-deployment</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-grpc-deployment</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-qute-deployment</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-reactive-messaging-deployment</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-cache-deployment</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-container-image-docker-deployment</artifactId>
<scope>test</scope>
</dependency>
<dependency>
Expand All @@ -33,7 +62,41 @@
</dependencies>

<build>
<extensions>
<extension>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.6.1</version>
<configuration>
<protocArtifact>com.google.protobuf:protoc:${protoc.version}:exe:${os.detected.classifier}</protocArtifact>
<pluginId>grpc-java</pluginId>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}</pluginArtifact>
<protocPlugins>
<protocPlugin>
<id>quarkus-grpc-protoc-plugin</id>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-grpc-protoc-plugin</artifactId>
<version>${project.version}</version>
<mainClass>io.quarkus.grpc.protoc.plugin.MutinyGrpcGenerator</mainClass>
</protocPlugin>
</protocPlugins>
</configuration>
<executions>
<execution>
<id>test-compile</id>
<goals>
<goal>test-compile</goal>
<goal>test-compile-custom</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package io.quarkus.test.devconsole;

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Observes;
import javax.inject.Named;

import org.hamcrest.Matchers;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

import io.quarkus.test.QuarkusDevModeTest;
import io.restassured.RestAssured;

/**
* Note that this test cannot be placed under the relevant {@code -deployment} module because then the DEV UI processor would
* not be able to locate the template resources correctly.
*/
public class DevConsoleArcSmokeTest {

@RegisterExtension
static final QuarkusDevModeTest test = new QuarkusDevModeTest()
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
.addClasses(Foo.class));

@Test
public void testPages() {
RestAssured
.get("q/dev/io.quarkus.quarkus-arc/beans")
.then()
.statusCode(200).body(Matchers.containsString("io.quarkus.test.devconsole.DevConsoleArcSmokeTest$Foo"));
RestAssured
.get("q/dev/io.quarkus.quarkus-arc/observers")
.then()
.statusCode(200)
.body(Matchers.containsString("io.quarkus.test.devconsole.DevConsoleArcSmokeTest$Foo#onStr"));
RestAssured
.get("q/dev/io.quarkus.quarkus-arc/events")
.then()
.statusCode(200).body(Matchers.containsString("io.quarkus.runtime.StartupEvent"));
RestAssured
.get("q/dev/io.quarkus.quarkus-arc/invocations")
.then()
.statusCode(200);
RestAssured
.get("q/dev/io.quarkus.quarkus-arc/removed-beans")
.then()
.statusCode(200).body(Matchers.containsString("org.jboss.logging.Logger"));
}

@Named
@ApplicationScoped
public static class Foo {

void onStr(@Observes String event) {
}

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package io.quarkus.test.devconsole;

import javax.inject.Singleton;

import org.hamcrest.Matchers;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

import io.quarkus.cache.CacheResult;
import io.quarkus.test.QuarkusDevModeTest;
import io.restassured.RestAssured;

/**
* Note that this test cannot be placed under the relevant {@code -deployment} module because then the DEV UI processor would
* not be able to locate the template resources correctly.
*/
public class DevConsoleCacheSmokeTest {

@RegisterExtension
static final QuarkusDevModeTest config = new QuarkusDevModeTest()
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class).addClass(MyBean.class));

@Test
public void testCaches() {
RestAssured.get("q/dev/io.quarkus.quarkus-cache/caches")
.then()
.statusCode(200).body(Matchers.containsString("myCache"));
}

@Singleton
public static class MyBean {

@CacheResult(cacheName = "myCache")
String ping() {
return "foo";
}

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package io.quarkus.test.devconsole;

import org.hamcrest.Matchers;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

import io.quarkus.test.QuarkusDevModeTest;
import io.restassured.RestAssured;

/**
* Note that this test cannot be placed under the relevant {@code -deployment} module because then the DEV UI processor would
* not be able to locate the template resources correctly.
*/
public class DevConsoleConfigSmokeTest {

@RegisterExtension
static final QuarkusDevModeTest config = new QuarkusDevModeTest()
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class));

@Test
public void testConfigEditor() {
RestAssured.get("q/dev/io.quarkus.quarkus-vertx-http/config")
.then()
.statusCode(200).body(Matchers.containsString("Config Editor"));

}
}
Loading

0 comments on commit 078b012

Please sign in to comment.