From 7d2cea5e46d152c6ae9231cd234819e6942d72dc Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Fri, 25 Apr 2014 13:07:46 +0200 Subject: [PATCH] Allow to use ServerTester outside a JUnit @Rule --- .../qualityprofile/QProfilesMediumTest.java | 2 +- .../org/sonar/server/tester/ServerTester.java | 37 ++++++++++++++----- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfilesMediumTest.java b/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfilesMediumTest.java index ecbf00a3cc8..005f991bd9e 100644 --- a/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfilesMediumTest.java +++ b/sonar-server/src/test/java/org/sonar/server/qualityprofile/QProfilesMediumTest.java @@ -46,7 +46,7 @@ import static org.fest.assertions.Assertions.assertThat; public class QProfilesMediumTest { @org.junit.Rule - public ServerTester serverTester = new ServerTester().addExtensions(XooRulesDefinition.class, XooProfileDefinition.class); + public ServerTester serverTester = new ServerTester().addComponents(XooRulesDefinition.class, XooProfileDefinition.class); @Test public void register_profile_at_startup() throws Exception { diff --git a/sonar-server/src/test/java/org/sonar/server/tester/ServerTester.java b/sonar-server/src/test/java/org/sonar/server/tester/ServerTester.java index f5a443491dd..93e79da1701 100644 --- a/sonar-server/src/test/java/org/sonar/server/tester/ServerTester.java +++ b/sonar-server/src/test/java/org/sonar/server/tester/ServerTester.java @@ -31,25 +31,33 @@ import java.util.Properties; /** * Entry point to implement medium tests of server components * - * @since 4.3 + * @since 4.4 */ public class ServerTester extends ExternalResource { - private File tempDir; private Platform platform; + private File tempDir; + private Object[] components; - private Object[] extensions; - + /** + * Called only when JUnit @Rule or @ClassRule is used. + */ @Override protected void before() { - tempDir = createTempDir(); + start(); + } + public void start() { + if (platform != null) { + throw new IllegalStateException("Already started"); + } + tempDir = createTempDir(); Properties properties = new Properties(); properties.setProperty(CoreProperties.SONAR_HOME, tempDir.getAbsolutePath()); properties.setProperty(DatabaseProperties.PROP_URL, "jdbc:h2:" + tempDir.getAbsolutePath() + "/h2"); platform = new Platform(); platform.init(properties); - platform.addExtensions(extensions); + platform.addExtensions(components); platform.doStart(); } @@ -65,15 +73,24 @@ public class ServerTester extends ExternalResource { } } + /** + * Called only when JUnit @Rule or @ClassRule is used. + */ @Override protected void after() { - platform.doStop(); - platform = null; + stop(); + } + + public void stop() { + if (platform != null) { + platform.doStop(); + platform = null; + } FileUtils.deleteQuietly(tempDir); } - public ServerTester addExtensions(Object... extensions) { - this.extensions = extensions; + public ServerTester addComponents(Object... components) { + this.components = components; return this; } -- 2.39.5