diff options
Diffstat (limited to 'org.jacoco.cli.test/src/org/jacoco/cli/internal/commands/ReportTest.java')
-rw-r--r-- | org.jacoco.cli.test/src/org/jacoco/cli/internal/commands/ReportTest.java | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/org.jacoco.cli.test/src/org/jacoco/cli/internal/commands/ReportTest.java b/org.jacoco.cli.test/src/org/jacoco/cli/internal/commands/ReportTest.java new file mode 100644 index 00000000..e5385ee5 --- /dev/null +++ b/org.jacoco.cli.test/src/org/jacoco/cli/internal/commands/ReportTest.java @@ -0,0 +1,142 @@ +/******************************************************************************* + * Copyright (c) 2009, 2017 Mountainminds GmbH & Co. KG and Contributors + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Marc R. Hoffmann - initial API and implementation + * + *******************************************************************************/ +package org.jacoco.cli.internal.commands; + +import static org.junit.Assert.assertTrue; + +import java.io.File; +import java.io.FileOutputStream; + +import org.jacoco.cli.internal.CommandTestBase; +import org.jacoco.core.data.ExecutionData; +import org.jacoco.core.data.ExecutionDataWriter; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; + +/** + * Unit tests for {@link Report}. + */ +public class ReportTest extends CommandTestBase { + + @Rule + public TemporaryFolder tmp = new TemporaryFolder(); + + @Test + public void should_print_usage_when_no_options_are_given() + throws Exception { + execute("report"); + + assertFailure(); + assertContains("Option \"-classfiles\" is required", err); + assertContains( + "Usage: java -jar jacococli.jar report [<execfiles> ...]", err); + } + + @Test + public void should_print_number_of_analyzed_classes() throws Exception { + execute("report", "-classfiles", getClassPath()); + + assertOk(); + assertContains("[INFO] Writing report with 14 classes.", out); + } + + @Test + public void should_print_warning_when_exec_data_does_not_match() + throws Exception { + File exec = new File(tmp.getRoot(), "jacoco.exec"); + final FileOutputStream execout = new FileOutputStream(exec); + ExecutionDataWriter writer = new ExecutionDataWriter(execout); + // Add probably invalid id for this test class: + writer.visitClassExecution( + new ExecutionData(0x123, getClass().getName().replace('.', '/'), + new boolean[] { true })); + execout.close(); + + execute("report", exec.getAbsolutePath(), "-classfiles", + getClassPath()); + + assertOk(); + assertContains("[WARN] Some classes do not match with execution data.", + out); + assertContains( + "[WARN] For report generation the same class files must be used as at runtime.", + out); + assertContains( + "[WARN] Execution data for class org/jacoco/cli/internal/commands/ReportTest does not match.", + out); + } + + @Test + public void should_create_xml_report_when_xml_option_is_provided() + throws Exception { + File xml = new File(tmp.getRoot(), "coverage.xml"); + + execute("report", "-classfiles", getClassPath(), "-xml", + xml.getAbsolutePath()); + + assertOk(); + assertTrue(xml.isFile()); + } + + @Test + public void should_create_csv_report_when_csv_option_is_provided() + throws Exception { + File csv = new File(tmp.getRoot(), "coverage.csv"); + + execute("report", "-classfiles", getClassPath(), "-csv", + csv.getAbsolutePath()); + + assertOk(); + assertTrue(csv.isFile()); + } + + @Test + public void should_create_html_report_when_html_option_is_provided() + throws Exception { + File html = new File(tmp.getRoot(), "coverage"); + + execute("report", "-classfiles", getClassPath(), "-sourcefiles", + "./src", "-html", html.getAbsolutePath()); + + assertOk(); + assertTrue(html.isDirectory()); + assertTrue(new File(html, + "org.jacoco.cli.internal.commands/ReportTest.html").isFile()); + assertTrue(new File(html, + "org.jacoco.cli.internal.commands/ReportTest.java.html") + .isFile()); + } + + @Test + public void should_use_all_values_when_multiple_classfiles_options_are_provided() + throws Exception { + File html = new File(tmp.getRoot(), "coverage"); + + final String c1 = getClassPath() + + "/org/jacoco/cli/internal/commands/ReportTest.class"; + final String c2 = getClassPath() + + "/org/jacoco/cli/internal/commands/DumpTest.class"; + + execute("report", "-classfiles", c1, "-classfiles", c2, "-html", + html.getAbsolutePath()); + + assertOk(); + assertTrue(html.isDirectory()); + assertTrue(new File(html, + "org.jacoco.cli.internal.commands/ReportTest.html").isFile()); + assertTrue( + new File(html, "org.jacoco.cli.internal.commands/DumpTest.html") + .isFile()); + } + +} |