diff options
| author | Elena Vilchik | 2018-06-12 13:34:33 +0200 | 
|---|---|---|
| committer | GitHub | 2018-06-12 13:34:33 +0200 | 
| commit | fb56fdc0dc18d277ccfae2cdb948e9da367377ea (patch) | |
| tree | abf9f112d0249d97bac25123f30bdb6188164401 /its | |
| parent | 6cebcca87c5d276627fe22b9c53ddeb4844894b6 (diff) | |
| download | sonar-css-fb56fdc0dc18d277ccfae2cdb948e9da367377ea.tar.bz2 | |
Create CSS language and set up trivial ITs (#39)
Diffstat (limited to 'its')
| -rw-r--r-- | its/plugin/pom.xml | 88 | ||||
| -rw-r--r-- | its/plugin/projects/css-plugin-test-project/src/file1.css | 7 | ||||
| -rw-r--r-- | its/plugin/projects/css-plugin-test-project/src/file2.less | 8 | ||||
| -rw-r--r-- | its/plugin/projects/css-plugin-test-project/src/file3.scss | 9 | ||||
| -rw-r--r-- | its/plugin/projects/css-plugin-test-project/src/file4.html | 10 | ||||
| -rw-r--r-- | its/plugin/src/test/java/org/sonar/css/its/MetricsTest.java | 47 | ||||
| -rw-r--r-- | its/plugin/src/test/java/org/sonar/css/its/Tests.java | 91 | ||||
| -rw-r--r-- | its/pom.xml | 20 | 
8 files changed, 280 insertions, 0 deletions
| 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" +         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +  <parent> +    <artifactId>its</artifactId> +    <groupId>org.sonarsource.css</groupId> +    <version>1.0.0-SNAPSHOT</version> +  </parent> +  <modelVersion>4.0.0</modelVersion> + +  <artifactId>plugin</artifactId> + + +  <dependencies> +    <dependency> +      <groupId>org.sonarsource.orchestrator</groupId> +      <artifactId>sonar-orchestrator</artifactId> +    </dependency> +    <dependency> +      <groupId>org.sonarsource.sonarqube</groupId> +      <artifactId>sonar-ws</artifactId> +      <version>${sonar.version}</version> +      <scope>test</scope> +    </dependency> +    <dependency> +      <groupId>org.assertj</groupId> +      <artifactId>assertj-core</artifactId> +    </dependency> +  </dependencies> + +  <build> +    <plugins> +      <plugin> +        <artifactId>maven-surefire-plugin</artifactId> +        <configuration> +          <includes> +            <include>**/Tests.java</include> +          </includes> +        </configuration> +      </plugin> +    </plugins> +  </build> + +  <profiles> +    <profile> +      <id>qa</id> +      <activation> +        <property> +          <name>env.SONARSOURCE_QA</name> +          <value>true</value> +        </property> +      </activation> +      <build> +        <plugins> +          <plugin> +            <groupId>org.apache.maven.plugins</groupId> +            <artifactId>maven-dependency-plugin</artifactId> +            <version>2.10</version> +            <executions> +              <execution> +                <id>copy-plugin</id> +                <phase>generate-test-resources</phase> +                <goals> +                  <goal>copy</goal> +                </goals> +                <configuration> +                  <artifactItems> +                    <artifactItem> +                      <groupId>${project.groupId}</groupId> +                      <artifactId>sonar-css-plugin</artifactId> +                      <version>${project.version}</version> +                      <type>sonar-plugin</type> +                      <overWrite>true</overWrite> +                    </artifactItem> +                  </artifactItems> +                  <outputDirectory>../../sonar-css-plugin/target</outputDirectory> +                  <overWriteReleases>true</overWriteReleases> +                  <overWriteSnapshots>true</overWriteSnapshots> +                </configuration> +              </execution> +            </executions> +          </plugin> +        </plugins> +      </build> +    </profile> +  </profiles> +</project> 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 @@ +<!doctype html> +<title>Example</title> +<style> +p { +  font-size: 5vw; +  padding: 0 5vw; +  line-height: 1.8em; +  } +</style> +<p>Hello World!</p> 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"); +  } + +} 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" +         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +  <parent> +    <artifactId>css</artifactId> +    <groupId>org.sonarsource.css</groupId> +    <version>1.0.0-SNAPSHOT</version> +  </parent> + +  <modelVersion>4.0.0</modelVersion> + +  <artifactId>its</artifactId> +  <packaging>pom</packaging> + +  <modules> +    <module>plugin</module> +  </modules> + +</project> | 
