diff options
author | Julien HENRY <julien.henry@sonarsource.com> | 2015-11-18 09:55:05 +0100 |
---|---|---|
committer | Julien HENRY <julien.henry@sonarsource.com> | 2015-11-18 09:55:22 +0100 |
commit | bc5a3713961f55ab88d3e344cd0980d5949534f6 (patch) | |
tree | 2cf4710f73842a382d09a675b2e7083f85150541 | |
parent | 760d4ab222c40e06b1b4217ebcfe5789596b4044 (diff) | |
download | sonarqube-bc5a3713961f55ab88d3e344cd0980d5949534f6.tar.gz sonarqube-bc5a3713961f55ab88d3e344cd0980d5949534f6.zip |
Add more medium tests for tasks
-rw-r--r-- | sonar-batch/src/test/java/org/sonar/batch/mediumtest/tasks/TasksMediumTest.java | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/sonar-batch/src/test/java/org/sonar/batch/mediumtest/tasks/TasksMediumTest.java b/sonar-batch/src/test/java/org/sonar/batch/mediumtest/tasks/TasksMediumTest.java index 741c87ae4c3..0195a075fcd 100644 --- a/sonar-batch/src/test/java/org/sonar/batch/mediumtest/tasks/TasksMediumTest.java +++ b/sonar-batch/src/test/java/org/sonar/batch/mediumtest/tasks/TasksMediumTest.java @@ -20,10 +20,17 @@ package org.sonar.batch.mediumtest.tasks; import com.google.common.collect.ImmutableMap; +import java.util.Arrays; +import java.util.List; +import org.assertj.core.api.Condition; import org.junit.After; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; +import org.sonar.api.SonarPlugin; +import org.sonar.api.issue.action.Actions; +import org.sonar.api.task.Task; +import org.sonar.api.task.TaskDefinition; import org.sonar.api.utils.MessageException; import org.sonar.api.utils.log.LogTester; import org.sonar.batch.bootstrap.MockHttpServer; @@ -40,6 +47,7 @@ public class TasksMediumTest { public LogTester logTester = new LogTester(); public BatchMediumTester tester = BatchMediumTester.builder() + .registerPlugin("faketask", new FakeTaskPlugin()) .build(); private MockHttpServer server = null; @@ -57,6 +65,37 @@ public class TasksMediumTest { } @Test + public void listTasksIncludingBroken() throws Exception { + tester.start(); + tester.newTask() + .properties(ImmutableMap.<String, String>builder() + .put("sonar.task", "list").build()) + .start(); + + assertThat(logTester.logs()).haveExactly(1, new Condition<String>() { + + @Override + public boolean matches(String value) { + return value.contains("Available tasks:") && value.contains("fake: Fake description") && value.contains("broken: Broken description"); + } + }); + } + + @Test + public void runBroken() throws Exception { + tester.start(); + + thrown.expect(IllegalStateException.class); + thrown.expectMessage( + "Unable to load component class org.sonar.batch.mediumtest.tasks.TasksMediumTest$BrokenTask: org.sonar.batch.mediumtest.tasks.TasksMediumTest$BrokenTask has unsatisfied dependency 'class org.sonar.api.issue.action.Actions'"); + + tester.newTask() + .properties(ImmutableMap.<String, String>builder() + .put("sonar.task", "broken").build()) + .start(); + } + + @Test public void triggerViews() throws Exception { startServer(200, "OK"); tester = BatchMediumTester.builder() @@ -94,4 +133,43 @@ public class TasksMediumTest { } } + private static class FakeTaskPlugin extends SonarPlugin { + + @Override + public List getExtensions() { + return Arrays.asList(FakeTask.DEF, FakeTask.class, BrokenTask.DEF, BrokenTask.class); + } + + } + + private static class FakeTask implements Task { + + public static final TaskDefinition DEF = TaskDefinition.builder().key("fake").description("Fake description").taskClass(FakeTask.class).build(); + + @Override + public void execute() { + // TODO Auto-generated method stub + + } + + } + + private static class BrokenTask implements Task { + + public static final TaskDefinition DEF = TaskDefinition.builder().key("broken").description("Broken description").taskClass(BrokenTask.class).build(); + private final Actions serverSideComponent; + + public BrokenTask(Actions serverSideComponent) { + this.serverSideComponent = serverSideComponent; + } + + @Override + public void execute() { + System.out.println(serverSideComponent.list()); + ; + + } + + } + } |