|
26 | 26 | import java.awt.event.ActionListener;
|
27 | 27 | import java.awt.event.MouseAdapter;
|
28 | 28 | import java.awt.event.MouseEvent;
|
| 29 | +import java.sql.Connection; |
29 | 30 | import java.util.ArrayList;
|
| 31 | +import java.util.HashSet; |
30 | 32 | import java.util.List;
|
31 | 33 | import java.util.Map;
|
32 | 34 | import java.util.regex.Matcher;
|
33 | 35 | import java.util.regex.Pattern;
|
| 36 | +import java.util.stream.Collectors; |
34 | 37 |
|
35 | 38 | import javax.swing.BorderFactory;
|
36 | 39 | import javax.swing.Box;
|
|
65 | 68 | import javax.swing.table.TableRowSorter;
|
66 | 69 |
|
67 | 70 | import org.springframework.web.util.HtmlUtils;
|
| 71 | +import org.utplsql.sqldev.coverage.CodeCoverageReporter; |
68 | 72 | import org.utplsql.sqldev.dal.UtplsqlDao;
|
69 | 73 | import org.utplsql.sqldev.model.DatabaseTools;
|
70 | 74 | import org.utplsql.sqldev.model.LimitedLinkedHashMap;
|
@@ -689,6 +693,32 @@ private void initializeGUI() {
|
689 | 693 | worksheet.runTestAsync();
|
690 | 694 | });
|
691 | 695 | 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); |
692 | 722 | toolbar.add(Box.createHorizontalGlue());
|
693 | 723 | runComboBoxModel = new DefaultComboBoxModel<>();
|
694 | 724 | runComboBox = new JComboBox<>(runComboBoxModel);
|
|
0 commit comments