diff options
Diffstat (limited to 'tools/test/LcovMerger/javatests/com/google/devtools/lcovmerger')
4 files changed, 165 insertions, 63 deletions
diff --git a/tools/test/LcovMerger/javatests/com/google/devtools/lcovmerger/BUILD b/tools/test/LcovMerger/javatests/com/google/devtools/lcovmerger/BUILD index daf81b51d3..51a6e0bcf8 100644 --- a/tools/test/LcovMerger/javatests/com/google/devtools/lcovmerger/BUILD +++ b/tools/test/LcovMerger/javatests/com/google/devtools/lcovmerger/BUILD @@ -6,6 +6,7 @@ java_test( name = "BranchCoverageTest", srcs = ["BranchCoverageTest.java"], deps = [ + "//third_party:guava", "//third_party:junit4", "//third_party:truth", "//tools/test/LcovMerger/java/com/google/devtools/lcovmerger:BranchCoverage", @@ -16,6 +17,7 @@ java_test( name = "LineCoverageTest", srcs = ["LineCoverageTest.java"], deps = [ + "//third_party:guava", "//third_party:junit4", "//third_party:truth", "//tools/test/LcovMerger/java/com/google/devtools/lcovmerger:LineCoverage", @@ -28,6 +30,7 @@ java_test( deps = [ ":LcovMergerTestUtils", ":LineCoverageTest", + "//third_party:guava", "//third_party:junit4", "//third_party:truth", "//tools/test/LcovMerger/java/com/google/devtools/lcovmerger:LineCoverage", @@ -43,8 +46,8 @@ java_test( "//third_party:guava", "//third_party:junit4", "//third_party:truth", + "//tools/test/LcovMerger/java/com/google/devtools/lcovmerger:Constants", "//tools/test/LcovMerger/java/com/google/devtools/lcovmerger:Coverage", - "//tools/test/LcovMerger/java/com/google/devtools/lcovmerger:LcovConstants", "//tools/test/LcovMerger/java/com/google/devtools/lcovmerger:LcovPrinter", "//tools/test/LcovMerger/java/com/google/devtools/lcovmerger:SourceFileCoverage", ], @@ -58,14 +61,31 @@ java_test( "//third_party:guava", "//third_party:junit4", "//third_party:truth", + "//tools/test/LcovMerger/java/com/google/devtools/lcovmerger:Constants", "//tools/test/LcovMerger/java/com/google/devtools/lcovmerger:Coverage", - "//tools/test/LcovMerger/java/com/google/devtools/lcovmerger:LcovConstants", "//tools/test/LcovMerger/java/com/google/devtools/lcovmerger:LcovParser", "//tools/test/LcovMerger/java/com/google/devtools/lcovmerger:SourceFileCoverage", ], ) java_test( + name = "GcovParserTest", + srcs = ["GcovParserTest.java"], + deps = [ + ":LcovMergerTestUtils", + "//third_party:guava", + "//third_party:junit4", + "//third_party:truth", + "//tools/test/LcovMerger/java/com/google/devtools/lcovmerger:BranchCoverage", + "//tools/test/LcovMerger/java/com/google/devtools/lcovmerger:Constants", + "//tools/test/LcovMerger/java/com/google/devtools/lcovmerger:Coverage", + "//tools/test/LcovMerger/java/com/google/devtools/lcovmerger:GcovParser", + "//tools/test/LcovMerger/java/com/google/devtools/lcovmerger:LineCoverage", + "//tools/test/LcovMerger/java/com/google/devtools/lcovmerger:SourceFileCoverage", + ], +) + +java_test( name = "CoverageTest", srcs = ["CoverageTest.java"], deps = [ @@ -85,6 +105,7 @@ java_test( ":LcovMergerTestUtils", "//third_party:junit4", "//third_party:truth", + "//tools/test/LcovMerger/java/com/google/devtools/lcovmerger:Constants", "//tools/test/LcovMerger/java/com/google/devtools/lcovmerger:MainLibrary", ], ) diff --git a/tools/test/LcovMerger/javatests/com/google/devtools/lcovmerger/BranchCoverageTest.java b/tools/test/LcovMerger/javatests/com/google/devtools/lcovmerger/BranchCoverageTest.java index 2e0056e700..85003ef1d7 100644 --- a/tools/test/LcovMerger/javatests/com/google/devtools/lcovmerger/BranchCoverageTest.java +++ b/tools/test/LcovMerger/javatests/com/google/devtools/lcovmerger/BranchCoverageTest.java @@ -30,59 +30,41 @@ public class BranchCoverageTest { private static final int BRANCH1_LINE_NR = 10; private static final String BRANCH1_BLOCK_NR = "3"; private static final String BRANCH1_BRANCH_NR = "2"; - private static final boolean BRANCH1_WAS_EXECUTED = false; private static final int BRANCH1_NR_EXECUTIONS = 0; - private static final boolean BRANCH1_OTHER_TRACEFILE_WAS_EXECUTED = true; private static final int BRANCH1_OTHER_TRACEFILE_NR_EXECUTIONS = 5; private static final int BRANCH2_LINE_NR = 20; private static final String BRANCH2_BLOCK_NR = "7"; private static final String BRANCH2_BRANCH_NR = "2"; - private static final boolean BRANCH2_WAS_EXECUTED = false; private static final int BRANCH2_NR_EXECUTIONS = 0; - private static final boolean BRANCH2_OTHER_TRACEFILE_WAS_EXECUTED = false; private static final int BRANCH2_OTHER_TRACEFILE_NR_EXECUTIONS = 0; static final BranchCoverage getBranch1CoverageData() { - return BranchCoverage.create( - BRANCH1_LINE_NR, - BRANCH1_BLOCK_NR, - BRANCH1_BRANCH_NR, - BRANCH1_WAS_EXECUTED, - BRANCH1_NR_EXECUTIONS - ); + return BranchCoverage.createWithBlockAndBranch( + BRANCH1_LINE_NR, BRANCH1_BLOCK_NR, BRANCH1_BRANCH_NR, BRANCH1_NR_EXECUTIONS); } static final BranchCoverage getBranch2CoverageData() { - return BranchCoverage.create( - BRANCH2_LINE_NR, - BRANCH2_BLOCK_NR, - BRANCH2_BRANCH_NR, - BRANCH2_WAS_EXECUTED, - BRANCH2_NR_EXECUTIONS - ); + return BranchCoverage.createWithBlockAndBranch( + BRANCH2_LINE_NR, BRANCH2_BLOCK_NR, BRANCH2_BRANCH_NR, BRANCH2_NR_EXECUTIONS); } static final BranchCoverage getBranch1OtherTracefileCoverageData() { - return BranchCoverage.create( + return BranchCoverage.createWithBlockAndBranch( BRANCH1_LINE_NR, BRANCH1_BLOCK_NR, BRANCH1_BRANCH_NR, - BRANCH1_OTHER_TRACEFILE_WAS_EXECUTED, - BRANCH1_OTHER_TRACEFILE_NR_EXECUTIONS - ); + BRANCH1_OTHER_TRACEFILE_NR_EXECUTIONS); } static final BranchCoverage getBranch2OtherTracefileCoverageData() { - return BranchCoverage.create( + return BranchCoverage.createWithBlockAndBranch( BRANCH2_LINE_NR, BRANCH2_BLOCK_NR, BRANCH2_BRANCH_NR, - BRANCH2_OTHER_TRACEFILE_WAS_EXECUTED, - BRANCH2_OTHER_TRACEFILE_NR_EXECUTIONS - ); + BRANCH2_OTHER_TRACEFILE_NR_EXECUTIONS); } @Test @@ -109,7 +91,7 @@ public class BranchCoverageTest { assertThat(merged.wasExecuted()).isFalse(); assertThat(merged.nrOfExecutions()).isEqualTo(0); } - + @Test public void testMergeBranch1Branch2AssertationError() { BranchCoverage branch1 = getBranch1CoverageData(); @@ -121,36 +103,4 @@ public class BranchCoverageTest { } fail(); } - - @Test - public void testcreateBranchCoverageDataInvalidWasExecutedTrue() { - try { - BranchCoverage.create( - BRANCH1_LINE_NR, - BRANCH1_BLOCK_NR, - BRANCH1_BRANCH_NR, - true, - 0 - ); - } catch (AssertionError er) { - return; - } - fail(); - } - - @Test - public void testcreateBranchCoverageDataInvalidWasExecutedFalse() { - try { - BranchCoverage.create( - BRANCH1_LINE_NR, - BRANCH1_BLOCK_NR, - BRANCH1_BRANCH_NR, - false, - 10 - ); - } catch (AssertionError er) { - return; - } - fail(); - } } diff --git a/tools/test/LcovMerger/javatests/com/google/devtools/lcovmerger/GcovParserTest.java b/tools/test/LcovMerger/javatests/com/google/devtools/lcovmerger/GcovParserTest.java new file mode 100644 index 0000000000..85b069ef0e --- /dev/null +++ b/tools/test/LcovMerger/javatests/com/google/devtools/lcovmerger/GcovParserTest.java @@ -0,0 +1,129 @@ +// Copyright 2018 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.devtools.lcovmerger; + +import static com.google.common.truth.Truth.assertThat; +import static java.nio.charset.StandardCharsets.UTF_8; + +import com.google.common.base.Joiner; +import com.google.common.collect.ImmutableList; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.util.List; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +/** Unit tests for {@GcovParser}. */ +@RunWith(JUnit4.class) +public class GcovParserTest { + + private static final ImmutableList<String> GCOV_INFO_FILE = + ImmutableList.of( + "version: 8.1.0 20180103", + "cwd:/home/gcc/testcase", + "file:tmp.cpp", + "function:7,7,0,_ZN3FooIcEC2Ev", + "function:7,7,1,_ZN3FooIiEC2Ev", + "function:8,8,0,_ZN3FooIcE3incEv", + "function:8,8,2,_ZN3FooIiE3incEv", + "function:18,37,1,main", + "lcount:7,0,1", + "lcount:7,1,0", + "lcount:8,0,1", + "lcount:8,2,0", + "lcount:18,1,0", + "lcount:21,1,0", + "branch:21,taken", + "branch:21,nottaken", + "lcount:23,1,0", + "branch:23,taken", + "branch:23,nottaken", + "lcount:24,1,0", + "branch:24,taken", + "branch:24,nottaken", + "lcount:25,1,0", + "lcount:27,11,0", + "branch:27,taken", + "branch:27,taken", + "lcount:28,10,0", + "lcount:30,1,1", + "branch:30,nottaken", + "branch:30,taken", + "lcount:32,1,0", + "branch:32,nottaken", + "branch:32,taken", + "lcount:33,0,1", + "branch:33,notexec", + "branch:33,notexec", + "lcount:35,1,0", + "branch:35,taken", + "branch:35,nottaken", + "lcount:36,1,0"); + + @Test(expected = IOException.class) + public void testParseInvalidFile() throws IOException { + GcovParser.parse(new ByteArrayInputStream("Invalid gcov file".getBytes(UTF_8))); + } + + @Test + public void testParseTracefileWithOneSourcefile() throws IOException { + + List<SourceFileCoverage> sourceFiles = + GcovParser.parse( + new ByteArrayInputStream(Joiner.on("\n").join(GCOV_INFO_FILE).getBytes(UTF_8))); + assertThat(sourceFiles).hasSize(1); + assertGcovInfoFile(sourceFiles.get(0)); + } + + private void assertGcovInfoFile(SourceFileCoverage sourceFileCoverage) { + assertThat(sourceFileCoverage.sourceFileName()).isEqualTo("tmp.cpp"); + + assertThat(sourceFileCoverage.nrFunctionsFound()).isEqualTo(5); + assertThat(sourceFileCoverage.nrFunctionsHit()).isEqualTo(3); + assertThat(sourceFileCoverage.nrOfInstrumentedLines()).isEqualTo(14); + assertThat(sourceFileCoverage.nrOfLinesWithNonZeroExecution()).isEqualTo(13); + assertThat(sourceFileCoverage.nrBranchesFound()).isEqualTo(8); + assertThat(sourceFileCoverage.nrBranchesHit()).isEqualTo(7); + + assertThat(sourceFileCoverage.getAllLineExecution()) + .containsExactly( + LineCoverage.create(7, 1, null), + LineCoverage.create(8, 2, null), + LineCoverage.create(18, 1, null), + LineCoverage.create(21, 1, null), + LineCoverage.create(23, 1, null), + LineCoverage.create(24, 1, null), + LineCoverage.create(25, 1, null), + LineCoverage.create(27, 11, null), + LineCoverage.create(28, 10, null), + LineCoverage.create(30, 1, null), + LineCoverage.create(32, 1, null), + LineCoverage.create(33, 0, null), + LineCoverage.create(35, 1, null), + LineCoverage.create(36, 1, null)); + + assertThat(sourceFileCoverage.getAllBranches()) + .containsExactly( + BranchCoverage.create(21, 2), + BranchCoverage.create(23, 2), + BranchCoverage.create(24, 2), + BranchCoverage.create(27, 2), + BranchCoverage.create(30, 2), + BranchCoverage.create(32, 2), + BranchCoverage.create(33, 0), + BranchCoverage.create(35, 2)); + } +} diff --git a/tools/test/LcovMerger/javatests/com/google/devtools/lcovmerger/MainTest.java b/tools/test/LcovMerger/javatests/com/google/devtools/lcovmerger/MainTest.java index a6b99fb12e..e8a6c754bf 100644 --- a/tools/test/LcovMerger/javatests/com/google/devtools/lcovmerger/MainTest.java +++ b/tools/test/LcovMerger/javatests/com/google/devtools/lcovmerger/MainTest.java @@ -15,6 +15,7 @@ package com.google.devtools.lcovmerger; import static com.google.common.truth.Truth.assertThat; +import static com.google.devtools.lcovmerger.Constants.TRACEFILE_EXTENSION; import java.io.File; import java.io.IOException; @@ -41,7 +42,7 @@ public class MainTest { @Test public void testMainEmptyCoverageDir() { - assertThat(Main.getLcovTracefilesFromDir(coverageDir.toAbsolutePath().toString())).isEmpty(); + assertThat(Main.getCoverageFilesInDir(coverageDir.toAbsolutePath().toString())).isEmpty(); } @Test @@ -52,7 +53,8 @@ public class MainTest { Files.createTempFile(ccCoverageDir, "tracefile1", ".dat"); Files.createTempFile(javaCoverageDir, "tracefile2", ".dat"); - List<File> tracefiles = Main.getLcovTracefilesFromDir(coverageDir.toAbsolutePath().toString()); + List<File> coverageFiles = Main.getCoverageFilesInDir(coverageDir.toAbsolutePath().toString()); + List<File> tracefiles = Main.getFilesWithExtension(coverageFiles, TRACEFILE_EXTENSION); assertThat(tracefiles).hasSize(2); } } |