Skip to content

Commit 89565a4

Browse files
add code coverage to toolbar of realtime reporter (all tests)
1 parent 6f5e7cb commit 89565a4

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,14 @@
2626
import java.awt.event.ActionListener;
2727
import java.awt.event.MouseAdapter;
2828
import java.awt.event.MouseEvent;
29+
import java.sql.Connection;
2930
import java.util.ArrayList;
31+
import java.util.HashSet;
3032
import java.util.List;
3133
import java.util.Map;
3234
import java.util.regex.Matcher;
3335
import java.util.regex.Pattern;
36+
import java.util.stream.Collectors;
3437

3538
import javax.swing.BorderFactory;
3639
import javax.swing.Box;
@@ -65,6 +68,7 @@
6568
import javax.swing.table.TableRowSorter;
6669

6770
import org.springframework.web.util.HtmlUtils;
71+
import org.utplsql.sqldev.coverage.CodeCoverageReporter;
6872
import org.utplsql.sqldev.dal.UtplsqlDao;
6973
import org.utplsql.sqldev.model.DatabaseTools;
7074
import org.utplsql.sqldev.model.LimitedLinkedHashMap;
@@ -689,6 +693,32 @@ private void initializeGUI() {
689693
worksheet.runTestAsync();
690694
});
691695
toolbar.add(rerunWorksheetButton);
696+
final ToolbarButton codeCoverageButton = new ToolbarButton(UtplsqlResources.getIcon("CODE_COVERAGE_ICON"));
697+
codeCoverageButton.setToolTipText(UtplsqlResources.getString("RUNNER_CODE_COVERAGE_TOOLTIP"));
698+
codeCoverageButton.setBorder(buttonBorder);
699+
codeCoverageButton.addActionListener(event -> {
700+
final Connection conn = DatabaseTools.getConnection(currentRun.getConnectionName());
701+
final UtplsqlDao dao = new UtplsqlDao(conn);
702+
final HashSet<String> testPackages = new HashSet<>();
703+
// create unique list of all test packages
704+
for (Test t : currentRun.getTests().values()) {
705+
testPackages.add(t.getOwnerName() + "." + t.getObjectName());
706+
}
707+
// add dependencies of every test package
708+
final HashSet<String> includeObjects = new HashSet<>();
709+
for (String testPackage : testPackages) {
710+
String[] obj = testPackage.split("\\.");
711+
includeObjects.addAll(dao.includes(obj[0], obj[1]));
712+
}
713+
// remove test packages
714+
for (String testPackage : testPackages) {
715+
includeObjects.remove(testPackage.toUpperCase());
716+
}
717+
final CodeCoverageReporter reporter = new CodeCoverageReporter(currentRun.getPathList(),
718+
includeObjects.stream().sorted().collect(Collectors.toList()), currentRun.getConnectionName());
719+
reporter.showParameterWindow();
720+
});
721+
toolbar.add(codeCoverageButton);
692722
toolbar.add(Box.createHorizontalGlue());
693723
runComboBoxModel = new DefaultComboBoxModel<>();
694724
runComboBox = new JComboBox<>(runComboBoxModel);

0 commit comments

Comments
 (0)