Bladeren bron

SONAR-11950 do not accept empty string for revision in CE

tags/7.8
Simon Brandhof 5 jaren geleden
bovenliggende
commit
2ea053692e
11 gewijzigde bestanden met toevoegingen van 53 en 37 verwijderingen
  1. 2
    2
      server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/analysis/AnalysisMetadataHolder.java
  2. 8
    7
      server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/analysis/AnalysisMetadataHolderImpl.java
  3. 1
    1
      server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/analysis/MutableAnalysisMetadataHolder.java
  4. 1
    1
      server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/api/posttask/PostProjectAnalysisTasksExecutor.java
  5. 1
    1
      server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/LoadReportAnalysisMetadataHolderStep.java
  6. 23
    10
      server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/analysis/AnalysisMetadataHolderImplTest.java
  7. 8
    7
      server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/analysis/AnalysisMetadataHolderRule.java
  8. 4
    4
      server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/analysis/MutableAnalysisMetadataHolderRule.java
  9. 3
    3
      server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/PersistAnalysisPropertiesStepTest.java
  10. 1
    1
      server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/ReportPersistAnalysisStepTest.java
  11. 1
    0
      sonar-plugin-api/src/main/java/org/sonar/api/ce/posttask/PostProjectAnalysisTask.java

+ 2
- 2
server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/analysis/AnalysisMetadataHolder.java Bestand weergeven

@@ -148,7 +148,7 @@ public interface AnalysisMetadataHolder {
Map<String, ScannerPlugin> getScannerPluginsByKey();

/**
* Scm Revision id of the analysed code
* Scm Revision of the analysed code
*/
Optional<String> getScmRevisionId();
Optional<String> getScmRevision();
}

+ 8
- 7
server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/analysis/AnalysisMetadataHolderImpl.java Bestand weergeven

@@ -31,6 +31,7 @@ import org.sonar.server.qualityprofile.QualityProfile;

import static com.google.common.base.Preconditions.checkState;
import static java.util.Objects.requireNonNull;
import static org.apache.commons.lang.StringUtils.defaultIfBlank;

public class AnalysisMetadataHolderImpl implements MutableAnalysisMetadataHolder {
private static final String BRANCH_NOT_SET = "Branch has not been set";
@@ -46,7 +47,7 @@ public class AnalysisMetadataHolderImpl implements MutableAnalysisMetadataHolder
private final InitializedProperty<Integer> rootComponentRef = new InitializedProperty<>();
private final InitializedProperty<Map<String, QualityProfile>> qProfilesPerLanguage = new InitializedProperty<>();
private final InitializedProperty<Map<String, ScannerPlugin>> pluginsByKey = new InitializedProperty<>();
private final InitializedProperty<String> scmRevisionId = new InitializedProperty<>();
private final InitializedProperty<String> scmRevision = new InitializedProperty<>();

@Override
public MutableAnalysisMetadataHolder setOrganizationsEnabled(boolean isOrganizationsEnabled) {
@@ -219,18 +220,18 @@ public class AnalysisMetadataHolderImpl implements MutableAnalysisMetadataHolder
}

@Override
public MutableAnalysisMetadataHolder setScmRevisionId(String scmRevisionId) {
checkState(!this.scmRevisionId.isInitialized(), "ScmRevisionId has already been set");
this.scmRevisionId.setProperty(scmRevisionId);
public MutableAnalysisMetadataHolder setScmRevision(@Nullable String s) {
checkState(!this.scmRevision.isInitialized(), "ScmRevision has already been set");
this.scmRevision.setProperty(defaultIfBlank(s, null));
return this;
}

@Override
public Optional<String> getScmRevisionId() {
if (!scmRevisionId.isInitialized()) {
public Optional<String> getScmRevision() {
if (!scmRevision.isInitialized()) {
return Optional.empty();
}
return Optional.of(scmRevisionId.getProperty());
return Optional.ofNullable(scmRevision.getProperty());
}

@Override

+ 1
- 1
server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/analysis/MutableAnalysisMetadataHolder.java Bestand weergeven

@@ -89,5 +89,5 @@ public interface MutableAnalysisMetadataHolder extends AnalysisMetadataHolder {
/**
* @throws IllegalStateException if scm revision id has already been set
*/
MutableAnalysisMetadataHolder setScmRevisionId(String scmRevisionId);
MutableAnalysisMetadataHolder setScmRevision(String scmRevisionId);
}

+ 1
- 1
server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/api/posttask/PostProjectAnalysisTasksExecutor.java Bestand weergeven

@@ -142,7 +142,7 @@ public class PostProjectAnalysisTasksExecutor implements ComputationStepExecutor
Long analysisDate = getAnalysisDate();

if (analysisDate != null) {
return of(new AnalysisImpl(analysisMetadataHolder.getUuid(), analysisDate, analysisMetadataHolder.getScmRevisionId()));
return of(new AnalysisImpl(analysisMetadataHolder.getUuid(), analysisDate, analysisMetadataHolder.getScmRevision()));
}
return empty();
}

+ 1
- 1
server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/step/LoadReportAnalysisMetadataHolderStep.java Bestand weergeven

@@ -97,7 +97,7 @@ public class LoadReportAnalysisMetadataHolderStep implements ComputationStep {
analysisMetadata.setAnalysisDate(reportMetadata.getAnalysisDate());
analysisMetadata.setRootComponentRef(reportMetadata.getRootComponentRef());
analysisMetadata.setCrossProjectDuplicationEnabled(reportMetadata.getCrossProjectDuplicationActivated());
analysisMetadata.setScmRevisionId(reportMetadata.getScmRevisionId());
analysisMetadata.setScmRevision(reportMetadata.getScmRevisionId());
}

/**

+ 23
- 10
server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/analysis/AnalysisMetadataHolderImplTest.java Bestand weergeven

@@ -19,7 +19,6 @@
*/
package org.sonar.ce.task.projectanalysis.analysis;

import java.util.Optional;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
@@ -383,26 +382,40 @@ public class AnalysisMetadataHolderImplTest {
}

@Test
public void setScmRevisionId_throws_ISE_when_called_twice() {
public void setScmRevision_throws_ISE_when_called_twice() {
AnalysisMetadataHolderImpl underTest = new AnalysisMetadataHolderImpl();
underTest.setScmRevisionId("scm_revision_id1");
underTest.setScmRevision("bd56dab");

expectedException.expect(IllegalStateException.class);
expectedException.expectMessage("ScmRevisionId has already been set");
underTest.setScmRevisionId("scm_revision_id1");
expectedException.expectMessage("ScmRevision has already been set");
underTest.setScmRevision("bd56dab");
}

@Test
public void getScmRevisionId_returns_empty_if_scmRevisionId_is_not_initialized() {
public void getScmRevision_returns_empty_if_scmRevision_is_not_initialized() {
AnalysisMetadataHolderImpl underTest = new AnalysisMetadataHolderImpl();

assertThat(underTest.getScmRevisionId()).isNotPresent();
assertThat(underTest.getScmRevision()).isNotPresent();
}

@Test
public void getScmRevisionId_returns_scmRevisionId_if_scmRevisionId_is_initialized() {
public void getScmRevision_returns_scmRevision_if_scmRevision_is_initialized() {
AnalysisMetadataHolderImpl underTest = new AnalysisMetadataHolderImpl();
underTest.setScmRevisionId("scm_revision_id");
assertThat(underTest.getScmRevisionId()).isEqualTo(Optional.of("scm_revision_id"));
underTest.setScmRevision("bd56dab");
assertThat(underTest.getScmRevision()).hasValue("bd56dab");
}

@Test
public void getScmRevision_does_not_return_empty_string() {
AnalysisMetadataHolderImpl underTest = new AnalysisMetadataHolderImpl();
underTest.setScmRevision("");
assertThat(underTest.getScmRevision()).isEmpty();
}

@Test
public void getScmRevision_does_not_return_blank_string() {
AnalysisMetadataHolderImpl underTest = new AnalysisMetadataHolderImpl();
underTest.setScmRevision(" ");
assertThat(underTest.getScmRevision()).isEmpty();
}
}

+ 8
- 7
server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/analysis/AnalysisMetadataHolderRule.java Bestand weergeven

@@ -34,6 +34,7 @@ import org.sonar.server.qualityprofile.QualityProfile;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Preconditions.checkState;
import static java.util.Objects.requireNonNull;
import static org.apache.commons.lang.StringUtils.defaultIfBlank;

public class AnalysisMetadataHolderRule extends ExternalResource implements MutableAnalysisMetadataHolder {

@@ -61,7 +62,7 @@ public class AnalysisMetadataHolderRule extends ExternalResource implements Muta

private final InitializedProperty<Map<String, ScannerPlugin>> pluginsByKey = new InitializedProperty<>();

private final InitializedProperty<String> scmRevisionId = new InitializedProperty<>();
private final InitializedProperty<String> scmRevision = new InitializedProperty<>();

@Override
public AnalysisMetadataHolderRule setOrganizationsEnabled(boolean isOrganizationsEnabled) {
@@ -235,18 +236,18 @@ public class AnalysisMetadataHolderRule extends ExternalResource implements Muta
}

@Override
public MutableAnalysisMetadataHolder setScmRevisionId(String scmRevisionId) {
checkState(!this.scmRevisionId.isInitialized(), "ScmRevisionId has already been set");
this.scmRevisionId.setProperty(scmRevisionId);
public MutableAnalysisMetadataHolder setScmRevision(@Nullable String s) {
checkState(!this.scmRevision.isInitialized(), "ScmRevisionId has already been set");
this.scmRevision.setProperty(defaultIfBlank(s, null));
return this;
}

@Override
public Optional<String> getScmRevisionId() {
if (!scmRevisionId.isInitialized()) {
public Optional<String> getScmRevision() {
if (!scmRevision.isInitialized()) {
return Optional.empty();
}
return Optional.of(scmRevisionId.getProperty());
return Optional.ofNullable(scmRevision.getProperty());
}

@Override

+ 4
- 4
server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/analysis/MutableAnalysisMetadataHolderRule.java Bestand weergeven

@@ -180,14 +180,14 @@ public class MutableAnalysisMetadataHolderRule extends ExternalResource implemen


@Override
public MutableAnalysisMetadataHolder setScmRevisionId(String scmRevisionId) {
delegate.setScmRevisionId(scmRevisionId);
public MutableAnalysisMetadataHolder setScmRevision(String scmRevisionId) {
delegate.setScmRevision(scmRevisionId);
return this;
}

@Override
public Optional<String> getScmRevisionId() {
return delegate.getScmRevisionId();
public Optional<String> getScmRevision() {
return delegate.getScmRevision();
}

@Override

+ 3
- 3
server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/PersistAnalysisPropertiesStepTest.java Bestand weergeven

@@ -75,7 +75,7 @@ public class PersistAnalysisPropertiesStepTest {
public void persist_should_stores_sonarDotAnalysisDot_and_sonarDotPullRequestDot_properties() {
when(batchReportReader.readContextProperties()).thenReturn(CloseableIterator.from(PROPERTIES.iterator()));
when(analysisMetadataHolder.getUuid()).thenReturn(SNAPSHOT_UUID);
when(analysisMetadataHolder.getScmRevisionId()).thenReturn(Optional.of(SCM_REV_ID));
when(analysisMetadataHolder.getScmRevision()).thenReturn(Optional.of(SCM_REV_ID));

underTest.execute(new TestComputationStepContext());

@@ -98,7 +98,7 @@ public class PersistAnalysisPropertiesStepTest {

@Test
public void persist_filtering_of_properties_is_case_sensitive() {
when(analysisMetadataHolder.getScmRevisionId()).thenReturn(Optional.of(SCM_REV_ID));
when(analysisMetadataHolder.getScmRevision()).thenReturn(Optional.of(SCM_REV_ID));
when(batchReportReader.readContextProperties()).thenReturn(CloseableIterator.from(ImmutableList.of(
newContextProperty("sonar.ANALYSIS.foo", "foo"),
newContextProperty("sonar.anaLysis.bar", "bar"),
@@ -115,7 +115,7 @@ public class PersistAnalysisPropertiesStepTest {

@Test
public void persist_should_store_nothing_if_there_are_no_context_properties() {
when(analysisMetadataHolder.getScmRevisionId()).thenReturn(Optional.of(SCM_REV_ID));
when(analysisMetadataHolder.getScmRevision()).thenReturn(Optional.of(SCM_REV_ID));
when(batchReportReader.readContextProperties()).thenReturn(CloseableIterator.emptyCloseableIterator());
when(analysisMetadataHolder.getUuid()).thenReturn(SNAPSHOT_UUID);


+ 1
- 1
server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/step/ReportPersistAnalysisStepTest.java Bestand weergeven

@@ -78,7 +78,7 @@ public class ReportPersistAnalysisStepTest extends BaseStepTest {
analysisDate = DateUtils.parseDateQuietly("2015-06-01").getTime();
analysisMetadataHolder.setUuid(ANALYSIS_UUID);
analysisMetadataHolder.setAnalysisDate(analysisDate);
analysisMetadataHolder.setScmRevisionId(REVISION_ID);
analysisMetadataHolder.setScmRevision(REVISION_ID);
dbIdsRepository = new DbIdsRepositoryImpl();

now = DateUtils.parseDateQuietly("2015-06-02").getTime();

+ 1
- 0
sonar-plugin-api/src/main/java/org/sonar/api/ce/posttask/PostProjectAnalysisTask.java Bestand weergeven

@@ -127,6 +127,7 @@ public interface PostProjectAnalysisTask {
* @deprecated in 7.8, replaced by {@code Analysis#getRevision()}
* @see #getAnalysis()
*/
@Deprecated
String getScmRevisionId();
}
}

Laden…
Annuleren
Opslaan