@@ -117,6 +117,7 @@ public class RunnerPanel {
117
117
private JTable testOverviewTable ;
118
118
private JMenuItem testOverviewRunMenuItem ;
119
119
private JMenuItem testOverviewRunWorksheetMenuItem ;
120
+ private JMenuItem testOverviewCodeCoverageMenuItem ;
120
121
private JCheckBoxMenuItem showTestDescriptionCheckBoxMenuItem ;
121
122
private JCheckBoxMenuItem showWarningIndicatorCheckBoxMenuItem ;
122
123
private JCheckBoxMenuItem showInfoIndicatorCheckBoxMenuItem ;
@@ -200,6 +201,7 @@ private void resetDerived() {
200
201
testOverviewTable .getRowSorter ().setSortKeys (null );
201
202
testOverviewRunMenuItem .setEnabled (false );
202
203
testOverviewRunWorksheetMenuItem .setEnabled (false );
204
+ testOverviewCodeCoverageMenuItem .setEnabled (false );
203
205
testIdTextArea .setText (null );
204
206
testOwnerTextField .setText (null );
205
207
testPackageTextField .setText (null );
@@ -656,6 +658,42 @@ private JPanel makeLabelledCounterComponent(final JLabel label, final JComponent
656
658
groupPanel .setPreferredSize (dim );
657
659
return groupPanel ;
658
660
}
661
+
662
+ private void runCodeCoverage (boolean selectedOnly ) {
663
+ final Connection conn = DatabaseTools .getConnection (currentRun .getConnectionName ());
664
+ final UtplsqlDao dao = new UtplsqlDao (conn );
665
+ final List <String > pathList = new ArrayList <>();
666
+ final HashSet <String > testPackages = new HashSet <>();
667
+ if (selectedOnly ) {
668
+ // pathList and unique testPackages based on selected tests
669
+ for (final int rowIndex : testOverviewTable .getSelectedRows ()) {
670
+ final int row = testOverviewTable .convertRowIndexToModel (rowIndex );
671
+ final Test test = testOverviewTableModel .getTest (row );
672
+ final String path = test .getOwnerName () + "." + test .getObjectName () + "." + test .getProcedureName ();
673
+ pathList .add (path );
674
+ testPackages .add (test .getOwnerName () + "." + test .getObjectName ());
675
+ }
676
+ } else {
677
+ // pathList and unique testPackages based on currentRun
678
+ pathList .addAll (currentRun .getPathList ());
679
+ for (Test t : currentRun .getTests ().values ()) {
680
+ testPackages .add (t .getOwnerName () + "." + t .getObjectName ());
681
+ }
682
+ }
683
+ // add dependencies of every test package (one DB call per test package)
684
+ final HashSet <String > includeObjects = new HashSet <>();
685
+ for (String testPackage : testPackages ) {
686
+ String [] obj = testPackage .split ("\\ ." );
687
+ includeObjects .addAll (dao .includes (obj [0 ], obj [1 ]));
688
+ }
689
+ // remove test packages
690
+ for (String testPackage : testPackages ) {
691
+ includeObjects .remove (testPackage .toUpperCase ());
692
+ }
693
+ final CodeCoverageReporter reporter = new CodeCoverageReporter (pathList ,
694
+ includeObjects .stream ().sorted ().collect (Collectors .toList ()), currentRun .getConnectionName ());
695
+ reporter .showParameterWindow ();
696
+ }
659
697
660
698
private void initializeGUI () {
661
699
// Base panel containing all components
@@ -696,28 +734,7 @@ private void initializeGUI() {
696
734
final ToolbarButton codeCoverageButton = new ToolbarButton (UtplsqlResources .getIcon ("CODE_COVERAGE_ICON" ));
697
735
codeCoverageButton .setToolTipText (UtplsqlResources .getString ("RUNNER_CODE_COVERAGE_TOOLTIP" ));
698
736
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
- });
737
+ codeCoverageButton .addActionListener (event -> runCodeCoverage (false ));
721
738
toolbar .add (codeCoverageButton );
722
739
toolbar .add (Box .createHorizontalGlue ());
723
740
runComboBoxModel = new DefaultComboBoxModel <>();
@@ -908,6 +925,7 @@ private void initializeGUI() {
908
925
syncDetailTab ();
909
926
testOverviewRunMenuItem .setEnabled (true );
910
927
testOverviewRunWorksheetMenuItem .setEnabled (true );
928
+ testOverviewCodeCoverageMenuItem .setEnabled (true );
911
929
}
912
930
});
913
931
testOverviewTable .addMouseListener (new MouseAdapter () {
@@ -976,6 +994,9 @@ public Component getTableCellRendererComponent(final JTable table, final Object
976
994
worksheet .runTestAsync ();
977
995
});
978
996
testOverviewPopupMenu .add (testOverviewRunWorksheetMenuItem );
997
+ testOverviewCodeCoverageMenuItem = new JMenuItem (UtplsqlResources .getString ("MENU_CODE_COVERAGE_LABEL" ), UtplsqlResources .getIcon ("CODE_COVERAGE_ICON" ));
998
+ testOverviewCodeCoverageMenuItem .addActionListener (event -> runCodeCoverage (true ));
999
+ testOverviewPopupMenu .add (testOverviewCodeCoverageMenuItem );
979
1000
testOverviewPopupMenu .add (new JSeparator ());
980
1001
showSuccessfulTestsCheckBoxMenuItem = new JCheckBoxMenuItem (UtplsqlResources .getString ("PREF_SHOW_SUCCESSFUL_TESTS_LABEL" ).replace ("?" , "" ), true );
981
1002
showSuccessfulTestsCheckBoxMenuItem .addActionListener (event -> {
0 commit comments