@@ -709,6 +709,52 @@ private void runCodeCoverage(boolean selectedOnly) {
709
709
reporter .showParameterWindow ();
710
710
}
711
711
712
+ private void fixCountersAndUpdate () {
713
+ // fix incompleteTests
714
+ List <Test > incompleteTests = currentRun .getTests ().values ().stream ()
715
+ .filter (it -> it .getEndTime () == null && !it .isDisabled ()).collect (Collectors .toList ());
716
+ if (!incompleteTests .isEmpty ()) {
717
+ final Double now = (double ) System .currentTimeMillis ();
718
+ final String sysdate = UtplsqlRunner .getSysdate ();
719
+ for (Test test : incompleteTests ) {
720
+ // fix incomplete tests, see https://github.com/utPLSQL/utPLSQL-SQLDeveloper/issues/107
721
+ test .setEndTime (sysdate );
722
+ test .setExecutionTime ((now - currentRun .getStart ()) / 1000 );
723
+ test .setErrorStack (UtplsqlResources .getString ("RUNNER_MISSING_TEST_RESULT_MESSAGE" ));
724
+ test .getCounter ().setError (1 );
725
+ }
726
+ }
727
+ // recalculate counters and fix inconsistencies
728
+ currentRun .getCounter ().setSuccess (0 );
729
+ currentRun .getCounter ().setFailure (0 );
730
+ currentRun .getCounter ().setError (0 );
731
+ currentRun .getCounter ().setDisabled (0 );
732
+ currentRun .getCounter ().setWarning (0 );
733
+ for (Test test : currentRun .getTests ().values ()) {
734
+ if (test .isDisabled () && test .getCounter ().getDisabled () == 0 ) {
735
+ test .getCounter ().setDisabled (1 );
736
+ }
737
+ if (test .getFailedExpectations () != null && !test .getFailedExpectations ().isEmpty () && test .getCounter ().getFailure () == 0 ) {
738
+ test .getCounter ().setFailure (1 );
739
+ }
740
+ if (test .getErrorStack () != null && test .getCounter ().getError () == 0 ) {
741
+ test .getCounter ().setError (1 );
742
+ }
743
+ currentRun .getCounter ().setSuccess (currentRun .getCounter ().getSuccess () + test .getCounter ().getSuccess ());
744
+ currentRun .getCounter ().setFailure (currentRun .getCounter ().getFailure () + test .getCounter ().getFailure ());
745
+ currentRun .getCounter ().setError (currentRun .getCounter ().getError () + test .getCounter ().getError ());
746
+ currentRun .getCounter ().setDisabled (currentRun .getCounter ().getDisabled () + test .getCounter ().getDisabled ());
747
+ currentRun .getCounter ().setWarning (currentRun .getCounter ().getWarning () + test .getCounter ().getWarning ());
748
+ }
749
+ // terminate run
750
+ currentRun .setEndTime (UtplsqlRunner .getSysdate ());
751
+ double now = (double ) System .currentTimeMillis ();
752
+ currentRun .setExecutionTime ((now - currentRun .getStart ()) / 1000 );
753
+ currentRun .setCurrentTestNumber (0 );
754
+ // update run in GUI
755
+ update (currentRun .getReporterId ());
756
+ }
757
+
712
758
@ SuppressWarnings ("DuplicatedCode" )
713
759
private void initializeGUI () {
714
760
// Base panel containing all components
@@ -767,45 +813,18 @@ private void initializeGUI() {
767
813
if (currentRun .getConsumerConn () != null ) {
768
814
// Aborts JDBC Connection. Connection might still run in the background. That's expected.
769
815
DatabaseTools .abortConnection (currentRun .getConsumerConn ());
770
- for (Test test : currentRun .getTests ().values ()) {
771
- if (test .getEndTime () == null && !test .isDisabled ()) {
772
- test .setDisabled (true );
773
- test .getCounter ().setDisabled (1 );
774
- test .getCounter ().setWarning (1 );
775
- test .setWarnings (UtplsqlResources .getString ("RUNNER_STOP_TEST_MESSAGE" ));
776
- test .setStartTime (null );
777
- }
816
+ List <Test > notCompletedTests = currentRun .getTests ().values ().stream ()
817
+ .filter (it -> it .getTestNumber () >= currentRun .getCurrentTestNumber () && it .getEndTime () == null && !it .isDisabled ())
818
+ .collect (Collectors .toList ());
819
+ for (Test test : notCompletedTests ) {
820
+ test .setDisabled (true );
821
+ test .getCounter ().setDisabled (1 );
822
+ test .getCounter ().setWarning (1 );
823
+ test .setWarnings (UtplsqlResources .getString ("RUNNER_STOP_TEST_MESSAGE" ));
824
+ test .setStartTime (null );
778
825
}
779
- // recalculate counters and fix inconsistencies
780
- currentRun .getCounter ().setSuccess (0 );
781
- currentRun .getCounter ().setFailure (0 );
782
- currentRun .getCounter ().setError (0 );
783
- currentRun .getCounter ().setDisabled (0 );
784
- currentRun .getCounter ().setWarning (0 );
785
- for (Test test : currentRun .getTests ().values ()) {
786
- if (test .isDisabled () && test .getCounter ().getDisabled () == 0 ) {
787
- test .getCounter ().setDisabled (1 );
788
- }
789
- if (test .getFailedExpectations () != null && !test .getFailedExpectations ().isEmpty () && test .getCounter ().getFailure () == 0 ) {
790
- test .getCounter ().setFailure (1 );
791
- }
792
- if (test .getErrorStack () != null && test .getCounter ().getError () == 0 ) {
793
- test .getCounter ().setError (1 );
794
- }
795
- currentRun .getCounter ().setSuccess (currentRun .getCounter ().getSuccess () + test .getCounter ().getSuccess ());
796
- currentRun .getCounter ().setFailure (currentRun .getCounter ().getFailure () + test .getCounter ().getFailure ());
797
- currentRun .getCounter ().setError (currentRun .getCounter ().getError () + test .getCounter ().getError ());
798
- currentRun .getCounter ().setDisabled (currentRun .getCounter ().getDisabled () + test .getCounter ().getDisabled ());
799
- currentRun .getCounter ().setWarning (currentRun .getCounter ().getWarning () + test .getCounter ().getWarning ());
800
- }
801
- // terminate run
802
- currentRun .setEndTime (UtplsqlRunner .getSysdate ());
803
- double now = (double ) System .currentTimeMillis ();
804
- currentRun .setExecutionTime ((now - currentRun .getStart ()) / 1000 );
805
- currentRun .setCurrentTestNumber (0 );
806
826
currentRun .setStatus (UtplsqlResources .getString ("RUNNER_STOP_RUN_MESSAGE" ));
807
- // update run in GUI
808
- update (currentRun .getReporterId ());
827
+ fixCountersAndUpdate ();
809
828
}
810
829
});
811
830
stopButton .setEnabled (false );
@@ -871,6 +890,9 @@ private void initializeGUI() {
871
890
if (currentRun .getExecutionTime () != null ) {
872
891
time .setSeconds (currentRun .getExecutionTime ());
873
892
elapsedTimeTimer .stop ();
893
+ if (!currentRun .getTotalNumberOfTests ().equals (currentRun .getTotalNumberOfCompletedTests ())) {
894
+ fixCountersAndUpdate ();
895
+ }
874
896
} else {
875
897
final Double now = (double ) System .currentTimeMillis ();
876
898
time .setSeconds ((now - currentRun .getStart ()) / 1000 );
0 commit comments