diff options
author | Duarte Meneses <duarte.meneses@sonarsource.com> | 2017-01-17 17:45:09 +0100 |
---|---|---|
committer | Duarte Meneses <duarte.meneses@sonarsource.com> | 2017-01-27 16:26:30 +0100 |
commit | eea589c564a924993e8edba9d8fa9691e756bce4 (patch) | |
tree | c112f6d41d7f4dfeb7ad8d14f895e1b879a68411 /sonar-scanner-engine/src/test/java/org/sonar | |
parent | 211a993bd85b5d12ace1686b133677381da8c597 (diff) | |
download | sonarqube-eea589c564a924993e8edba9d8fa9691e756bce4.tar.gz sonarqube-eea589c564a924993e8edba9d8fa9691e756bce4.zip |
Refactor resources API
Diffstat (limited to 'sonar-scanner-engine/src/test/java/org/sonar')
30 files changed, 316 insertions, 701 deletions
diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/ProjectConfiguratorTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/ProjectConfiguratorTest.java deleted file mode 100644 index 95b1673bf82..00000000000 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/ProjectConfiguratorTest.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2016 SonarSource SA - * mailto:contact 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.scanner; - -import java.text.SimpleDateFormat; -import java.util.TimeZone; -import org.junit.Before; -import org.junit.Test; -import org.sonar.api.CoreProperties; -import org.sonar.api.config.Settings; -import org.sonar.api.config.MapSettings; -import org.sonar.api.resources.Project; -import org.sonar.api.utils.System2; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -public class ProjectConfiguratorTest { - - System2 system2; - - @Before - public void setUp() { - system2 = mock(System2.class); - } - - @Test - public void analysis_is_today_by_default() { - Long now = System.currentTimeMillis(); - when(system2.now()).thenReturn(now); - - Project project = new Project("key"); - new ProjectConfigurator(new MapSettings(), system2).configure(project); - assertThat(now - project.getAnalysisDate().getTime()).isLessThan(1000); - } - - @Test - public void analysis_date_could_be_explicitly_set() { - Settings settings = new MapSettings(); - settings.setProperty(CoreProperties.PROJECT_DATE_PROPERTY, "2005-01-30"); - Project project = new Project("key"); - new ProjectConfigurator(settings, system2).configure(project); - - assertThat(new SimpleDateFormat("ddMMyyyy").format(project.getAnalysisDate())).isEqualTo("30012005"); - } - - @Test - public void analysis_timestamp_could_be_explicitly_set() { - Settings settings = new MapSettings(); - settings.setProperty(CoreProperties.PROJECT_DATE_PROPERTY, "2005-01-30T08:45:10+0000"); - Project project = new Project("key"); - new ProjectConfigurator(settings, system2).configure(project); - - SimpleDateFormat dateFormat = new SimpleDateFormat("ddMMyyyy-mmss"); - dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); - assertThat(dateFormat.format(project.getAnalysisDate())).isEqualTo("30012005-4510"); - } - - @Test(expected = RuntimeException.class) - public void fail_if_analyis_date_is_not_valid() { - Settings configuration = new MapSettings(); - configuration.setProperty(CoreProperties.PROJECT_DATE_PROPERTY, "2005/30/01"); - Project project = new Project("key"); - new ProjectConfigurator(configuration, system2).configure(project); - } - -} diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/ScannerExtensionDictionnaryTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/ScannerExtensionDictionnaryTest.java index 28b9321deaa..ff5e3fc0c3e 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/ScannerExtensionDictionnaryTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/ScannerExtensionDictionnaryTest.java @@ -34,6 +34,7 @@ import org.sonar.api.batch.Phase; import org.sonar.api.batch.PostJob; import org.sonar.api.batch.Sensor; import org.sonar.api.batch.SensorContext; +import org.sonar.api.batch.fs.internal.DefaultInputModule; import org.sonar.api.batch.postjob.PostJobContext; import org.sonar.api.resources.Project; import org.sonar.core.platform.ComponentContainer; @@ -54,7 +55,8 @@ public class ScannerExtensionDictionnaryTest { for (Object extension : extensions) { iocContainer.addSingleton(extension); } - return new ScannerExtensionDictionnary(iocContainer, mock(DefaultSensorContext.class), mock(SensorOptimizer.class), mock(PostJobContext.class), + return new ScannerExtensionDictionnary(iocContainer, mock(DefaultSensorContext.class), mock(SensorOptimizer.class), + mock(PostJobContext.class), mock(PostJobOptimizer.class)); } @@ -102,7 +104,8 @@ public class ScannerExtensionDictionnaryTest { ComponentContainer child = parent.createChild(); child.addSingleton(c); - ScannerExtensionDictionnary dictionnary = new ScannerExtensionDictionnary(child, mock(DefaultSensorContext.class), mock(SensorOptimizer.class), mock(PostJobContext.class), + ScannerExtensionDictionnary dictionnary = new ScannerExtensionDictionnary(child, mock(DefaultSensorContext.class), + mock(SensorOptimizer.class), mock(PostJobContext.class), mock(PostJobOptimizer.class)); assertThat(dictionnary.select(Sensor.class, null, true, null)).containsOnly(a, b, c); } @@ -235,7 +238,7 @@ public class ScannerExtensionDictionnaryTest { BatchExtension ko = new CheckProjectKO(); ScannerExtensionDictionnary selector = newSelector(ok, ko); - List<BatchExtension> extensions = Lists.newArrayList(selector.select(BatchExtension.class, new Project("key"), true, null)); + List<BatchExtension> extensions = Lists.newArrayList(selector.select(BatchExtension.class, new DefaultInputModule("foo"), true, null)); assertThat(extensions).hasSize(1); assertThat(extensions.get(0)).isInstanceOf(CheckProjectOK.class); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/CpdExecutorTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/CpdExecutorTest.java index 15545a45716..33a74f0662e 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/CpdExecutorTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/CpdExecutorTest.java @@ -31,11 +31,11 @@ import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.rules.TemporaryFolder; import org.sonar.api.batch.fs.InputFile; +import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.batch.fs.internal.DefaultInputModule; import org.sonar.api.batch.fs.internal.TestInputFileBuilder; import org.sonar.api.config.MapSettings; import org.sonar.api.config.Settings; -import org.sonar.api.resources.Project; import org.sonar.api.utils.log.LogTester; import org.sonar.api.utils.log.LoggerLevel; import org.sonar.core.util.CloseableIterator; @@ -44,13 +44,12 @@ import org.sonar.duplications.block.ByteArray; import org.sonar.duplications.index.CloneGroup; import org.sonar.duplications.index.ClonePart; import org.sonar.scanner.cpd.index.SonarCpdBlockIndex; -import org.sonar.scanner.index.BatchComponent; -import org.sonar.scanner.index.BatchComponentCache; import org.sonar.scanner.protocol.output.ScannerReport.Duplicate; import org.sonar.scanner.protocol.output.ScannerReport.Duplication; import org.sonar.scanner.protocol.output.ScannerReportReader; import org.sonar.scanner.protocol.output.ScannerReportWriter; import org.sonar.scanner.report.ReportPublisher; +import org.sonar.scanner.scan.filesystem.InputComponentStore; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -61,7 +60,6 @@ public class CpdExecutorTest { private Settings settings; private SonarCpdBlockIndex index; private ReportPublisher publisher; - private BatchComponentCache componentCache; @Rule public LogTester logTester = new LogTester(); @@ -73,10 +71,11 @@ public class CpdExecutorTest { public ExpectedException thrown = ExpectedException.none(); private ScannerReportReader reader; - private BatchComponent batchComponent1; - private BatchComponent batchComponent2; - private BatchComponent batchComponent3; + private DefaultInputFile batchComponent1; + private DefaultInputFile batchComponent2; + private DefaultInputFile batchComponent3; private File baseDir; + private InputComponentStore componentStore; @Before public void setUp() throws IOException { @@ -86,26 +85,25 @@ public class CpdExecutorTest { settings = new MapSettings(); publisher = mock(ReportPublisher.class); when(publisher.getWriter()).thenReturn(new ScannerReportWriter(outputDir)); - componentCache = new BatchComponentCache(); - index = new SonarCpdBlockIndex(publisher, componentCache, settings); - executor = new CpdExecutor(settings, index, publisher, componentCache); + index = new SonarCpdBlockIndex(publisher, settings); + componentStore = new InputComponentStore(); + executor = new CpdExecutor(settings, index, publisher, componentStore); reader = new ScannerReportReader(outputDir); - Project p = new Project("foo"); - componentCache.add(p, null).setInputComponent(new DefaultInputModule("foo")); + componentStore.put(new DefaultInputModule("foo")); batchComponent1 = createComponent("src/Foo.php", 5); batchComponent2 = createComponent("src/Foo2.php", 5); batchComponent3 = createComponent("src/Foo3.php", 5); } - private BatchComponent createComponent(String relativePath, int lines) { - org.sonar.api.resources.Resource sampleFile = org.sonar.api.resources.File.create("relativePath").setEffectiveKey("foo:" + relativePath); - return componentCache.add(sampleFile, null) - .setInputComponent(new TestInputFileBuilder("foo", relativePath) - .setModuleBaseDir(baseDir.toPath()) - .setLines(lines) - .build()); + private DefaultInputFile createComponent(String relativePath, int lines) { + DefaultInputFile file = new TestInputFileBuilder("foo", relativePath) + .setModuleBaseDir(baseDir.toPath()) + .setLines(lines) + .build(); + componentStore.put(file); + return file; } @Test @@ -163,7 +161,7 @@ public class CpdExecutorTest { assertThat(dups[0].getDuplicateList()).hasSize(CpdExecutor.MAX_CLONE_PART_PER_GROUP); assertThat(logTester.logs(LoggerLevel.WARN)) - .contains("Too many duplication references on file " + batchComponent1.inputComponent() + " for block at line 0. Keep only the first " + .contains("Too many duplication references on file " + batchComponent1 + " for block at line 0. Keep only the first " + CpdExecutor.MAX_CLONE_PART_PER_GROUP + " references."); } @@ -181,7 +179,7 @@ public class CpdExecutorTest { assertThat(reader.readComponentDuplications(batchComponent1.batchId())).hasSize(CpdExecutor.MAX_CLONE_GROUP_PER_FILE); assertThat(logTester.logs(LoggerLevel.WARN)) - .contains("Too many duplication groups on file " + batchComponent1.inputComponent() + ". Keep only the first " + CpdExecutor.MAX_CLONE_GROUP_PER_FILE + " groups."); + .contains("Too many duplication groups on file " + batchComponent1 + ". Keep only the first " + CpdExecutor.MAX_CLONE_GROUP_PER_FILE + " groups."); } @Test @@ -218,7 +216,7 @@ public class CpdExecutorTest { @Test public void timeout() { for (int i = 1; i <= 2; i++) { - BatchComponent component = createComponent("src/Foo" + i + ".php", 100); + DefaultInputFile component = createComponent("src/Foo" + i + ".php", 100); List<Block> blocks = new ArrayList<>(); for (int j = 1; j <= 10000; j++) { blocks.add(Block.builder() @@ -229,7 +227,7 @@ public class CpdExecutorTest { .setBlockHash(new ByteArray("abcd1234".getBytes())) .build()); } - index.insert((InputFile) component.inputComponent(), blocks); + index.insert((InputFile) component, blocks); } executor.execute(1); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/deprecated/JavaCpdBlockIndexerTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/deprecated/JavaCpdBlockIndexerTest.java index 77908318914..a40589be0f7 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/deprecated/JavaCpdBlockIndexerTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/cpd/deprecated/JavaCpdBlockIndexerTest.java @@ -40,7 +40,6 @@ import org.sonar.api.config.Settings; import org.sonar.api.config.MapSettings; import org.sonar.duplications.block.Block; import org.sonar.scanner.cpd.index.SonarCpdBlockIndex; -import org.sonar.scanner.index.BatchComponentCache; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Matchers.eq; @@ -72,8 +71,6 @@ public class JavaCpdBlockIndexerTest { DefaultFileSystem fs = new DefaultFileSystem(baseDir); file = new TestInputFileBuilder("foo", "src/ManyStatements.java").setLanguage(JAVA).build(); fs.add(file); - BatchComponentCache batchComponentCache = new BatchComponentCache(); - batchComponentCache.add(org.sonar.api.resources.File.create("src/Foo.java").setEffectiveKey("foo:src/ManyStatements.java"), null).setInputComponent(file); File ioFile = file.file(); FileUtils.copyURLToFile(this.getClass().getResource("ManyStatements.java"), ioFile); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/index/BatchComponentCacheTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/index/BatchComponentCacheTest.java deleted file mode 100644 index b7c5a956593..00000000000 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/index/BatchComponentCacheTest.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2016 SonarSource SA - * mailto:contact 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.scanner.index; - -import org.junit.Test; -import org.sonar.api.resources.File; -import org.sonar.api.resources.Resource; -import org.sonar.scanner.index.BatchComponentCache; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.Assert.fail; - -public class BatchComponentCacheTest { - @Test - public void should_cache_resource() { - BatchComponentCache cache = new BatchComponentCache(); - String componentKey = "struts:src/org/struts/Action.java"; - Resource resource = File.create("org/struts/Action.java").setEffectiveKey(componentKey); - cache.add(resource, null); - - assertThat(cache.get(componentKey).resource()).isSameAs(resource); - assertThat(cache.get("other")).isNull(); - } - - @Test - public void should_fail_if_missing_component_key() { - BatchComponentCache cache = new BatchComponentCache(); - Resource resource = File.create("org/struts/Action.java").setEffectiveKey(null); - try { - cache.add(resource, null); - fail(); - } catch (IllegalStateException e) { - // success - assertThat(e).hasMessage("Missing resource effective key"); - } - } -} diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/index/BucketTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/index/BucketTest.java deleted file mode 100644 index 9c5a0fc0359..00000000000 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/index/BucketTest.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2016 SonarSource SA - * mailto:contact 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.scanner.index; - -import org.junit.Test; -import org.sonar.api.measures.Metric; -import org.sonar.api.resources.Directory; -import org.sonar.api.resources.File; -import org.sonar.scanner.index.Bucket; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; - -public class BucketTest { - - Directory directory = Directory.create("org/foo"); - File javaFile = File.create("org/foo/Bar.java"); - Metric ncloc = new Metric("ncloc"); - - @Test - public void shouldManageRelationships() { - Bucket packageBucket = new Bucket(directory); - Bucket fileBucket = new Bucket(javaFile); - fileBucket.setParent(packageBucket); - - assertThat(fileBucket.getParent()).isEqualTo(packageBucket); - assertThat(packageBucket.getChildren()).containsExactly(fileBucket); - } - - @Test - public void shouldBeEquals() { - assertEquals(new Bucket(directory), new Bucket(directory)); - assertEquals(new Bucket(directory).hashCode(), new Bucket(directory).hashCode()); - } - - @Test - public void shouldNotBeEquals() { - assertFalse(new Bucket(directory).equals(new Bucket(javaFile))); - assertThat(new Bucket(directory).hashCode()).isNotEqualTo(new Bucket(javaFile).hashCode()); - } -} diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/index/DefaultIndexTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/index/DefaultIndexTest.java index 4c0565b2e09..d8cc87b574a 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/index/DefaultIndexTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/index/DefaultIndexTest.java @@ -35,7 +35,6 @@ import org.sonar.api.resources.Project; import org.sonar.api.resources.Resource; import org.sonar.api.rules.Rule; import org.sonar.api.rules.RuleFinder; -import org.sonar.scanner.DefaultProjectTree; import org.sonar.scanner.FakeJava; import org.sonar.scanner.scan.measure.MeasureCache; import org.sonar.scanner.sensor.DefaultSensorStorage; @@ -58,6 +57,9 @@ public class DefaultIndexTest { Project moduleB1; private java.io.File baseDir; + // TODO +/* + * @Before public void createIndex() throws IOException { @@ -112,19 +114,6 @@ public class DefaultIndexTest { } @Test - public void shouldGetSource() throws Exception { - Directory directory = Directory.create("src/org/foo"); - File file = File.create("src/org/foo/Bar.java", FakeJava.INSTANCE, false); - FileUtils.write(new java.io.File(baseDir, "src/org/foo/Bar.java"), "Foo bar"); - - assertThat(index.index(directory)).isTrue(); - assertThat(index.index(file, directory)).isTrue(); - - File fileRef = File.create("src/org/foo/Bar.java", null, false); - assertThat(index.getSource(fileRef)).isEqualTo("Foo bar"); - } - - @Test public void shouldNotIndexResourceIfParentNotIndexed() { Directory directory = Directory.create("src/org/other"); File file = File.create("src/org/foo/Bar.java", null, false); @@ -151,5 +140,5 @@ public class DefaultIndexTest { assertThat(index.getResource(moduleB).getPath()).isEqualTo("moduleB"); assertThat(index.getResource(moduleB1).getPath()).isEqualTo("moduleB1"); } - + */ } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/DefaultFilterableIssueTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/DefaultFilterableIssueTest.java index 98f90f14b6c..37728872293 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/DefaultFilterableIssueTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/DefaultFilterableIssueTest.java @@ -22,7 +22,8 @@ package org.sonar.scanner.issue; import java.util.Date; import org.junit.Before; import org.junit.Test; -import org.sonar.api.resources.Project; +import org.sonar.api.batch.fs.internal.DefaultInputModule; +import org.sonar.scanner.ProjectAnalysisInfo; import org.sonar.scanner.issue.DefaultFilterableIssue; import org.sonar.scanner.protocol.Constants.Severity; import org.sonar.scanner.protocol.output.ScannerReport.Issue; @@ -34,13 +35,15 @@ import static org.mockito.Mockito.when; public class DefaultFilterableIssueTest { private DefaultFilterableIssue issue; - private Project mockedProject; + private DefaultInputModule mockedProject; + private ProjectAnalysisInfo projectAnalysisInfo; private String componentKey; private Issue rawIssue; @Before public void setUp() { - mockedProject = mock(Project.class); + mockedProject = mock(DefaultInputModule.class); + projectAnalysisInfo = mock(ProjectAnalysisInfo.class); componentKey = "component"; } @@ -62,10 +65,10 @@ public class DefaultFilterableIssueTest { @Test public void testRoundTrip() { rawIssue = createIssue(); - issue = new DefaultFilterableIssue(mockedProject, rawIssue, componentKey); + issue = new DefaultFilterableIssue(mockedProject, projectAnalysisInfo, rawIssue, componentKey); - when(mockedProject.getAnalysisDate()).thenReturn(new Date(10_000)); - when(mockedProject.getEffectiveKey()).thenReturn("projectKey"); + when(projectAnalysisInfo.analysisDate()).thenReturn(new Date(10_000)); + when(mockedProject.key()).thenReturn("projectKey"); assertThat(issue.componentKey()).isEqualTo(componentKey); assertThat(issue.creationDate()).isEqualTo(new Date(10_000)); @@ -78,7 +81,7 @@ public class DefaultFilterableIssueTest { @Test public void nullValues() { rawIssue = createIssueWithoutFields(); - issue = new DefaultFilterableIssue(mockedProject, rawIssue, componentKey); + issue = new DefaultFilterableIssue(mockedProject, projectAnalysisInfo, rawIssue, componentKey); assertThat(issue.line()).isNull(); assertThat(issue.effortToFix()).isNull(); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/DeprecatedIssueAdapterForFilterTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/DeprecatedIssueAdapterForFilterTest.java index c3cc585c04a..af726074d4c 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/DeprecatedIssueAdapterForFilterTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/DeprecatedIssueAdapterForFilterTest.java @@ -21,15 +21,18 @@ package org.sonar.scanner.issue; import java.util.Date; import org.junit.Test; +import org.sonar.api.batch.fs.internal.DefaultInputModule; import org.sonar.api.issue.Issue; -import org.sonar.api.resources.Project; import org.sonar.api.rule.RuleKey; +import org.sonar.scanner.ProjectAnalysisInfo; import org.sonar.scanner.issue.DeprecatedIssueAdapterForFilter; import org.sonar.scanner.protocol.Constants.Severity; import org.sonar.scanner.protocol.output.ScannerReport.TextRange; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.fail; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; public class DeprecatedIssueAdapterForFilterTest { @@ -39,7 +42,11 @@ public class DeprecatedIssueAdapterForFilterTest { @Test public void improve_coverage() { - DeprecatedIssueAdapterForFilter issue = new DeprecatedIssueAdapterForFilter(new Project(PROJECT_KEY).setAnalysisDate(ANALYSIS_DATE), + DefaultInputModule module = new DefaultInputModule(PROJECT_KEY); + ProjectAnalysisInfo projectAnalysisInfo = mock(ProjectAnalysisInfo.class); + when(projectAnalysisInfo.analysisDate()).thenReturn(ANALYSIS_DATE); + + DeprecatedIssueAdapterForFilter issue = new DeprecatedIssueAdapterForFilter(module, projectAnalysisInfo, org.sonar.scanner.protocol.output.ScannerReport.Issue.newBuilder() .setRuleRepository("repo") .setRuleKey("key") @@ -47,7 +54,8 @@ public class DeprecatedIssueAdapterForFilterTest { .setMsg("msg") .build(), COMPONENT_KEY); - DeprecatedIssueAdapterForFilter issue2 = new DeprecatedIssueAdapterForFilter(new Project(PROJECT_KEY).setAnalysisDate(ANALYSIS_DATE), + + DeprecatedIssueAdapterForFilter issue2 = new DeprecatedIssueAdapterForFilter(module, projectAnalysisInfo, org.sonar.scanner.protocol.output.ScannerReport.Issue.newBuilder() .setRuleRepository("repo") .setRuleKey("key") diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/IssuableFactoryTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/IssuableFactoryTest.java index 1cbed75f3e5..5b734b00f73 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/IssuableFactoryTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/IssuableFactoryTest.java @@ -23,7 +23,6 @@ import org.junit.Test; import org.sonar.api.batch.fs.internal.DefaultInputModule; import org.sonar.api.batch.fs.internal.TestInputFileBuilder; import org.sonar.api.issue.Issuable; -import org.sonar.scanner.DefaultProjectTree; import org.sonar.scanner.sensor.DefaultSensorContext; import static org.assertj.core.api.Assertions.assertThat; @@ -32,7 +31,6 @@ import static org.mockito.Mockito.mock; public class IssuableFactoryTest { ModuleIssues moduleIssues = mock(ModuleIssues.class); - DefaultProjectTree projectTree = mock(DefaultProjectTree.class); @Test public void file_should_be_issuable() { diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/ModuleIssuesTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/ModuleIssuesTest.java index d2f75e47d62..ba62f2d1fe1 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/ModuleIssuesTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/issue/ModuleIssuesTest.java @@ -19,23 +19,20 @@ */ package org.sonar.scanner.issue; -import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; -import org.sonar.api.batch.fs.InputFile; +import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.batch.fs.internal.TestInputFileBuilder; import org.sonar.api.batch.rule.internal.ActiveRulesBuilder; import org.sonar.api.batch.rule.internal.RulesBuilder; import org.sonar.api.batch.sensor.issue.internal.DefaultIssue; import org.sonar.api.batch.sensor.issue.internal.DefaultIssueLocation; -import org.sonar.api.resources.File; import org.sonar.api.rule.RuleKey; import org.sonar.api.rule.Severity; import org.sonar.api.utils.MessageException; -import org.sonar.scanner.index.BatchComponentCache; import org.sonar.scanner.issue.IssueFilters; import org.sonar.scanner.issue.ModuleIssues; import org.sonar.scanner.protocol.output.ScannerReport; @@ -66,15 +63,9 @@ public class ModuleIssuesTest { ModuleIssues moduleIssues; - BatchComponentCache componentCache = new BatchComponentCache(); - InputFile file = new TestInputFileBuilder("foo", "src/Foo.php").initMetadata("Foo\nBar\nBiz\n").build(); + DefaultInputFile file = new TestInputFileBuilder("foo", "src/Foo.php").initMetadata("Foo\nBar\nBiz\n").build(); ReportPublisher reportPublisher = mock(ReportPublisher.class, RETURNS_DEEP_STUBS); - @Before - public void prepare() { - componentCache.add(File.create("src/Foo.php").setEffectiveKey("foo:src/Foo.php"), null).setInputComponent(file); - } - @Test public void fail_on_unknown_rule() { initModuleIssues(); @@ -153,7 +144,7 @@ public class ModuleIssuesTest { assertThat(added).isTrue(); ArgumentCaptor<ScannerReport.Issue> argument = ArgumentCaptor.forClass(ScannerReport.Issue.class); - verify(reportPublisher.getWriter()).appendComponentIssue(eq(1), argument.capture()); + verify(reportPublisher.getWriter()).appendComponentIssue(eq(file.batchId()), argument.capture()); assertThat(argument.getValue().getSeverity()).isEqualTo(org.sonar.scanner.protocol.Constants.Severity.CRITICAL); } @@ -170,7 +161,7 @@ public class ModuleIssuesTest { moduleIssues.initAndAddIssue(issue); ArgumentCaptor<ScannerReport.Issue> argument = ArgumentCaptor.forClass(ScannerReport.Issue.class); - verify(reportPublisher.getWriter()).appendComponentIssue(eq(1), argument.capture()); + verify(reportPublisher.getWriter()).appendComponentIssue(eq(file.batchId()), argument.capture()); assertThat(argument.getValue().getSeverity()).isEqualTo(org.sonar.scanner.protocol.Constants.Severity.INFO); } @@ -189,7 +180,7 @@ public class ModuleIssuesTest { assertThat(added).isTrue(); ArgumentCaptor<ScannerReport.Issue> argument = ArgumentCaptor.forClass(ScannerReport.Issue.class); - verify(reportPublisher.getWriter()).appendComponentIssue(eq(1), argument.capture()); + verify(reportPublisher.getWriter()).appendComponentIssue(eq(file.batchId()), argument.capture()); assertThat(argument.getValue().getMsg()).isEqualTo("Avoid Cycle"); } @@ -215,7 +206,7 @@ public class ModuleIssuesTest { * Every rules and active rules has to be added in builders before creating ModuleIssues */ private void initModuleIssues() { - moduleIssues = new ModuleIssues(activeRulesBuilder.build(), ruleBuilder.build(), filters, reportPublisher, componentCache); + moduleIssues = new ModuleIssues(activeRulesBuilder.build(), ruleBuilder.build(), filters, reportPublisher); } } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/branch/BranchMediumTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/branch/BranchMediumTest.java index ba3e5e03284..d579e26a77e 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/branch/BranchMediumTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/branch/BranchMediumTest.java @@ -32,6 +32,7 @@ import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.rules.TemporaryFolder; +import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.scanner.mediumtest.ScannerMediumTester; import org.sonar.scanner.mediumtest.TaskResult; import org.sonar.xoo.XooPlugin; @@ -93,7 +94,12 @@ public class BranchMediumTest { .start(); assertThat(result.inputFiles()).hasSize(1); - assertThat(result.inputFile("src/sample.xoo").key()).isEqualTo("com.foo.project:branch:src/sample.xoo"); + assertThat(result.inputFile("src/sample.xoo").key()).isEqualTo("com.foo.project:src/sample.xoo"); + + DefaultInputFile inputfile = (DefaultInputFile) result.inputFile("src/sample.xoo"); + assertThat(result.getReportReader().readComponent(inputfile.batchId()).getPath()).isEqualTo("src/sample.xoo"); + + assertThat(result.getReportReader().readMetadata().getBranch()).isEqualTo("branch"); result = tester.newTask() .properties(ImmutableMap.<String, String>builder() @@ -123,7 +129,16 @@ public class BranchMediumTest { .start(); assertThat(result.inputFiles()).hasSize(1); - assertThat(result.inputFile("src/sample.xoo").key()).isEqualTo("com.foo.project:moduleA:branch:src/sample.xoo"); + assertThat(result.inputFile("src/sample.xoo").key()).isEqualTo("com.foo.project:moduleA:src/sample.xoo"); + + // no branch in the report + DefaultInputFile inputfile = (DefaultInputFile) result.inputFile("src/sample.xoo"); + assertThat(result.getReportReader().readComponent(inputfile.batchId()).getPath()).isEqualTo("src/sample.xoo"); + + // no branch in InputModule's key or in report + assertThat(result.getReportComponent("com.foo.project:moduleA").getKey()).isEqualTo("com.foo.project:moduleA"); + + assertThat(result.getReportReader().readMetadata().getBranch()).isEqualTo("branch"); result = tester.newTask() .properties(ImmutableMap.<String, String>builder() diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/fs/FileSystemMediumTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/fs/FileSystemMediumTest.java index a47c22d7456..6c83a42f045 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/fs/FileSystemMediumTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/fs/FileSystemMediumTest.java @@ -81,6 +81,7 @@ public class FileSystemMediumTest { public void scanProjectWithoutProjectName() throws IOException { builder = ImmutableMap.<String, String>builder() .put("sonar.task", "scan") + .put("sonar.verbose", "true") .put("sonar.projectBaseDir", baseDir.getAbsolutePath()) .put("sonar.projectKey", "com.foo.project") .put("sonar.projectVersion", "1.0-SNAPSHOT") @@ -200,6 +201,7 @@ public class FileSystemMediumTest { .start(); assertThat(result.inputFiles()).hasSize(4); + assertThat(result.inputDirs()).hasSize(3); } @Test diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/fs/ProjectBuilderMediumTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/fs/ProjectBuilderMediumTest.java index cb8bdc8a2bb..5a5a8a5feea 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/fs/ProjectBuilderMediumTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/fs/ProjectBuilderMediumTest.java @@ -142,6 +142,7 @@ public class ProjectBuilderMediumTest { .put("sonar.projectVersion", "1.0-SNAPSHOT") .put("sonar.projectDescription", "Description of Foo Project") .put("sonar.sources", ".") + .put("sonar.verbose", "true") .put("sonar.xoo.enableProjectBuilder", "true") .build()) .start(); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/issuesmode/IssueModeAndReportsMediumTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/issuesmode/IssueModeAndReportsMediumTest.java index be6739793c6..31617bb1703 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/issuesmode/IssueModeAndReportsMediumTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/issuesmode/IssueModeAndReportsMediumTest.java @@ -253,6 +253,7 @@ public class IssueModeAndReportsMediumTest { TaskResult result = tester .newScanTask(new File(projectDir, "sonar-project.properties")) .setIssueListener(issueListener) + .property("sonar.verbose", "true") .start(); assertThat(result.trackedIssues()).hasSize(19); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/phases/PostJobsExecutorTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/phases/PostJobsExecutorTest.java index 4c5f4210d54..c312468e47c 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/phases/PostJobsExecutorTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/phases/PostJobsExecutorTest.java @@ -23,6 +23,7 @@ import org.junit.Before; import org.junit.Test; import org.sonar.api.batch.PostJob; import org.sonar.api.batch.SensorContext; +import org.sonar.api.batch.fs.internal.DefaultInputModule; import org.sonar.api.resources.Project; import org.sonar.scanner.bootstrap.ScannerExtensionDictionnary; import org.sonar.scanner.events.EventBus; @@ -32,11 +33,13 @@ import java.util.Arrays; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import static org.mockito.Mockito.eq; +import static org.mockito.Mockito.any; public class PostJobsExecutorTest { PostJobsExecutor executor; - Project project = new Project("project"); + DefaultInputModule module = new DefaultInputModule("project"); ScannerExtensionDictionnary selector = mock(ScannerExtensionDictionnary.class); PostJob job1 = mock(PostJob.class); PostJob job2 = mock(PostJob.class); @@ -44,17 +47,16 @@ public class PostJobsExecutorTest { @Before public void setUp() { - executor = new PostJobsExecutor(selector, project, mock(EventBus.class)); + executor = new PostJobsExecutor(selector, module, mock(EventBus.class)); } @Test public void should_execute_post_jobs() { - when(selector.select(PostJob.class, project, true, null)).thenReturn(Arrays.asList(job1, job2)); + when(selector.select(PostJob.class, module, true, null)).thenReturn(Arrays.asList(job1, job2)); executor.execute(context); - verify(job1).executeOn(project, context); - verify(job2).executeOn(project, context); - + verify(job1).executeOn(any(Project.class), eq(context)); + verify(job2).executeOn(any(Project.class), eq(context)); } } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/postjob/DefaultPostJobContextTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/postjob/DefaultPostJobContextTest.java index 8a977c8644f..89c9ec0d33e 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/postjob/DefaultPostJobContextTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/postjob/DefaultPostJobContextTest.java @@ -23,15 +23,14 @@ import java.util.Arrays; import org.junit.Before; import org.junit.Test; import org.sonar.api.batch.AnalysisMode; -import org.sonar.api.batch.fs.InputFile; +import org.sonar.api.batch.fs.internal.TestInputFileBuilder; import org.sonar.api.batch.postjob.issue.PostJobIssue; import org.sonar.api.batch.rule.Severity; import org.sonar.api.config.Settings; import org.sonar.api.config.MapSettings; -import org.sonar.api.resources.File; -import org.sonar.scanner.index.BatchComponentCache; import org.sonar.scanner.issue.IssueCache; import org.sonar.scanner.issue.tracking.TrackedIssue; +import org.sonar.scanner.scan.filesystem.InputComponentStore; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -40,7 +39,7 @@ import static org.mockito.Mockito.when; public class DefaultPostJobContextTest { private IssueCache issueCache; - private BatchComponentCache resourceCache; + private InputComponentStore componentStore; private DefaultPostJobContext context; private Settings settings; private AnalysisMode analysisMode; @@ -48,10 +47,10 @@ public class DefaultPostJobContextTest { @Before public void prepare() { issueCache = mock(IssueCache.class); - resourceCache = new BatchComponentCache(); + componentStore = new InputComponentStore(); settings = new MapSettings(); analysisMode = mock(AnalysisMode.class); - context = new DefaultPostJobContext(settings, issueCache, resourceCache, analysisMode); + context = new DefaultPostJobContext(settings, issueCache, componentStore, analysisMode); } @Test @@ -79,9 +78,8 @@ public class DefaultPostJobContextTest { assertThat(issue.severity()).isEqualTo(Severity.BLOCKER); assertThat(issue.inputComponent()).isNull(); - InputFile inputPath = mock(InputFile.class); - resourceCache.add(File.create("src/Foo.php").setEffectiveKey("foo:src/Foo.php"), null).setInputComponent(inputPath); - assertThat(issue.inputComponent()).isEqualTo(inputPath); + componentStore.put(new TestInputFileBuilder("foo", "src/Foo.php").build()); + assertThat(issue.inputComponent()).isNotNull(); } } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/profiling/PhasesSumUpTimeProfilerTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/profiling/PhasesSumUpTimeProfilerTest.java index 9f31c75f631..6d7249b1eba 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/profiling/PhasesSumUpTimeProfilerTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/profiling/PhasesSumUpTimeProfilerTest.java @@ -19,11 +19,11 @@ */ package org.sonar.scanner.profiling; -import com.google.common.collect.Maps; -import java.util.Arrays; -import java.util.Collections; +import static org.assertj.core.api.Assertions.assertThat; + import java.util.List; import java.util.Map; + import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -34,6 +34,7 @@ import org.sonar.api.batch.Initializer; import org.sonar.api.batch.PostJob; import org.sonar.api.batch.Sensor; import org.sonar.api.batch.SensorContext; +import org.sonar.api.batch.bootstrap.ProjectDefinition; import org.sonar.api.batch.events.DecoratorExecutionHandler; import org.sonar.api.batch.events.DecoratorsPhaseHandler; import org.sonar.api.batch.events.InitializerExecutionHandler; @@ -50,13 +51,8 @@ import org.sonar.api.resources.Project; import org.sonar.api.utils.System2; import org.sonar.scanner.bootstrap.GlobalProperties; import org.sonar.scanner.events.BatchStepEvent; -import org.sonar.scanner.profiling.AbstractTimeProfiling; -import org.sonar.scanner.profiling.Phase; -import org.sonar.scanner.profiling.PhasesSumUpTimeProfiler; -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; +import com.google.common.collect.Maps; public class PhasesSumUpTimeProfilerTest { @@ -78,7 +74,6 @@ public class PhasesSumUpTimeProfilerTest { public void testSimpleProject() throws InterruptedException { final Project project = mockProject("my:project", true); - when(project.getModules()).thenReturn(Collections.<Project>emptyList()); fakeAnalysis(profiler, project); @@ -93,7 +88,9 @@ public class PhasesSumUpTimeProfilerTest { final Project project = mockProject("project root", true); final Project moduleA = mockProject("moduleA", false); final Project moduleB = mockProject("moduleB", false); - when(project.getModules()).thenReturn(Arrays.asList(moduleA, moduleB)); + + project.definition().addSubProject(moduleA.definition()); + project.definition().addSubProject(moduleA.definition()); fakeAnalysis(profiler, moduleA); fakeAnalysis(profiler, moduleB); @@ -140,10 +137,7 @@ public class PhasesSumUpTimeProfilerTest { } private Project mockProject(String name, boolean isRoot) { - final Project project = spy(new Project("myProject")); - when(project.isRoot()).thenReturn(isRoot); - when(project.getName()).thenReturn(name); - return project; + return new Project(ProjectDefinition.create().setName(name).setKey(name)); } private void fakeAnalysis(PhasesSumUpTimeProfiler profiler, final Project module) { diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/ComponentsPublisherTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/ComponentsPublisherTest.java index abd3a13b8dd..1fbb2ad50b4 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/ComponentsPublisherTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/ComponentsPublisherTest.java @@ -21,79 +21,88 @@ package org.sonar.scanner.report; import java.io.File; import java.io.IOException; +import java.util.Collections; +import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import org.sonar.api.CoreProperties; import org.sonar.api.batch.bootstrap.ProjectDefinition; +import org.sonar.api.batch.fs.InputFile.Type; import org.sonar.api.batch.fs.internal.DefaultInputDir; +import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.batch.fs.internal.DefaultInputModule; +import org.sonar.api.batch.fs.internal.InputModuleHierarchy; import org.sonar.api.batch.fs.internal.TestInputFileBuilder; -import org.sonar.api.resources.Directory; -import org.sonar.api.resources.Project; import org.sonar.api.utils.DateUtils; -import org.sonar.scanner.FakeJava; -import org.sonar.scanner.index.BatchComponentCache; +import org.sonar.scanner.ProjectAnalysisInfo; import org.sonar.scanner.protocol.output.FileStructure; import org.sonar.scanner.protocol.output.ScannerReport.Component; import org.sonar.scanner.protocol.output.ScannerReport.ComponentLink.ComponentLinkType; import org.sonar.scanner.report.ComponentsPublisher; -import org.sonar.scanner.scan.ImmutableProjectReactor; +import org.sonar.scanner.scan.DefaultComponentTree; import org.sonar.scanner.protocol.output.ScannerReportReader; import org.sonar.scanner.protocol.output.ScannerReportWriter; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; public class ComponentsPublisherTest { - @Rule public TemporaryFolder temp = new TemporaryFolder(); - BatchComponentCache resourceCache = new BatchComponentCache(); + private DefaultComponentTree tree; + private InputModuleHierarchy moduleHierarchy; + private File outputDir; + private ScannerReportWriter writer; + + @Before + public void setUp() throws IOException { + tree = new DefaultComponentTree(); + outputDir = temp.newFolder(); + writer = new ScannerReportWriter(outputDir); + } @Test public void add_components_to_report() throws Exception { + ProjectAnalysisInfo projectAnalysisInfo = mock(ProjectAnalysisInfo.class); + when(projectAnalysisInfo.analysisDate()).thenReturn(DateUtils.parseDate("2012-12-12")); + + ProjectDefinition rootDef = ProjectDefinition.create() + .setKey("foo") + .setProperty(CoreProperties.PROJECT_VERSION_PROPERTY, "1.0") + .setName("Root project") + .setDescription("Root description"); + DefaultInputModule root = new DefaultInputModule(rootDef, 1); + + ProjectDefinition module1Def = ProjectDefinition.create() + .setKey("module1") + .setName("Module1") + .setDescription("Module description"); + rootDef.addSubProject(module1Def); + + DefaultInputModule module1 = new DefaultInputModule(module1Def, 2); + + moduleHierarchy = mock(InputModuleHierarchy.class); + when(moduleHierarchy.root()).thenReturn(root); + when(moduleHierarchy.children(root)).thenReturn(Collections.singleton(module1)); + tree.index(module1, root); + + DefaultInputDir dir = new DefaultInputDir("module1", "src", 3); + tree.index(dir, module1); + + DefaultInputFile file = new TestInputFileBuilder("module1", "src/Foo.java", 4).setLines(2).build(); + tree.index(file, dir); + + DefaultInputFile fileWithoutLang = new TestInputFileBuilder("module1", "src/make", 5).setLines(10).build(); + tree.index(fileWithoutLang, dir); - ProjectDefinition rootDef = ProjectDefinition.create().setKey("foo"); - rootDef.properties().put(CoreProperties.PROJECT_VERSION_PROPERTY, "1.0"); - Project root = new Project("foo").setName("Root project").setDescription("Root description") - .setAnalysisDate(DateUtils.parseDate(("2012-12-12"))); - root.setId(1).setUuid("PROJECT_UUID"); - resourceCache.add(root, null).setInputComponent(new DefaultInputModule("foo")); - - Project module1 = new Project("module1").setName("Module1").setDescription("Module description"); - module1.setParent(root); - module1.setId(2).setUuid("MODULE_UUID"); - resourceCache.add(module1, root).setInputComponent(new DefaultInputModule("module1")); - rootDef.addSubProject(ProjectDefinition.create().setKey("module1")); - - Directory dir = Directory.create("src"); - dir.setEffectiveKey("module1:src"); - dir.setId(3).setUuid("DIR_UUID"); - resourceCache.add(dir, module1).setInputComponent(new DefaultInputDir("foo", "src")); - - org.sonar.api.resources.File file = org.sonar.api.resources.File.create("src/Foo.java", FakeJava.INSTANCE, false); - file.setEffectiveKey("module1:src/Foo.java"); - file.setId(4).setUuid("FILE_UUID"); - resourceCache.add(file, dir).setInputComponent(new TestInputFileBuilder("module1", "src/Foo.java").setLines(2).build()); - - org.sonar.api.resources.File fileWithoutLang = org.sonar.api.resources.File.create("src/make", null, false); - fileWithoutLang.setEffectiveKey("module1:src/make"); - fileWithoutLang.setId(5).setUuid("FILE_WITHOUT_LANG_UUID"); - resourceCache.add(fileWithoutLang, dir).setInputComponent(new TestInputFileBuilder("module1", "src/make").setLines(10).build()); - - org.sonar.api.resources.File testFile = org.sonar.api.resources.File.create("test/FooTest.java", FakeJava.INSTANCE, true); - testFile.setEffectiveKey("module1:test/FooTest.java"); - testFile.setId(6).setUuid("TEST_FILE_UUID"); - resourceCache.add(testFile, dir).setInputComponent(new TestInputFileBuilder("module1", "test/FooTest.java").setLines(4).build()); - - ImmutableProjectReactor reactor = new ImmutableProjectReactor(rootDef); - - ComponentsPublisher publisher = new ComponentsPublisher(reactor, resourceCache); - - File outputDir = temp.newFolder(); - ScannerReportWriter writer = new ScannerReportWriter(outputDir); + DefaultInputFile testFile = new TestInputFileBuilder("module1", "test/FooTest.java", 6).setType(Type.TEST).setLines(4).build(); + tree.index(testFile, dir); + + ComponentsPublisher publisher = new ComponentsPublisher(moduleHierarchy, tree); publisher.publish(writer); assertThat(writer.hasComponentData(FileStructure.Domain.COMPONENT, 1)).isTrue(); @@ -121,44 +130,38 @@ public class ComponentsPublisherTest { @Test public void add_components_without_version_and_name() throws IOException { - ProjectDefinition rootDef = ProjectDefinition.create().setKey("foo"); - Project root = new Project("foo").setDescription("Root description") - .setAnalysisDate(DateUtils.parseDate(("2012-12-12"))); - root.setId(1).setUuid("PROJECT_UUID"); - resourceCache.add(root, null).setInputComponent(new DefaultInputModule("foo")); - - Project module1 = new Project("module1").setDescription("Module description"); - module1.setParent(root); - module1.setId(2).setUuid("MODULE_UUID"); - resourceCache.add(module1, root).setInputComponent(new DefaultInputModule("module1")); - rootDef.addSubProject(ProjectDefinition.create().setKey("module1")); - - Directory dir = Directory.create("src"); - dir.setEffectiveKey("module1:src"); - dir.setId(3).setUuid("DIR_UUID"); - resourceCache.add(dir, module1).setInputComponent(new DefaultInputDir("foo", "src")); - - org.sonar.api.resources.File file = org.sonar.api.resources.File.create("src/Foo.java", FakeJava.INSTANCE, false); - file.setEffectiveKey("module1:src/Foo.java"); - file.setId(4).setUuid("FILE_UUID"); - resourceCache.add(file, dir).setInputComponent(new TestInputFileBuilder("module1", "src/Foo.java").setLines(2).build()); - - org.sonar.api.resources.File fileWithoutLang = org.sonar.api.resources.File.create("src/make", null, false); - fileWithoutLang.setEffectiveKey("module1:src/make"); - fileWithoutLang.setId(5).setUuid("FILE_WITHOUT_LANG_UUID"); - resourceCache.add(fileWithoutLang, dir).setInputComponent(new TestInputFileBuilder("module1", "src/make").setLines(10).build()); - - org.sonar.api.resources.File testFile = org.sonar.api.resources.File.create("test/FooTest.java", FakeJava.INSTANCE, true); - testFile.setEffectiveKey("module1:test/FooTest.java"); - testFile.setId(6).setUuid("TEST_FILE_UUID"); - resourceCache.add(testFile, dir).setInputComponent(new TestInputFileBuilder("module1", "test/FooTest.java").setLines(4).build()); - - ImmutableProjectReactor reactor = new ImmutableProjectReactor(rootDef); - - ComponentsPublisher publisher = new ComponentsPublisher(reactor, resourceCache); - - File outputDir = temp.newFolder(); - ScannerReportWriter writer = new ScannerReportWriter(outputDir); + ProjectAnalysisInfo projectAnalysisInfo = mock(ProjectAnalysisInfo.class); + when(projectAnalysisInfo.analysisDate()).thenReturn(DateUtils.parseDate("2012-12-12")); + + ProjectDefinition rootDef = ProjectDefinition.create() + .setKey("foo") + .setDescription("Root description"); + DefaultInputModule root = new DefaultInputModule(rootDef, 1); + + ProjectDefinition module1Def = ProjectDefinition.create() + .setKey("module1") + .setDescription("Module description"); + rootDef.addSubProject(module1Def); + DefaultInputModule module1 = new DefaultInputModule(module1Def, 2); + + moduleHierarchy = mock(InputModuleHierarchy.class); + when(moduleHierarchy.root()).thenReturn(root); + when(moduleHierarchy.children(root)).thenReturn(Collections.singleton(module1)); + tree.index(module1, root); + + DefaultInputDir dir = new DefaultInputDir("module1", "src", 3); + tree.index(dir, module1); + + DefaultInputFile file = new TestInputFileBuilder("module1", "src/Foo.java", 4).setLines(2).build(); + tree.index(file, dir); + + DefaultInputFile fileWithoutLang = new TestInputFileBuilder("module1", "src/make", 5).setLines(10).build(); + tree.index(fileWithoutLang, dir); + + DefaultInputFile testFile = new TestInputFileBuilder("module1", "test/FooTest.java", 6).setType(Type.TEST).setLines(4).build(); + tree.index(testFile, dir); + + ComponentsPublisher publisher = new ComponentsPublisher(moduleHierarchy, tree); publisher.publish(writer); assertThat(writer.hasComponentData(FileStructure.Domain.COMPONENT, 1)).isTrue(); @@ -188,40 +191,38 @@ public class ComponentsPublisherTest { @Test public void add_components_with_links_and_branch() throws Exception { - // inputs - ProjectDefinition rootDef = ProjectDefinition.create().setKey("foo"); - rootDef.properties().put(CoreProperties.PROJECT_VERSION_PROPERTY, "1.0"); - Project root = new Project("foo:my_branch").setName("Root project") - .setAnalysisDate(DateUtils.parseDate(("2012-12-12"))); - root.setId(1).setUuid("PROJECT_UUID"); - resourceCache.add(root, null).setInputComponent(new DefaultInputModule("foo")); - rootDef.properties().put(CoreProperties.LINKS_HOME_PAGE, "http://home"); - rootDef.properties().put(CoreProperties.PROJECT_BRANCH_PROPERTY, "my_branch"); - - Project module1 = new Project("module1:my_branch").setName("Module1"); - module1.setParent(root); - module1.setId(2).setUuid("MODULE_UUID"); - resourceCache.add(module1, root).setInputComponent(new DefaultInputModule("module1")); - ProjectDefinition moduleDef = ProjectDefinition.create().setKey("module1"); - moduleDef.properties().put(CoreProperties.LINKS_CI, "http://ci"); - rootDef.addSubProject(moduleDef); - - Directory dir = Directory.create("src"); - dir.setEffectiveKey("module1:my_branch:my_branch:src"); - dir.setId(3).setUuid("DIR_UUID"); - resourceCache.add(dir, module1).setInputComponent(new DefaultInputDir("foo", "src")); - - org.sonar.api.resources.File file = org.sonar.api.resources.File.create("src/Foo.java", FakeJava.INSTANCE, false); - file.setEffectiveKey("module1:my_branch:my_branch:src/Foo.java"); - file.setId(4).setUuid("FILE_UUID"); - resourceCache.add(file, dir).setInputComponent(new TestInputFileBuilder("module1", "src/Foo.java").setLines(2).build()); - - ImmutableProjectReactor reactor = new ImmutableProjectReactor(rootDef); - - ComponentsPublisher publisher = new ComponentsPublisher(reactor, resourceCache); - - File outputDir = temp.newFolder(); - ScannerReportWriter writer = new ScannerReportWriter(outputDir); + ProjectAnalysisInfo projectAnalysisInfo = mock(ProjectAnalysisInfo.class); + when(projectAnalysisInfo.analysisDate()).thenReturn(DateUtils.parseDate("2012-12-12")); + + ProjectDefinition rootDef = ProjectDefinition.create() + .setKey("foo") + .setProperty(CoreProperties.PROJECT_VERSION_PROPERTY, "1.0") + .setProperty(CoreProperties.PROJECT_BRANCH_PROPERTY, "my_branch") + .setName("Root project") + .setProperty(CoreProperties.LINKS_HOME_PAGE, "http://home") + .setDescription("Root description"); + DefaultInputModule root = new DefaultInputModule(rootDef, 1); + + ProjectDefinition module1Def = ProjectDefinition.create() + .setKey("module1") + .setName("Module1") + .setProperty(CoreProperties.LINKS_CI, "http://ci") + .setDescription("Module description"); + rootDef.addSubProject(module1Def); + DefaultInputModule module1 = new DefaultInputModule(module1Def, 2); + + moduleHierarchy = mock(InputModuleHierarchy.class); + when(moduleHierarchy.root()).thenReturn(root); + when(moduleHierarchy.children(root)).thenReturn(Collections.singleton(module1)); + tree.index(module1, root); + + DefaultInputDir dir = new DefaultInputDir("module1", "src", 3); + tree.index(dir, module1); + + DefaultInputFile file = new TestInputFileBuilder("module1", "src/Foo.java", 4).setLines(2).build(); + tree.index(file, dir); + + ComponentsPublisher publisher = new ComponentsPublisher(moduleHierarchy, tree); publisher.publish(writer); ScannerReportReader reader = new ScannerReportReader(outputDir); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/CoveragePublisherTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/CoveragePublisherTest.java index 067169696e4..2f141e94fbf 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/CoveragePublisherTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/CoveragePublisherTest.java @@ -20,21 +20,20 @@ package org.sonar.scanner.report; import java.io.File; -import java.util.Date; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; +import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.batch.fs.internal.DefaultInputModule; import org.sonar.api.batch.fs.internal.TestInputFileBuilder; import org.sonar.api.batch.sensor.measure.internal.DefaultMeasure; import org.sonar.api.measures.CoreMetrics; -import org.sonar.api.resources.Project; import org.sonar.core.util.CloseableIterator; -import org.sonar.scanner.index.BatchComponentCache; import org.sonar.scanner.protocol.output.ScannerReport.LineCoverage; import org.sonar.scanner.protocol.output.ScannerReportReader; import org.sonar.scanner.protocol.output.ScannerReportWriter; +import org.sonar.scanner.scan.filesystem.InputComponentStore; import org.sonar.scanner.scan.measure.MeasureCache; import static org.assertj.core.api.Assertions.assertThat; @@ -50,18 +49,19 @@ public class CoveragePublisherTest { private MeasureCache measureCache; private CoveragePublisher publisher; - private org.sonar.api.resources.Resource sampleFile; + private InputComponentStore componentCache; + private DefaultInputFile inputFile; @Before public void prepare() { - Project p = new Project("foo").setAnalysisDate(new Date(1234567L)); - BatchComponentCache resourceCache = new BatchComponentCache(); - sampleFile = org.sonar.api.resources.File.create("src/Foo.php").setEffectiveKey("foo:src/Foo.php"); - resourceCache.add(p, null).setInputComponent(new DefaultInputModule("foo")); - resourceCache.add(sampleFile, null).setInputComponent(new TestInputFileBuilder("foo", "src/Foo.php").setLines(5).build()); + inputFile = new TestInputFileBuilder("foo", "src/Foo.php").setLines(5).build(); + componentCache = new InputComponentStore(); + componentCache.put(new DefaultInputModule("foo")); + componentCache.put(inputFile); + measureCache = mock(MeasureCache.class); when(measureCache.byMetric(anyString(), anyString())).thenReturn(null); - publisher = new CoveragePublisher(resourceCache, measureCache); + publisher = new CoveragePublisher(componentCache, measureCache); } @Test @@ -81,7 +81,7 @@ public class CoveragePublisherTest { publisher.publish(writer); - try (CloseableIterator<LineCoverage> it = new ScannerReportReader(outputDir).readComponentCoverage(2)) { + try (CloseableIterator<LineCoverage> it = new ScannerReportReader(outputDir).readComponentCoverage(inputFile.batchId())) { assertThat(it.next()).isEqualTo(LineCoverage.newBuilder() .setLine(2) .setHits(true) diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/MeasuresPublisherTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/MeasuresPublisherTest.java index 6ee89c3e5b9..f6caf2f6bbd 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/MeasuresPublisherTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/MeasuresPublisherTest.java @@ -20,25 +20,25 @@ package org.sonar.scanner.report; import java.io.File; +import java.io.IOException; import java.util.Collections; -import java.util.Date; import org.apache.commons.lang.exception.ExceptionUtils; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.rules.TemporaryFolder; +import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.batch.fs.internal.DefaultInputModule; import org.sonar.api.batch.fs.internal.TestInputFileBuilder; import org.sonar.api.batch.sensor.measure.internal.DefaultMeasure; import org.sonar.api.measures.CoreMetrics; -import org.sonar.api.resources.Project; import org.sonar.core.util.CloseableIterator; import org.sonar.scanner.deprecated.test.TestPlanBuilder; -import org.sonar.scanner.index.BatchComponentCache; import org.sonar.scanner.protocol.output.ScannerReport; import org.sonar.scanner.protocol.output.ScannerReportReader; import org.sonar.scanner.protocol.output.ScannerReportWriter; +import org.sonar.scanner.scan.filesystem.InputComponentStore; import org.sonar.scanner.scan.measure.MeasureCache; import static java.util.Arrays.asList; @@ -61,18 +61,22 @@ public class MeasuresPublisherTest { private MeasureCache measureCache; private MeasuresPublisher publisher; - private org.sonar.api.resources.Resource sampleFile; + private InputComponentStore componentCache; + private File outputDir; + private ScannerReportWriter writer; + private DefaultInputFile inputFile; @Before - public void prepare() { - Project p = new Project("foo").setAnalysisDate(new Date(1234567L)); - BatchComponentCache resourceCache = new BatchComponentCache(); - sampleFile = org.sonar.api.resources.File.create("src/Foo.php").setEffectiveKey(FILE_KEY); - resourceCache.add(p, null).setInputComponent(new DefaultInputModule("foo")); - resourceCache.add(sampleFile, null).setInputComponent(new TestInputFileBuilder("foo", "src/Foo.php").build()); + public void prepare() throws IOException { + inputFile = new TestInputFileBuilder("foo", "src/Foo.php").build(); + componentCache = new InputComponentStore(); + componentCache.put(new DefaultInputModule("foo")); + componentCache.put(inputFile); measureCache = mock(MeasureCache.class); when(measureCache.byComponentKey(anyString())).thenReturn(Collections.<DefaultMeasure<?>>emptyList()); - publisher = new MeasuresPublisher(resourceCache, measureCache, mock(TestPlanBuilder.class)); + publisher = new MeasuresPublisher(componentCache, measureCache, mock(TestPlanBuilder.class)); + outputDir = temp.newFolder(); + writer = new ScannerReportWriter(outputDir); } @Test @@ -84,15 +88,11 @@ public class MeasuresPublisherTest { .withValue("foo bar"); when(measureCache.byComponentKey(FILE_KEY)).thenReturn(asList(measure, stringMeasure)); - File outputDir = temp.newFolder(); - ScannerReportWriter writer = new ScannerReportWriter(outputDir); - publisher.publish(writer); - ScannerReportReader reader = new ScannerReportReader(outputDir); assertThat(reader.readComponentMeasures(1)).hasSize(0); - try (CloseableIterator<ScannerReport.Measure> componentMeasures = reader.readComponentMeasures(2)) { + try (CloseableIterator<ScannerReport.Measure> componentMeasures = reader.readComponentMeasures(inputFile.batchId())) { assertThat(componentMeasures).hasSize(2); } } @@ -102,9 +102,6 @@ public class MeasuresPublisherTest { DefaultMeasure<Integer> measure = new DefaultMeasure<Integer>().forMetric(CoreMetrics.LINES_TO_COVER); when(measureCache.byComponentKey(FILE_KEY)).thenReturn(Collections.singletonList(measure)); - File outputDir = temp.newFolder(); - ScannerReportWriter writer = new ScannerReportWriter(outputDir); - try { publisher.publish(writer); fail(); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/MetadataPublisherTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/MetadataPublisherTest.java index 95dc51a8aef..6e5ee36b182 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/MetadataPublisherTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/MetadataPublisherTest.java @@ -29,14 +29,15 @@ import org.sonar.api.CoreProperties; import org.sonar.api.batch.bootstrap.ProjectDefinition; import org.sonar.api.config.MapSettings; import org.sonar.api.config.Settings; -import org.sonar.api.resources.Project; -import org.sonar.scanner.index.BatchComponentCache; +import org.sonar.api.batch.fs.internal.DefaultInputModule; +import org.sonar.api.batch.fs.internal.InputModuleHierarchy; +import org.sonar.api.batch.fs.internal.TestInputFileBuilder; +import org.sonar.scanner.ProjectAnalysisInfo; import org.sonar.scanner.protocol.output.ScannerReport; import org.sonar.scanner.protocol.output.ScannerReportReader; import org.sonar.scanner.protocol.output.ScannerReportWriter; import org.sonar.scanner.rule.ModuleQProfiles; import org.sonar.scanner.rule.QProfile; -import org.sonar.scanner.scan.ImmutableProjectReactor; import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; @@ -50,22 +51,24 @@ public class MetadataPublisherTest { public TemporaryFolder temp = new TemporaryFolder(); private ProjectDefinition projectDef; - private Project project; + private DefaultInputModule rootModule; private MetadataPublisher underTest; private Settings settings; private ModuleQProfiles qProfiles; + private ProjectAnalysisInfo projectAnalysisInfo; + private InputModuleHierarchy inputModuleHierarchy; @Before public void prepare() { projectDef = ProjectDefinition.create().setKey("foo"); - project = new Project("foo").setAnalysisDate(new Date(1234567L)); - BatchComponentCache componentCache = new BatchComponentCache(); - org.sonar.api.resources.Resource sampleFile = org.sonar.api.resources.File.create("src/Foo.php").setEffectiveKey("foo:src/Foo.php"); - componentCache.add(project, null); - componentCache.add(sampleFile, project); + rootModule = new DefaultInputModule(projectDef, TestInputFileBuilder.batchId++); + projectAnalysisInfo = mock(ProjectAnalysisInfo.class); + when(projectAnalysisInfo.analysisDate()).thenReturn(new Date(1234567L)); + inputModuleHierarchy = mock(InputModuleHierarchy.class); + when(inputModuleHierarchy.root()).thenReturn(rootModule); settings = new MapSettings(); qProfiles = mock(ModuleQProfiles.class); - underTest = new MetadataPublisher(componentCache, new ImmutableProjectReactor(projectDef), settings, qProfiles); + underTest = new MetadataPublisher(projectAnalysisInfo, inputModuleHierarchy, settings, qProfiles); } @Test @@ -101,8 +104,7 @@ public class MetadataPublisherTest { settings.setProperty(CoreProperties.CPD_CROSS_PROJECT, "true"); settings.setProperty(CoreProperties.PROJECT_BRANCH_PROPERTY, "myBranch"); projectDef.properties().put(CoreProperties.PROJECT_BRANCH_PROPERTY, "myBranch"); - project.setKey("foo:myBranch"); - project.setEffectiveKey("foo:myBranch"); + projectDef.setKey("foo"); File outputDir = temp.newFolder(); ScannerReportWriter writer = new ScannerReportWriter(outputDir); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/SourcePublisherTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/SourcePublisherTest.java index 0ecc47a1088..8044f49d440 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/SourcePublisherTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/SourcePublisherTest.java @@ -22,19 +22,17 @@ package org.sonar.scanner.report; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; -import java.util.Date; import org.apache.commons.io.FileUtils; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; +import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.batch.fs.internal.DefaultInputModule; import org.sonar.api.batch.fs.internal.TestInputFileBuilder; -import org.sonar.api.resources.Project; -import org.sonar.api.resources.Qualifiers; -import org.sonar.scanner.index.BatchComponentCache; import org.sonar.scanner.protocol.output.ScannerReportWriter; import org.sonar.scanner.report.SourcePublisher; +import org.sonar.scanner.scan.filesystem.InputComponentStore; import static org.assertj.core.api.Assertions.assertThat; @@ -42,31 +40,25 @@ public class SourcePublisherTest { @Rule public TemporaryFolder temp = new TemporaryFolder(); - private SourcePublisher publisher; - private File sourceFile; - private ScannerReportWriter writer; - - private org.sonar.api.resources.File sampleFile; + private DefaultInputFile inputFile; + private InputComponentStore componentStore; @Before public void prepare() throws IOException { - Project p = new Project("foo").setAnalysisDate(new Date(1234567L)); - BatchComponentCache resourceCache = new BatchComponentCache(); - sampleFile = org.sonar.api.resources.File.create("src/Foo.php"); - sampleFile.setEffectiveKey("foo:src/Foo.php"); - resourceCache.add(p, null).setInputComponent(new DefaultInputModule("foo")); File baseDir = temp.newFolder(); sourceFile = new File(baseDir, "src/Foo.php"); - resourceCache.add(sampleFile, null).setInputComponent( - new TestInputFileBuilder("foo", "src/Foo.php") + inputFile = new TestInputFileBuilder("foo", "src/Foo.php") .setLines(5) .setModuleBaseDir(baseDir.toPath()) .setCharset(StandardCharsets.ISO_8859_1) - .build()); - publisher = new SourcePublisher(resourceCache); + .build(); + componentStore = new InputComponentStore(); + componentStore.put(new DefaultInputModule("foo")); + componentStore.put(inputFile); + publisher = new SourcePublisher(componentStore); File outputDir = temp.newFolder(); writer = new ScannerReportWriter(outputDir); } @@ -77,7 +69,7 @@ public class SourcePublisherTest { publisher.publish(writer); - File out = writer.getSourceFile(2); + File out = writer.getSourceFile(inputFile.batchId()); assertThat(FileUtils.readFileToString(out, StandardCharsets.UTF_8)).isEqualTo(""); } @@ -87,18 +79,18 @@ public class SourcePublisherTest { publisher.publish(writer); - File out = writer.getSourceFile(2); + File out = writer.getSourceFile(inputFile.batchId()); assertThat(FileUtils.readFileToString(out, StandardCharsets.UTF_8)).isEqualTo("1\n2\n3\n4\n"); } @Test public void publishTestSource() throws Exception { FileUtils.write(sourceFile, "1\n2\n3\n4\n", StandardCharsets.ISO_8859_1); - sampleFile.setQualifier(Qualifiers.UNIT_TEST_FILE); + // sampleFile.setQualifier(Qualifiers.UNIT_TEST_FILE); publisher.publish(writer); - File out = writer.getSourceFile(2); + File out = writer.getSourceFile(inputFile.batchId()); assertThat(FileUtils.readFileToString(out, StandardCharsets.UTF_8)).isEqualTo("1\n2\n3\n4\n"); } @@ -108,7 +100,7 @@ public class SourcePublisherTest { publisher.publish(writer); - File out = writer.getSourceFile(2); + File out = writer.getSourceFile(inputFile.batchId()); assertThat(FileUtils.readFileToString(out, StandardCharsets.UTF_8)).isEqualTo("1\n2\n3\n4\n5"); } @@ -118,7 +110,7 @@ public class SourcePublisherTest { publisher.publish(writer); - File out = writer.getSourceFile(2); + File out = writer.getSourceFile(inputFile.batchId()); assertThat(FileUtils.readFileToString(out, StandardCharsets.UTF_8)).isEqualTo("\n2\n3\n4\n5"); } } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/ComponentIndexerTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/ComponentIndexerTest.java deleted file mode 100644 index 0db12d01f39..00000000000 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/ComponentIndexerTest.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2016 SonarSource SA - * mailto:contact 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.scanner.scan.filesystem; - -import java.io.File; -import java.io.IOException; -import org.apache.commons.io.FileUtils; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TemporaryFolder; -import org.mockito.ArgumentMatcher; -import org.sonar.api.batch.fs.InputFile; -import org.sonar.api.batch.fs.InputFile.Status; -import org.sonar.api.batch.fs.internal.DefaultFileSystem; -import org.sonar.api.batch.fs.internal.DefaultInputFile; -import org.sonar.api.batch.fs.internal.TestInputFileBuilder; -import org.sonar.api.resources.AbstractLanguage; -import org.sonar.api.resources.Directory; -import org.sonar.api.resources.Languages; -import org.sonar.api.resources.Project; -import org.sonar.api.resources.Qualifiers; -import org.sonar.api.resources.Resource; -import org.sonar.scanner.FakeJava; -import org.sonar.scanner.analysis.DefaultAnalysisMode; -import org.sonar.scanner.index.BatchComponent; -import org.sonar.scanner.index.BatchComponentCache; -import org.sonar.scanner.index.DefaultIndex; -import org.sonar.scanner.repository.ProjectRepositories; -import org.sonar.scanner.scan.filesystem.ComponentIndexer; -import org.sonar.scanner.scan.filesystem.DefaultModuleFileSystem; -import org.sonar.scanner.scan.filesystem.FileIndexer; -import org.sonar.scanner.scan.filesystem.ModuleFileSystemInitializer; - -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.argThat; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -public class ComponentIndexerTest { - - @Rule - public TemporaryFolder temp = new TemporaryFolder(); - private File baseDir; - private DefaultFileSystem fs; - private DefaultIndex sonarIndex; - private AbstractLanguage cobolLanguage; - private Project project; - private ModuleFileSystemInitializer initializer; - private DefaultAnalysisMode mode; - - @Before - public void prepare() throws IOException { - baseDir = temp.newFolder(); - fs = new DefaultFileSystem(baseDir.toPath()); - sonarIndex = mock(DefaultIndex.class); - project = new Project("myProject"); - initializer = mock(ModuleFileSystemInitializer.class); - mode = mock(DefaultAnalysisMode.class); - when(initializer.baseDir()).thenReturn(baseDir); - when(initializer.workingDir()).thenReturn(temp.newFolder()); - cobolLanguage = new AbstractLanguage("cobol") { - @Override - public String[] getFileSuffixes() { - return new String[] {"cbl"}; - } - }; - } - - @Test - public void should_index_java_files() throws IOException { - Languages languages = new Languages(FakeJava.INSTANCE); - ComponentIndexer indexer = createIndexer(languages); - DefaultModuleFileSystem fs = new DefaultModuleFileSystem(project, null, mock(FileIndexer.class), initializer, indexer, mode, new ProjectRepositories()); - fs.add(newInputFile("src/main/java/foo/bar/Foo.java", "", "foo/bar/Foo.java", "java", false, Status.ADDED)); - fs.add(newInputFile("src/main/java2/foo/bar/Foo.java", "", "foo/bar/Foo.java", "java", false, Status.ADDED)); - // should index even if filter is applied - fs.add(newInputFile("src/test/java/foo/bar/FooTest.java", "", "foo/bar/FooTest.java", "java", true, Status.SAME)); - - fs.index(); - - verify(sonarIndex).index(org.sonar.api.resources.File.create("src/main/java/foo/bar/Foo.java", FakeJava.INSTANCE, false)); - verify(sonarIndex).index(org.sonar.api.resources.File.create("src/main/java2/foo/bar/Foo.java", FakeJava.INSTANCE, false)); - verify(sonarIndex).index(argThat(new ArgumentMatcher<org.sonar.api.resources.File>() { - @Override - public boolean matches(Object arg0) { - org.sonar.api.resources.File javaFile = (org.sonar.api.resources.File) arg0; - return javaFile.getKey().equals("src/test/java/foo/bar/FooTest.java") - && javaFile.getPath().equals("src/test/java/foo/bar/FooTest.java") - && javaFile.getQualifier().equals(Qualifiers.UNIT_TEST_FILE); - } - })); - } - - private ComponentIndexer createIndexer(Languages languages) { - BatchComponentCache resourceCache = mock(BatchComponentCache.class); - when(resourceCache.get(any(Resource.class))) - .thenReturn(new BatchComponent(2, org.sonar.api.resources.File.create("foo.php"), new BatchComponent(1, Directory.create("src"), null))); - return new ComponentIndexer(project, languages, sonarIndex, resourceCache); - } - - @Test - public void should_index_cobol_files() throws IOException { - Languages languages = new Languages(cobolLanguage); - ComponentIndexer indexer = createIndexer(languages); - DefaultModuleFileSystem fs = new DefaultModuleFileSystem(project, null, mock(FileIndexer.class), initializer, indexer, mode, new ProjectRepositories()); - fs.add(newInputFile("src/foo/bar/Foo.cbl", "", "foo/bar/Foo.cbl", "cobol", false, Status.ADDED)); - fs.add(newInputFile("src2/foo/bar/Foo.cbl", "", "foo/bar/Foo.cbl", "cobol", false, Status.ADDED)); - fs.add(newInputFile("src/test/foo/bar/FooTest.cbl", "", "foo/bar/FooTest.cbl", "cobol", true, Status.ADDED)); - - fs.index(); - - verify(sonarIndex).index(org.sonar.api.resources.File.create("/src/foo/bar/Foo.cbl", cobolLanguage, false)); - verify(sonarIndex).index(org.sonar.api.resources.File.create("/src2/foo/bar/Foo.cbl", cobolLanguage, false)); - verify(sonarIndex).index(org.sonar.api.resources.File.create("/src/test/foo/bar/FooTest.cbl", cobolLanguage, true)); - } - - private DefaultInputFile newInputFile(String path, String content, String sourceRelativePath, String languageKey, boolean unitTest, InputFile.Status status) throws IOException { - File file = new File(baseDir, path); - FileUtils.write(file, content); - return new TestInputFileBuilder("foo", path) - .setLanguage(languageKey) - .setType(unitTest ? InputFile.Type.TEST : InputFile.Type.MAIN) - .setStatus(status) - .build(); - } - -} diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/InputPathCacheTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/InputComponentStoreTest.java index a08039430a0..131eb7d6c6e 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/InputPathCacheTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/InputComponentStoreTest.java @@ -19,8 +19,6 @@ */ package org.sonar.scanner.scan.filesystem; -import org.junit.After; -import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; @@ -29,30 +27,21 @@ import org.sonar.api.batch.fs.InputFile.Type; import org.sonar.api.batch.fs.InputPath; import org.sonar.api.batch.fs.internal.DefaultInputFile; import org.sonar.api.batch.fs.internal.TestInputFileBuilder; -import org.sonar.scanner.scan.filesystem.InputPathCache; +import org.sonar.scanner.scan.filesystem.InputComponentStore; import java.nio.charset.StandardCharsets; import static org.assertj.core.api.Assertions.assertThat; -public class InputPathCacheTest { - +public class InputComponentStoreTest { @Rule public TemporaryFolder temp = new TemporaryFolder(); - @Before - public void start() { - } - - @After - public void stop() { - } - @Test public void should_add_input_file() throws Exception { - InputPathCache cache = new InputPathCache(); - DefaultInputFile fooFile = new TestInputFileBuilder("foo", "src/main/java/Foo.java").setModuleBaseDir(temp.newFolder().toPath()).build(); - cache.put("struts", fooFile); - cache.put("struts-core", new TestInputFileBuilder("foo", "src/main/java/Bar.java") + InputComponentStore cache = new InputComponentStore(); + DefaultInputFile fooFile = new TestInputFileBuilder("struts", "src/main/java/Foo.java").setModuleBaseDir(temp.newFolder().toPath()).build(); + cache.put(fooFile); + cache.put(new TestInputFileBuilder("struts-core", "src/main/java/Bar.java") .setLanguage("bla") .setType(Type.MAIN) .setStatus(Status.ADDED) @@ -72,7 +61,7 @@ public class InputPathCacheTest { assertThat(inputPath.relativePath()).startsWith("src/main/java/"); } - cache.remove("struts", fooFile); + cache.remove(fooFile); assertThat(cache.allFiles()).hasSize(1); cache.removeModule("struts"); diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/MetadataGeneratorProviderTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/MetadataGeneratorProviderTest.java index 26542931d04..73f0dc3c8f7 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/MetadataGeneratorProviderTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/filesystem/MetadataGeneratorProviderTest.java @@ -23,6 +23,7 @@ import org.junit.Test; import org.mockito.Mockito; import org.sonar.api.batch.fs.internal.FileMetadata; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; public class MetadataGeneratorProviderTest { @@ -31,7 +32,6 @@ public class MetadataGeneratorProviderTest { StatusDetectionFactory statusDetectionFactory = mock(StatusDetectionFactory.class, Mockito.RETURNS_MOCKS); MetadataGeneratorProvider factory = new MetadataGeneratorProvider(); - MetadataGenerator builder = factory.provide(statusDetectionFactory, new FileMetadata()); - //TODO + assertThat(factory.provide(statusDetectionFactory, new FileMetadata())).isNotNull(); } } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/report/ConsoleReportTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/report/ConsoleReportTest.java index eba14f3a7b1..a176c309830 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/report/ConsoleReportTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/report/ConsoleReportTest.java @@ -33,7 +33,7 @@ import org.sonar.api.rule.Severity; import org.sonar.api.utils.log.LogTester; import org.sonar.scanner.issue.IssueCache; import org.sonar.scanner.issue.tracking.TrackedIssue; -import org.sonar.scanner.scan.filesystem.InputPathCache; +import org.sonar.scanner.scan.filesystem.InputComponentStore; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; @@ -46,14 +46,14 @@ public class ConsoleReportTest { private Settings settings; private IssueCache issueCache; - private InputPathCache inputPathCache; + private InputComponentStore inputPathCache; private ConsoleReport report; @Before public void prepare() { settings = new MapSettings(); issueCache = mock(IssueCache.class); - inputPathCache = mock(InputPathCache.class); + inputPathCache = mock(InputComponentStore.class); report = new ConsoleReport(settings, issueCache, inputPathCache); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/report/JSONReportTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/report/JSONReportTest.java index c75da60b841..2918d4fd5e6 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/report/JSONReportTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scan/report/JSONReportTest.java @@ -36,6 +36,8 @@ import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.fs.internal.DefaultFileSystem; import org.sonar.api.batch.fs.internal.DefaultInputDir; import org.sonar.api.batch.fs.internal.DefaultInputFile; +import org.sonar.api.batch.fs.internal.DefaultInputModule; +import org.sonar.api.batch.fs.internal.InputModuleHierarchy; import org.sonar.api.batch.fs.internal.TestInputFileBuilder; import org.sonar.api.batch.rule.Rules; import org.sonar.api.batch.rule.internal.RulesBuilder; @@ -43,14 +45,12 @@ import org.sonar.api.config.Settings; import org.sonar.api.config.MapSettings; import org.sonar.api.issue.Issue; import org.sonar.api.platform.Server; -import org.sonar.api.resources.Project; -import org.sonar.api.resources.Resource; import org.sonar.api.rule.RuleKey; import org.sonar.scanner.issue.IssueCache; import org.sonar.scanner.issue.tracking.TrackedIssue; import org.sonar.scanner.protocol.input.ScannerInput; import org.sonar.scanner.repository.user.UserRepositoryLoader; -import org.sonar.scanner.scan.filesystem.InputPathCache; +import org.sonar.scanner.scan.filesystem.InputComponentStore; import static net.javacrumbs.jsonunit.assertj.JsonAssert.assertThatJson; import static org.assertj.core.api.Assertions.assertThat; @@ -66,37 +66,43 @@ public class JSONReportTest { public TemporaryFolder temp = new TemporaryFolder(); JSONReport jsonReport; - Resource resource = mock(Resource.class); DefaultFileSystem fs; Server server = mock(Server.class); Rules rules = mock(Rules.class); Settings settings = new MapSettings(); IssueCache issueCache = mock(IssueCache.class); private UserRepositoryLoader userRepository; + private InputModuleHierarchy moduleHierarchy; @Before public void before() throws Exception { + moduleHierarchy = mock(InputModuleHierarchy.class); + userRepository = mock(UserRepositoryLoader.class); fs = new DefaultFileSystem(temp.newFolder().toPath()); SIMPLE_DATE_FORMAT.setTimeZone(TimeZone.getTimeZone("GMT+02:00")); - when(resource.getEffectiveKey()).thenReturn("Action.java"); when(server.getVersion()).thenReturn("3.6"); - userRepository = mock(UserRepositoryLoader.class); - DefaultInputDir inputDir = new DefaultInputDir("struts", "src/main/java/org/apache/struts"); + + DefaultInputDir inputDir = new DefaultInputDir("struts", "src/main/java/org/apache/struts", TestInputFileBuilder.batchId++); DefaultInputFile inputFile = new TestInputFileBuilder("struts", "src/main/java/org/apache/struts/Action.java").build(); inputFile.setStatus(InputFile.Status.CHANGED); - InputPathCache fileCache = mock(InputPathCache.class); + InputComponentStore fileCache = mock(InputComponentStore.class); when(fileCache.allFiles()).thenReturn(Arrays.<InputFile>asList(inputFile)); when(fileCache.allDirs()).thenReturn(Arrays.<InputDir>asList(inputDir)); - Project rootModule = new Project("struts"); - Project moduleA = new Project("struts-core"); - moduleA.setParent(rootModule).setPath("core"); - Project moduleB = new Project("struts-ui"); - moduleB.setParent(rootModule).setPath("ui"); + + DefaultInputModule rootModule = new DefaultInputModule("struts"); + DefaultInputModule moduleA = new DefaultInputModule("struts-core"); + DefaultInputModule moduleB = new DefaultInputModule("struts-ui"); + + when(moduleHierarchy.children(rootModule)).thenReturn(Arrays.asList(moduleA, moduleB)); + when(moduleHierarchy.parent(moduleA)).thenReturn(rootModule); + when(moduleHierarchy.parent(moduleB)).thenReturn(rootModule); + when(moduleHierarchy.relativePath(moduleA)).thenReturn("core"); + when(moduleHierarchy.relativePath(moduleB)).thenReturn("ui"); RulesBuilder builder = new RulesBuilder(); builder.add(RuleKey.of("squid", "AvoidCycles")).setName("Avoid Cycles"); rules = builder.build(); - jsonReport = new JSONReport(settings, fs, server, rules, issueCache, rootModule, fileCache, userRepository); + jsonReport = new JSONReport(moduleHierarchy, settings, fs, server, rules, issueCache, rootModule, fileCache, userRepository); } @Test diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scm/DefaultBlameOutputTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scm/DefaultBlameOutputTest.java index 02867cc63ee..673c717601c 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/scm/DefaultBlameOutputTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/scm/DefaultBlameOutputTest.java @@ -21,42 +21,24 @@ package org.sonar.scanner.scm; import java.util.Arrays; import java.util.Date; -import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; -import org.sonar.api.batch.fs.InputComponent; import org.sonar.api.batch.fs.InputFile; import org.sonar.api.batch.fs.internal.TestInputFileBuilder; import org.sonar.api.batch.scm.BlameLine; -import org.sonar.scanner.index.BatchComponent; -import org.sonar.scanner.index.BatchComponentCache; import org.sonar.scanner.scm.DefaultBlameOutput; -import static org.mockito.Matchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - public class DefaultBlameOutputTest { @Rule public ExpectedException thrown = ExpectedException.none(); - private BatchComponentCache componentCache; - - @Before - public void prepare() { - componentCache = mock(BatchComponentCache.class); - BatchComponent component = mock(BatchComponent.class); - when(component.batchId()).thenReturn(1); - when(componentCache.get(any(InputComponent.class))).thenReturn(component); - } - @Test public void shouldNotFailIfNotSameNumberOfLines() { InputFile file = new TestInputFileBuilder("foo", "src/main/java/Foo.java").setLines(10).build(); - new DefaultBlameOutput(null, null, Arrays.asList(file)).blameResult(file, Arrays.asList(new BlameLine().revision("1").author("guy"))); + new DefaultBlameOutput(null, Arrays.asList(file)).blameResult(file, Arrays.asList(new BlameLine().revision("1").author("guy"))); } @Test @@ -66,7 +48,7 @@ public class DefaultBlameOutputTest { thrown.expect(IllegalArgumentException.class); thrown.expectMessage("It was not expected to blame file src/main/java/Foo.java"); - new DefaultBlameOutput(null, null, Arrays.<InputFile>asList(new TestInputFileBuilder("foo", "src/main/java/Foo2.java").build())) + new DefaultBlameOutput(null, Arrays.<InputFile>asList(new TestInputFileBuilder("foo", "src/main/java/Foo2.java").build())) .blameResult(file, Arrays.asList(new BlameLine().revision("1").author("guy"))); } @@ -77,7 +59,7 @@ public class DefaultBlameOutputTest { thrown.expect(IllegalArgumentException.class); thrown.expectMessage("Blame date is null for file src/main/java/Foo.java at line 1"); - new DefaultBlameOutput(null, componentCache, Arrays.<InputFile>asList(file)) + new DefaultBlameOutput(null, Arrays.<InputFile>asList(file)) .blameResult(file, Arrays.asList(new BlameLine().revision("1").author("guy"))); } @@ -88,7 +70,7 @@ public class DefaultBlameOutputTest { thrown.expect(IllegalArgumentException.class); thrown.expectMessage("Blame revision is blank for file src/main/java/Foo.java at line 1"); - new DefaultBlameOutput(null, componentCache, Arrays.<InputFile>asList(file)) + new DefaultBlameOutput(null, Arrays.<InputFile>asList(file)) .blameResult(file, Arrays.asList(new BlameLine().date(new Date()).author("guy"))); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/DefaultSensorStorageTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/DefaultSensorStorageTest.java index b2ed93632e8..4d11247c5d4 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/DefaultSensorStorageTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/sensor/DefaultSensorStorageTest.java @@ -38,12 +38,10 @@ import org.sonar.api.config.MapSettings; import org.sonar.api.config.Settings; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.resources.File; -import org.sonar.api.resources.Project; import org.sonar.api.resources.Resource; import org.sonar.api.utils.KeyValueFormat; import org.sonar.core.metric.ScannerMetrics; import org.sonar.scanner.cpd.index.SonarCpdBlockIndex; -import org.sonar.scanner.index.BatchComponentCache; import org.sonar.scanner.issue.ModuleIssues; import org.sonar.scanner.protocol.output.ScannerReportWriter; import org.sonar.scanner.report.ReportPublisher; @@ -71,7 +69,6 @@ public class DefaultSensorStorageTest { private ModuleIssues moduleIssues; private MeasureCache measureCache; private ContextPropertiesCache contextPropertiesCache = new ContextPropertiesCache(); - private BatchComponentCache componentCache; @Before public void prepare() throws Exception { @@ -83,11 +80,10 @@ public class DefaultSensorStorageTest { measureCache = mock(MeasureCache.class); CoverageExclusions coverageExclusions = mock(CoverageExclusions.class); when(coverageExclusions.isExcluded(any(InputFile.class))).thenReturn(false); - componentCache = new BatchComponentCache(); ReportPublisher reportPublisher = mock(ReportPublisher.class); when(reportPublisher.getWriter()).thenReturn(new ScannerReportWriter(temp.newFolder())); underTest = new DefaultSensorStorage(metricFinder, - moduleIssues, settings, coverageExclusions, componentCache, reportPublisher, measureCache, + moduleIssues, settings, coverageExclusions, reportPublisher, measureCache, mock(SonarCpdBlockIndex.class), contextPropertiesCache, new ScannerMetrics()); } @@ -110,7 +106,6 @@ public class DefaultSensorStorageTest { ArgumentCaptor<DefaultMeasure> argumentCaptor = ArgumentCaptor.forClass(DefaultMeasure.class); Resource sonarFile = File.create("src/Foo.php").setEffectiveKey("foo:src/Foo.php"); - componentCache.add(sonarFile, null).setInputComponent(file); when(measureCache.put(eq(file.key()), eq(CoreMetrics.NCLOC_KEY), argumentCaptor.capture())).thenReturn(null); underTest.store(new DefaultMeasure() .on(file) @@ -126,7 +121,6 @@ public class DefaultSensorStorageTest { public void shouldSaveProjectMeasureToSensorContext() { String projectKey = "myProject"; DefaultInputModule module = new DefaultInputModule(projectKey); - componentCache.add(new Project(projectKey), null).setInputComponent(module); ArgumentCaptor<DefaultMeasure> argumentCaptor = ArgumentCaptor.forClass(DefaultMeasure.class); when(measureCache.put(eq(module.key()), eq(CoreMetrics.NCLOC_KEY), argumentCaptor.capture())).thenReturn(null); @@ -143,10 +137,8 @@ public class DefaultSensorStorageTest { @Test(expected = UnsupportedOperationException.class) public void duplicateHighlighting() throws Exception { - Resource sonarFile = File.create("src/Foo.java").setEffectiveKey("foo:src/Foo.java"); InputFile inputFile = new TestInputFileBuilder("foo", "src/Foo.java") .setModuleBaseDir(temp.newFolder().toPath()).build(); - componentCache.add(sonarFile, null).setInputComponent(inputFile); DefaultHighlighting h = new DefaultHighlighting(null) .onFile(inputFile); underTest.store(h); @@ -155,10 +147,8 @@ public class DefaultSensorStorageTest { @Test(expected = UnsupportedOperationException.class) public void duplicateSymbolTable() throws Exception { - Resource sonarFile = File.create("src/Foo.java").setEffectiveKey("foo:src/Foo.java"); InputFile inputFile = new TestInputFileBuilder("foo", "src/Foo.java") .setModuleBaseDir(temp.newFolder().toPath()).build(); - componentCache.add(sonarFile, null).setInputComponent(inputFile); DefaultSymbolTable st = new DefaultSymbolTable(null) .onFile(inputFile); underTest.store(st); |