From 808130822501beb240ec6d19db8b20dc86fc13b8 Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Fri, 10 Nov 2017 14:06:24 +0100 Subject: [PATCH] Add category "source" to integration tests --- cix.sh | 1 + .../org/sonarqube/tests/Category1Suite.java | 7 --- .../org/sonarqube/tests/Category2Suite.java | 3 - .../org/sonarqube/tests/Category4Suite.java | 4 +- .../{sourceCode => source}/EncodingTest.java | 7 +-- .../ProjectCodeTest.java | 7 +-- .../tests/{scm => source}/ScmTest.java | 19 ++++--- .../sonarqube/tests/source/SourceSuite.java | 45 +++++++++++++++ .../SourceViewerTest.java} | 23 ++++++-- .../sonarqube/tests/ui/SourceViewerTest.java | 57 ------------------- 10 files changed, 81 insertions(+), 92 deletions(-) rename tests/src/test/java/org/sonarqube/tests/{sourceCode => source}/EncodingTest.java (85%) rename tests/src/test/java/org/sonarqube/tests/{sourceCode => source}/ProjectCodeTest.java (92%) rename tests/src/test/java/org/sonarqube/tests/{scm => source}/ScmTest.java (93%) create mode 100644 tests/src/test/java/org/sonarqube/tests/source/SourceSuite.java rename tests/src/test/java/org/sonarqube/tests/{sourceCode/HighlightingTest.java => source/SourceViewerTest.java} (72%) delete mode 100644 tests/src/test/java/org/sonarqube/tests/ui/SourceViewerTest.java diff --git a/cix.sh b/cix.sh index 90b86f23891..0f90a527edc 100755 --- a/cix.sh +++ b/cix.sh @@ -33,6 +33,7 @@ case "$RUN_ACTIVITY" in case "$CATEGORY_GROUP" in Category1) CATEGORY=Category1 && runCategory + CATEGORY=source && runCategory ;; Category2) diff --git a/tests/src/test/java/org/sonarqube/tests/Category1Suite.java b/tests/src/test/java/org/sonarqube/tests/Category1Suite.java index 8b0c9724871..54ff60c0826 100644 --- a/tests/src/test/java/org/sonarqube/tests/Category1Suite.java +++ b/tests/src/test/java/org/sonarqube/tests/Category1Suite.java @@ -50,9 +50,6 @@ import org.sonarqube.tests.settings.DeprecatedPropertiesWsTest; import org.sonarqube.tests.settings.EmailsTest; import org.sonarqube.tests.settings.PropertySetsTest; import org.sonarqube.tests.settings.SettingsTest; -import org.sonarqube.tests.sourceCode.EncodingTest; -import org.sonarqube.tests.sourceCode.HighlightingTest; -import org.sonarqube.tests.sourceCode.ProjectCodeTest; import org.sonarqube.tests.user.UsersPageTest; import static util.ItUtils.pluginArtifact; @@ -95,10 +92,6 @@ import static util.ItUtils.xooPlugin; SincePreviousVersionHistoryTest.class, SinceXDaysHistoryTest.class, TimeMachineTest.class, - // source code - EncodingTest.class, - HighlightingTest.class, - ProjectCodeTest.class, // complexity ComplexityMeasuresTest.class }) diff --git a/tests/src/test/java/org/sonarqube/tests/Category2Suite.java b/tests/src/test/java/org/sonarqube/tests/Category2Suite.java index b5b27ac1d4b..10e6fbca5dc 100644 --- a/tests/src/test/java/org/sonarqube/tests/Category2Suite.java +++ b/tests/src/test/java/org/sonarqube/tests/Category2Suite.java @@ -51,7 +51,6 @@ import org.sonarqube.tests.qualityModel.TechnicalDebtAndIssueNewMeasuresTest; import org.sonarqube.tests.qualityModel.TechnicalDebtInIssueChangelogTest; import org.sonarqube.tests.qualityModel.TechnicalDebtTest; import org.sonarqube.tests.rule.RulesPageTest; -import org.sonarqube.tests.scm.ScmTest; import org.sonarqube.tests.test.CoverageTest; import org.sonarqube.tests.test.CoverageTrackingTest; import org.sonarqube.tests.test.NewCoverageTest; @@ -67,8 +66,6 @@ import static util.ItUtils.xooPlugin; CoverageTest.class, NewCoverageTest.class, TestExecutionTest.class, - // scm - ScmTest.class, // issue AutoAssignTest.class, CommonRulesTest.class, diff --git a/tests/src/test/java/org/sonarqube/tests/Category4Suite.java b/tests/src/test/java/org/sonarqube/tests/Category4Suite.java index 6bec598e4c9..f1ff5a039d8 100644 --- a/tests/src/test/java/org/sonarqube/tests/Category4Suite.java +++ b/tests/src/test/java/org/sonarqube/tests/Category4Suite.java @@ -29,7 +29,6 @@ import org.sonarqube.tests.ce.CeTempDirTest; import org.sonarqube.tests.ce.CeWsTest; import org.sonarqube.tests.component.ComponentsWsTest; import org.sonarqube.tests.component.ProjectsWsTest; -import org.sonarqube.tests.user.RootUserInStandaloneModeTest; import org.sonarqube.tests.projectEvent.ProjectActivityPageTest; import org.sonarqube.tests.qualityProfile.QualityProfilesUiTest; import org.sonarqube.tests.serverSystem.HttpHeadersTest; @@ -37,7 +36,6 @@ import org.sonarqube.tests.serverSystem.LogsTest; import org.sonarqube.tests.serverSystem.PingTest; import org.sonarqube.tests.serverSystem.ServerSystemTest; import org.sonarqube.tests.serverSystem.SystemInfoTest; -import org.sonarqube.tests.ui.SourceViewerTest; import org.sonarqube.tests.ui.UiExtensionsTest; import org.sonarqube.tests.ui.UiTest; import org.sonarqube.tests.user.BaseIdentityProviderTest; @@ -46,6 +44,7 @@ import org.sonarqube.tests.user.ForceAuthenticationTest; import org.sonarqube.tests.user.LocalAuthenticationTest; import org.sonarqube.tests.user.MyAccountPageTest; import org.sonarqube.tests.user.OAuth2IdentityProviderTest; +import org.sonarqube.tests.user.RootUserInStandaloneModeTest; import org.sonarqube.tests.ws.WsLocalCallTest; import org.sonarqube.tests.ws.WsTest; @@ -80,7 +79,6 @@ import static util.ItUtils.xooPlugin; HttpHeadersTest.class, // ui UiTest.class, - SourceViewerTest.class, // ui extensions UiExtensionsTest.class, WsLocalCallTest.class, diff --git a/tests/src/test/java/org/sonarqube/tests/sourceCode/EncodingTest.java b/tests/src/test/java/org/sonarqube/tests/source/EncodingTest.java similarity index 85% rename from tests/src/test/java/org/sonarqube/tests/sourceCode/EncodingTest.java rename to tests/src/test/java/org/sonarqube/tests/source/EncodingTest.java index 397b83d5fbd..ea9ef78292e 100644 --- a/tests/src/test/java/org/sonarqube/tests/sourceCode/EncodingTest.java +++ b/tests/src/test/java/org/sonarqube/tests/source/EncodingTest.java @@ -17,10 +17,9 @@ * 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.sonarqube.tests.sourceCode; +package org.sonarqube.tests.source; import com.sonar.orchestrator.Orchestrator; -import org.sonarqube.tests.Category1Suite; import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; @@ -32,10 +31,10 @@ import static util.ItUtils.runProjectAnalysis; public class EncodingTest { @ClassRule - public static Orchestrator orchestrator = Category1Suite.ORCHESTRATOR; + public static Orchestrator orchestrator = SourceSuite.ORCHESTRATOR; @Rule - public Tester tester = new Tester(orchestrator).disableOrganizations(); + public Tester tester = new Tester(orchestrator); @Test public void support_japanese_charset() { diff --git a/tests/src/test/java/org/sonarqube/tests/sourceCode/ProjectCodeTest.java b/tests/src/test/java/org/sonarqube/tests/source/ProjectCodeTest.java similarity index 92% rename from tests/src/test/java/org/sonarqube/tests/sourceCode/ProjectCodeTest.java rename to tests/src/test/java/org/sonarqube/tests/source/ProjectCodeTest.java index 0ee1c7ee0af..974ea41abf3 100644 --- a/tests/src/test/java/org/sonarqube/tests/sourceCode/ProjectCodeTest.java +++ b/tests/src/test/java/org/sonarqube/tests/source/ProjectCodeTest.java @@ -17,14 +17,13 @@ * 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.sonarqube.tests.sourceCode; +package org.sonarqube.tests.source; import com.sonar.orchestrator.Orchestrator; import com.sonar.orchestrator.build.SonarScanner; import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; -import org.sonarqube.tests.Category1Suite; import org.sonarqube.qa.util.Tester; import org.sonarqube.ws.WsProjects.CreateWsResponse.Project; @@ -33,10 +32,10 @@ import static util.ItUtils.projectDir; public class ProjectCodeTest { @ClassRule - public static Orchestrator orchestrator = Category1Suite.ORCHESTRATOR; + public static Orchestrator orchestrator = SourceSuite.ORCHESTRATOR; @Rule - public Tester tester = new Tester(orchestrator).disableOrganizations(); + public Tester tester = new Tester(orchestrator); @Test public void browse() { diff --git a/tests/src/test/java/org/sonarqube/tests/scm/ScmTest.java b/tests/src/test/java/org/sonarqube/tests/source/ScmTest.java similarity index 93% rename from tests/src/test/java/org/sonarqube/tests/scm/ScmTest.java rename to tests/src/test/java/org/sonarqube/tests/source/ScmTest.java index 16cc5fbe942..91b0030d59d 100644 --- a/tests/src/test/java/org/sonarqube/tests/scm/ScmTest.java +++ b/tests/src/test/java/org/sonarqube/tests/source/ScmTest.java @@ -17,12 +17,11 @@ * 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.sonarqube.tests.scm; +package org.sonarqube.tests.source; import com.sonar.orchestrator.Orchestrator; import com.sonar.orchestrator.build.BuildResult; import com.sonar.orchestrator.build.SonarScanner; -import org.sonarqube.tests.Category2Suite; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; @@ -33,12 +32,13 @@ import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; import org.assertj.core.data.MapEntry; -import org.junit.Before; import org.junit.ClassRule; +import org.junit.Rule; import org.junit.Test; import org.sonar.wsclient.jsonsimple.JSONArray; import org.sonar.wsclient.jsonsimple.JSONObject; import org.sonar.wsclient.jsonsimple.JSONValue; +import org.sonarqube.qa.util.Tester; import static org.assertj.core.api.Assertions.assertThat; import static util.ItUtils.projectDir; @@ -46,17 +46,18 @@ import static util.ItUtils.projectDir; public class ScmTest { @ClassRule - public static Orchestrator orchestrator = Category2Suite.ORCHESTRATOR; + public static Orchestrator orchestrator = SourceSuite.ORCHESTRATOR; private static final SimpleDateFormat DATETIME_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); - @Before - public void delete_data() { - orchestrator.resetData(); - } + @Rule + public Tester tester = new Tester(orchestrator); + /** + * SONAR-6897 + */ @Test - public void scm_optimization() throws Exception { + public void load_scm_from_previous_analysis_if_scm_missing_in_analysis() throws Exception { SonarScanner build = SonarScanner.create(projectDir("scm/xoo-sample-with-scm")) .setProperty("sonar.scm.provider", "xoo") .setProperty("sonar.scm.disabled", "false"); diff --git a/tests/src/test/java/org/sonarqube/tests/source/SourceSuite.java b/tests/src/test/java/org/sonarqube/tests/source/SourceSuite.java new file mode 100644 index 00000000000..90fb2a72988 --- /dev/null +++ b/tests/src/test/java/org/sonarqube/tests/source/SourceSuite.java @@ -0,0 +1,45 @@ +/* + * SonarQube + * Copyright (C) 2009-2017 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.sonarqube.tests.source; + +import com.sonar.orchestrator.Orchestrator; +import org.junit.ClassRule; +import org.junit.runner.RunWith; +import org.junit.runners.Suite; + +import static util.ItUtils.xooPlugin; + +@RunWith(Suite.class) +@Suite.SuiteClasses({ + EncodingTest.class, + ProjectCodeTest.class, + ScmTest.class, + SourceViewerTest.class +}) +public class SourceSuite { + + @ClassRule + public static final Orchestrator ORCHESTRATOR = Orchestrator.builderEnv() + .addPlugin(xooPlugin()) + // reduce memory for Elasticsearch + .setServerProperty("sonar.search.javaOpts", "-Xms128m -Xmx128m") + .build(); + +} diff --git a/tests/src/test/java/org/sonarqube/tests/sourceCode/HighlightingTest.java b/tests/src/test/java/org/sonarqube/tests/source/SourceViewerTest.java similarity index 72% rename from tests/src/test/java/org/sonarqube/tests/sourceCode/HighlightingTest.java rename to tests/src/test/java/org/sonarqube/tests/source/SourceViewerTest.java index 1f20c8c0700..ed24305774c 100644 --- a/tests/src/test/java/org/sonarqube/tests/sourceCode/HighlightingTest.java +++ b/tests/src/test/java/org/sonarqube/tests/source/SourceViewerTest.java @@ -17,25 +17,38 @@ * 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.sonarqube.tests.sourceCode; +package org.sonarqube.tests.source; import com.sonar.orchestrator.Orchestrator; +import com.sonar.orchestrator.build.SonarScanner; import org.junit.ClassRule; import org.junit.Rule; import org.junit.Test; import org.sonarqube.qa.util.Tester; -import org.sonarqube.tests.Category1Suite; +import org.sonarqube.qa.util.pageobjects.Navigation; import util.selenium.Selenese; +import static com.codeborne.selenide.Condition.exist; +import static com.codeborne.selenide.Selenide.$; +import static util.ItUtils.projectDir; import static util.ItUtils.runProjectAnalysis; -public class HighlightingTest { +public class SourceViewerTest { @ClassRule - public static Orchestrator orchestrator = Category1Suite.ORCHESTRATOR; + public static Orchestrator orchestrator = SourceSuite.ORCHESTRATOR; @Rule - public Tester tester = new Tester(orchestrator).disableOrganizations(); + public Tester tester = new Tester(orchestrator); + + @Test + public void line_permalink() { + orchestrator.executeBuild(SonarScanner.create(projectDir("shared/xoo-sample"))); + Navigation navigation = tester.openBrowser(); + navigation.open("/component?id=sample%3Asrc%2Fmain%2Fxoo%2Fsample%2FSample.xoo&line=6"); + $(".source-line").should(exist); + $(".source-line-highlighted[data-line-number=\"6\"]").should(exist); + } @Test public void highlight_source_code_and_symbols_usage() { diff --git a/tests/src/test/java/org/sonarqube/tests/ui/SourceViewerTest.java b/tests/src/test/java/org/sonarqube/tests/ui/SourceViewerTest.java deleted file mode 100644 index f37daa3229f..00000000000 --- a/tests/src/test/java/org/sonarqube/tests/ui/SourceViewerTest.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2017 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.sonarqube.tests.ui; - -import com.sonar.orchestrator.Orchestrator; -import com.sonar.orchestrator.build.SonarScanner; -import org.sonarqube.tests.Category4Suite; -import org.junit.BeforeClass; -import org.junit.ClassRule; -import org.junit.Test; -import org.sonarqube.qa.util.pageobjects.Navigation; - -import static com.codeborne.selenide.Condition.exist; -import static com.codeborne.selenide.Selenide.$; -import static util.ItUtils.projectDir; - -public class SourceViewerTest { - - @ClassRule - public static final Orchestrator ORCHESTRATOR = Category4Suite.ORCHESTRATOR; - - private Navigation nav = Navigation.create(ORCHESTRATOR); - - @BeforeClass - public static void beforeClass() { - ORCHESTRATOR.resetData(); - analyzeSampleProject(); - } - - @Test - public void line_permalink() { - nav.open("/component?id=sample%3Asrc%2Fmain%2Fxoo%2Fsample%2FSample.xoo&line=6"); - $(".source-line").should(exist); - $(".source-line-highlighted[data-line-number=\"6\"]").should(exist); - } - - private static void analyzeSampleProject() { - ORCHESTRATOR.executeBuild(SonarScanner.create(projectDir("shared/xoo-sample"))); - } -} -- 2.39.5