diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml index 7549656d22..1ad9e067f2 100644 --- a/.github/workflows/sonarcloud.yml +++ b/.github/workflows/sonarcloud.yml @@ -38,4 +38,4 @@ jobs: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} SONAR_ORGANIZATION: ${{ vars.SONAR_ORGANIZATION }} SONAR_PROJECT_KEY: ${{ vars.SONAR_PROJECT_KEY }} - run: ./gradlew build sonarqube --continue --info -Dorg.gradle.parallel=true -Dorg.gradle.caching=true + run: ./gradlew build sonar --continue -Dorg.gradle.parallel=true -Dorg.gradle.caching=true diff --git a/build.gradle b/build.gradle index 1429ed9c79..23908ad984 100644 --- a/build.gradle +++ b/build.gradle @@ -31,6 +31,8 @@ plugins { id 'me.champeau.jmh' version '0.7.2' apply false id 'net.ltgt.errorprone' version '4.0.1' id 'maven-publish' + id 'jacoco' + id 'jacoco-report-aggregation' id 'org.sonarqube' version '5.1.0.4882' } @@ -40,12 +42,12 @@ sonarqube { property "sonar.organization", "$System.env.SONAR_ORGANIZATION" property "sonar.gradle.skipCompile", "true" property "sonar.host.url", "https://sonarcloud.io" - property "sonar.coverage.jacoco.xmlReportPaths", "${buildDir}/reports/jacoco/jacocoRootReport/jacocoRootReport.xml" + property "sonar.coverage.jacoco.xmlReportPaths", "${buildDir}/reports/jacoco/testCodeCoverageReport/testCodeCoverageReport.xml" property "sonar.coverage.exclusions", "acceptance-tests/**/*" } } -project.tasks["sonarqube"].dependsOn "jacocoRootReport" +project.tasks["sonar"].dependsOn "testCodeCoverageReport" if (!JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_21)) { throw new GradleException("Java 21 or later is required to build Besu.\n" + @@ -360,6 +362,7 @@ allprojects { } } useJUnitPlatform {} + finalizedBy jacocoTestReport // report is always generated after tests run } javadoc { @@ -962,19 +965,6 @@ jacocoTestReport { } } -task jacocoRootReport(type: org.gradle.testing.jacoco.tasks.JacocoReport) { - additionalSourceDirs.from files(subprojects.sourceSets.main.allSource.srcDirs) - sourceDirectories.from files(subprojects.sourceSets.main.allSource.srcDirs) - classDirectories.from files(subprojects.sourceSets.main.output).asFileTree.matching { exclude 'org/hyperledger/besu/tests/acceptance/**' } - executionData.from fileTree(dir: '.', includes: ['**/jacoco/*.exec']) - reports { - xml.required = true - csv.required = true - html.destination file("build/reports/jacocoHtml") - } - onlyIf = { true } -} - // http://label-schema.org/rc1/ // using the RFC3339 format "2016-04-12T23:20:50.52Z" def buildTime() { diff --git a/ethereum/api/build.gradle b/ethereum/api/build.gradle index 3269812fec..7f5e3d40a9 100644 --- a/ethereum/api/build.gradle +++ b/ethereum/api/build.gradle @@ -130,41 +130,44 @@ artifacts { testSupportArtifacts testSupportJar } tasks.register('generateTestBlockchain') { def srcFiles = 'src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/chain-data' - def dataPath = "$buildDir/generated/data" + def dataPath = new File("$buildDir/generated/data") def blocksBin = "$buildDir/resources/test/org/hyperledger/besu/ethereum/api/jsonrpc/trace/chain-data/blocks.bin" inputs.dir(srcFiles) outputs.file(blocksBin) dependsOn(configurations.testResourceGeneration) dependsOn(processTestResources) doLast { - mkdir(dataPath) - javaexec { - main = 'org.hyperledger.besu.Besu' - classpath = configurations.testResourceGeneration - args = [ - "--logging=ERROR", - "--data-path=$dataPath", - "--genesis-file=$srcFiles/genesis.json", - "blocks", - "import", - "--format=JSON", - "--from=$srcFiles/blocks.json", - "--start-time=1438269971" - ] - } - javaexec { - main = 'org.hyperledger.besu.Besu' - classpath = configurations.testResourceGeneration - args = [ - "--logging=ERROR", - "--data-path=$dataPath", - "--genesis-file=$srcFiles/genesis.json", - "blocks", - "export", - "--format=RLP", - "--start-block=0", - "--to=$blocksBin" - ] + if(!dataPath.exists()) { + mkdir(dataPath) + + javaexec { + main = 'org.hyperledger.besu.Besu' + classpath = configurations.testResourceGeneration + args = [ + "--logging=ERROR", + "--data-path=$dataPath", + "--genesis-file=$srcFiles/genesis.json", + "blocks", + "import", + "--format=JSON", + "--from=$srcFiles/blocks.json", + "--start-time=1438269971" + ] + } + javaexec { + main = 'org.hyperledger.besu.Besu' + classpath = configurations.testResourceGeneration + args = [ + "--logging=ERROR", + "--data-path=$dataPath", + "--genesis-file=$srcFiles/genesis.json", + "blocks", + "export", + "--format=RLP", + "--start-block=0", + "--to=$blocksBin" + ] + } } } } diff --git a/testutil/build.gradle b/testutil/build.gradle index 5b4f06e7ac..e77a763bda 100644 --- a/testutil/build.gradle +++ b/testutil/build.gradle @@ -28,6 +28,10 @@ jar { } } +sonarqube { + skipProject = true +} + dependencies { implementation project(':ethereum:eth') implementation project(':plugin-api')