From 56ee0c498f282273242b333fee47676ddc7bf555 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Thu, 25 Oct 2018 16:39:19 +0200 Subject: [PATCH] added system property to inject livereload script for plugin development --- scm-ui/public/index.mustache | 4 ++++ .../scm/TemplatingPushStateDispatcher.java | 4 ++++ .../TemplatingPushStateDispatcherTest.java | 21 +++++++++++++++++-- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/scm-ui/public/index.mustache b/scm-ui/public/index.mustache index 802be2ca97..62a40d8e93 100644 --- a/scm-ui/public/index.mustache +++ b/scm-ui/public/index.mustache @@ -36,5 +36,9 @@ + + {{#liveReloadURL}} + + {{/liveReloadURL}} diff --git a/scm-webapp/src/main/java/sonia/scm/TemplatingPushStateDispatcher.java b/scm-webapp/src/main/java/sonia/scm/TemplatingPushStateDispatcher.java index 6652975c4a..0888a45dc2 100644 --- a/scm-webapp/src/main/java/sonia/scm/TemplatingPushStateDispatcher.java +++ b/scm-webapp/src/main/java/sonia/scm/TemplatingPushStateDispatcher.java @@ -57,5 +57,9 @@ public class TemplatingPushStateDispatcher implements PushStateDispatcher { return request.getContextPath(); } + public String getLiveReloadURL() { + return System.getProperty("livereload.url"); + } + } } diff --git a/scm-webapp/src/test/java/sonia/scm/TemplatingPushStateDispatcherTest.java b/scm-webapp/src/test/java/sonia/scm/TemplatingPushStateDispatcherTest.java index 126ba9ac0f..cac14bfcf0 100644 --- a/scm-webapp/src/test/java/sonia/scm/TemplatingPushStateDispatcherTest.java +++ b/scm-webapp/src/test/java/sonia/scm/TemplatingPushStateDispatcherTest.java @@ -17,6 +17,7 @@ import java.io.StringWriter; import java.io.Writer; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -45,6 +46,23 @@ public class TemplatingPushStateDispatcherTest { @Test public void testDispatch() throws IOException { + TemplatingPushStateDispatcher.IndexHtmlModel model = dispatch(); + assertEquals("/scm", model.getContextPath()); + assertNull(model.getLiveReloadURL()); + } + + @Test + public void testDispatchWithLiveReloadURL() throws IOException { + System.setProperty("livereload.url", "/livereload.js"); + try { + TemplatingPushStateDispatcher.IndexHtmlModel model = dispatch(); + assertEquals("/livereload.js", model.getLiveReloadURL()); + } finally { + System.clearProperty("livereload.url"); + } + } + + private TemplatingPushStateDispatcher.IndexHtmlModel dispatch() throws IOException { when(request.getContextPath()).thenReturn("/scm"); when(templateEngine.getTemplate(TemplatingPushStateDispatcher.TEMPLATE)).thenReturn(template); @@ -59,8 +77,7 @@ public class TemplatingPushStateDispatcherTest { verify(template).execute(any(Writer.class), captor.capture()); - TemplatingPushStateDispatcher.IndexHtmlModel model = (TemplatingPushStateDispatcher.IndexHtmlModel) captor.getValue(); - assertEquals("/scm", model.getContextPath()); + return (TemplatingPushStateDispatcher.IndexHtmlModel) captor.getValue(); } }