aboutsummaryrefslogtreecommitdiffstats
path: root/its/plugin/src/test
diff options
context:
space:
mode:
authorElena Vilchik2018-06-12 13:34:33 +0200
committerGitHub2018-06-12 13:34:33 +0200
commitfb56fdc0dc18d277ccfae2cdb948e9da367377ea (patch)
treeabf9f112d0249d97bac25123f30bdb6188164401 /its/plugin/src/test
parent6cebcca87c5d276627fe22b9c53ddeb4844894b6 (diff)
downloadsonar-css-fb56fdc0dc18d277ccfae2cdb948e9da367377ea.tar.bz2
Create CSS language and set up trivial ITs (#39)
Diffstat (limited to 'its/plugin/src/test')
-rw-r--r--its/plugin/src/test/java/org/sonar/css/its/MetricsTest.java47
-rw-r--r--its/plugin/src/test/java/org/sonar/css/its/Tests.java91
2 files changed, 138 insertions, 0 deletions
diff --git a/its/plugin/src/test/java/org/sonar/css/its/MetricsTest.java b/its/plugin/src/test/java/org/sonar/css/its/MetricsTest.java
new file mode 100644
index 0000000..232e955
--- /dev/null
+++ b/its/plugin/src/test/java/org/sonar/css/its/MetricsTest.java
@@ -0,0 +1,47 @@
+/*
+ * SonarCSS
+ * Copyright (C) 2018-2018 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.css.its;
+
+import com.sonar.orchestrator.Orchestrator;
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
+import org.junit.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.sonar.css.its.Tests.getProjectMeasureAsDouble;
+
+public class MetricsTest {
+
+ private static String PROJECT_KEY = "css-plugin-test-project";
+
+ @ClassRule
+ public static Orchestrator orchestrator = Tests.ORCHESTRATOR;
+
+ @BeforeClass
+ public static void prepare() {
+ orchestrator.executeBuild(Tests.createScanner(PROJECT_KEY));
+ }
+
+ @Test
+ public void test() {
+ assertThat(getProjectMeasureAsDouble("lines", PROJECT_KEY)).isEqualTo(27);
+ }
+
+}
diff --git a/its/plugin/src/test/java/org/sonar/css/its/Tests.java b/its/plugin/src/test/java/org/sonar/css/its/Tests.java
new file mode 100644
index 0000000..4e38073
--- /dev/null
+++ b/its/plugin/src/test/java/org/sonar/css/its/Tests.java
@@ -0,0 +1,91 @@
+/*
+ * SonarCSS
+ * Copyright (C) 2018-2018 SonarSource SA
+ * mailto:info AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package org.sonar.css.its;
+
+import com.sonar.orchestrator.Orchestrator;
+import com.sonar.orchestrator.OrchestratorBuilder;
+import com.sonar.orchestrator.build.SonarScanner;
+import com.sonar.orchestrator.locator.FileLocation;
+import java.io.File;
+import java.util.Collections;
+import java.util.List;
+import org.junit.ClassRule;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.sonarqube.ws.Measures.ComponentWsResponse;
+import org.sonarqube.ws.Measures.Measure;
+import org.sonarqube.ws.client.HttpConnector;
+import org.sonarqube.ws.client.WsClient;
+import org.sonarqube.ws.client.WsClientFactories;
+import org.sonarqube.ws.client.measures.ComponentRequest;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ MetricsTest.class
+})
+public class Tests {
+
+ private static final FileLocation PLUGIN_LOCATION = FileLocation.byWildcardMavenFilename(
+ new File("../../sonar-css-plugin/target"), "sonar-css-plugin-*.jar");
+
+ @ClassRule
+ public static final Orchestrator ORCHESTRATOR;
+
+ static {
+ String defaultRuntimeVersion = "true".equals(System.getenv("SONARSOURCE_QA")) ? null : "7.2.0.13185"; // TODO LATEST_RELEASE[7.2]
+ String sqVersion = System.getProperty("sonar.runtimeVersion", defaultRuntimeVersion);
+ OrchestratorBuilder orchestratorBuilder = Orchestrator.builderEnv()
+ .addPlugin(PLUGIN_LOCATION)
+ .setSonarVersion(sqVersion);
+ ORCHESTRATOR = orchestratorBuilder.build();
+ }
+
+ public static WsClient newWsClient() {
+ return WsClientFactories.getDefault().newClient(HttpConnector.newBuilder()
+ .url(ORCHESTRATOR.getServer().getUrl())
+ .build());
+ }
+
+ public static Double getProjectMeasureAsDouble(String metricKey, String projectKey) {
+ Measure measure = getMeasure(metricKey, projectKey);
+ return (measure == null) ? null : Double.parseDouble(measure.getValue());
+ }
+
+ private static Measure getMeasure(String metricKey, String projectKey) {
+ ComponentWsResponse response = newWsClient().measures().component(new ComponentRequest()
+ .setComponent(projectKey)
+ .setMetricKeys(Collections.singletonList(metricKey)));
+ List<Measure> measures = response.getComponent().getMeasuresList();
+ return measures.size() == 1 ? measures.get(0) : null;
+ }
+
+ public static SonarScanner createScanner(String projectKey) {
+ File projectDir = FileLocation.of("projects" + File.separator + projectKey).getFile();
+
+ return SonarScanner.create()
+ .setSourceEncoding("UTF-8")
+ .setProjectDir(projectDir)
+ .setProjectKey(projectKey)
+ .setProjectName(projectKey)
+ .setProjectVersion("1.0")
+ .setSourceDirs("src");
+ }
+
+}