From fb56fdc0dc18d277ccfae2cdb948e9da367377ea Mon Sep 17 00:00:00 2001 From: Elena Vilchik Date: Tue, 12 Jun 2018 13:34:33 +0200 Subject: Create CSS language and set up trivial ITs (#39) --- its/plugin/pom.xml | 88 +++++++++++++++++++++ .../projects/css-plugin-test-project/src/file1.css | 7 ++ .../css-plugin-test-project/src/file2.less | 8 ++ .../css-plugin-test-project/src/file3.scss | 9 +++ .../css-plugin-test-project/src/file4.html | 10 +++ .../test/java/org/sonar/css/its/MetricsTest.java | 47 +++++++++++ .../src/test/java/org/sonar/css/its/Tests.java | 91 ++++++++++++++++++++++ its/pom.xml | 20 +++++ 8 files changed, 280 insertions(+) create mode 100644 its/plugin/pom.xml create mode 100644 its/plugin/projects/css-plugin-test-project/src/file1.css create mode 100644 its/plugin/projects/css-plugin-test-project/src/file2.less create mode 100644 its/plugin/projects/css-plugin-test-project/src/file3.scss create mode 100644 its/plugin/projects/css-plugin-test-project/src/file4.html create mode 100644 its/plugin/src/test/java/org/sonar/css/its/MetricsTest.java create mode 100644 its/plugin/src/test/java/org/sonar/css/its/Tests.java create mode 100644 its/pom.xml (limited to 'its') diff --git a/its/plugin/pom.xml b/its/plugin/pom.xml new file mode 100644 index 0000000..24aa42c --- /dev/null +++ b/its/plugin/pom.xml @@ -0,0 +1,88 @@ + + + + its + org.sonarsource.css + 1.0.0-SNAPSHOT + + 4.0.0 + + plugin + + + + + org.sonarsource.orchestrator + sonar-orchestrator + + + org.sonarsource.sonarqube + sonar-ws + ${sonar.version} + test + + + org.assertj + assertj-core + + + + + + + maven-surefire-plugin + + + **/Tests.java + + + + + + + + + qa + + + env.SONARSOURCE_QA + true + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 2.10 + + + copy-plugin + generate-test-resources + + copy + + + + + ${project.groupId} + sonar-css-plugin + ${project.version} + sonar-plugin + true + + + ../../sonar-css-plugin/target + true + true + + + + + + + + + diff --git a/its/plugin/projects/css-plugin-test-project/src/file1.css b/its/plugin/projects/css-plugin-test-project/src/file1.css new file mode 100644 index 0000000..41bf526 --- /dev/null +++ b/its/plugin/projects/css-plugin-test-project/src/file1.css @@ -0,0 +1,7 @@ +.class1 { + background-color: #2d5e8b; +} +.class1 .class2 { + background-color: #fff; + color: #2d5e8b; +} diff --git a/its/plugin/projects/css-plugin-test-project/src/file2.less b/its/plugin/projects/css-plugin-test-project/src/file2.less new file mode 100644 index 0000000..e7396a3 --- /dev/null +++ b/its/plugin/projects/css-plugin-test-project/src/file2.less @@ -0,0 +1,8 @@ +@color-base: #2d5e8b; +.class1 { + background-color: @color-base; + .class2 { + background-color: #fff; + color: @color-base; + } +} diff --git a/its/plugin/projects/css-plugin-test-project/src/file3.scss b/its/plugin/projects/css-plugin-test-project/src/file3.scss new file mode 100644 index 0000000..c53e600 --- /dev/null +++ b/its/plugin/projects/css-plugin-test-project/src/file3.scss @@ -0,0 +1,9 @@ +$firstValue: 62.5%; + +$firstValue: 24px !default; + +body { + font-size: $firstValue; +} + +// body font size = 62.5% diff --git a/its/plugin/projects/css-plugin-test-project/src/file4.html b/its/plugin/projects/css-plugin-test-project/src/file4.html new file mode 100644 index 0000000..499a20b --- /dev/null +++ b/its/plugin/projects/css-plugin-test-project/src/file4.html @@ -0,0 +1,10 @@ + +Example + +

Hello World!

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 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"); + } + +} diff --git a/its/pom.xml b/its/pom.xml new file mode 100644 index 0000000..f99378c --- /dev/null +++ b/its/pom.xml @@ -0,0 +1,20 @@ + + + + css + org.sonarsource.css + 1.0.0-SNAPSHOT + + + 4.0.0 + + its + pom + + + plugin + + + -- cgit v1.2.3