@@ -64,6 +64,9 @@ Property Hashes [ MultiDimensional ];
64
64
65
65
Property Monitor As TestCoverage .Utils .LineByLineMonitor [ InitialExpression = {##class (TestCoverage.Utils.LineByLineMonitor ).%New ()}, Private ];
66
66
67
+ /// keeps track of all the listeners that may need information broadcasted about the unit test progress
68
+ Property ListenerManager As TestCoverage .Listeners .ListenerManager ;
69
+
67
70
/// Runs unit tests that have been loaded, with code coverage enabled. <br />
68
71
/// Note that if coverage is to be tracked for lots of code, it may be necessary to increase the "gmheap" setting
69
72
/// (under Configuration - Additional Settings - Advanced Memory in the Management Portal). <br />
@@ -563,6 +566,7 @@ ClassMethod OnBeforeAllTests(manager As TestCoverage.Manager, dir As %String, By
563
566
Set tCoverageRoutines = $Get (userparam (" CoverageRoutines" ))
564
567
Set tCoverageDetail = $Get (userparam (" CoverageDetail" ))
565
568
Set tSourceNamespace = $Get (userparam (" SourceNamespace" ),$Namespace )
569
+ Set tListenerManager = $Get (userparam (" ListenerManager" ))
566
570
Set tProcessIDs = $Get (userparam (" ProcessIDs" ),$ListBuild ($Job ))
567
571
If (tProcessIDs = " *" ) {
568
572
Set tProcessIDs = " "
@@ -584,6 +588,7 @@ ClassMethod OnBeforeAllTests(manager As TestCoverage.Manager, dir As %String, By
584
588
Set manager .ProcessIDs = tProcessIDs
585
589
Set manager .Timing = tTiming
586
590
Do manager .SetCoverageTargets (tCoverageClasses ,tCoverageRoutines ,1 )
591
+ Set manager .ListenerManager = tListenerManager
587
592
If (tCoverageDetail '= " " ) {
588
593
If (tCoverageDetail '= +tCoverageDetail ) {
589
594
// If we were passed a display value...
@@ -637,6 +642,9 @@ ClassMethod OnAfterAllTests(manager As TestCoverage.Manager, dir As %String, ByR
637
642
Try {
638
643
If (manager .CoverageDetail = 0 ) {
639
644
Set tSC = manager .EndCoverageTracking ()
645
+ if (manager .ListenerManager ) {
646
+ Do manager .ListenerManager .BroadCastToAll (" All tests complete" )
647
+ }
640
648
}
641
649
Do manager .Monitor .Stop ()
642
650
} Catch e {
@@ -673,9 +681,13 @@ Method OnBeforeTestSuite(dir As %String, suite As %String, testspec As %String,
673
681
Set ..CurrentTestSuite = $Case (suite ," " :" (root)" ,:suite )
674
682
Set ..CurrentTestClass = " "
675
683
Set ..CurrentTestMethod = " "
684
+ if (..ListenerManager ) {
685
+ Do ..ListenerManager .BroadCastToAll (" Starting test suite: " _ suite )
686
+ }
676
687
If (..CoverageDetail = 1 ) {
677
688
Set tSC = ..StartCoverageTracking ()
678
689
}
690
+
679
691
} Catch e {
680
692
Set tSC = e .AsStatus ()
681
693
}
@@ -688,9 +700,13 @@ Method OnAfterTestSuite(dir As %String, suite As %String, testspec As %String, B
688
700
{
689
701
Set tSC = $$$OK
690
702
Try {
703
+
691
704
If (..CoverageDetail = 1 ) {
692
705
Set tSC = ..EndCoverageTracking ($Case (suite ," " :" (root)" ,:suite ))
693
706
}
707
+ if (..ListenerManager ) {
708
+ Do ..ListenerManager .BroadCastToAll (" Finished test suite: " _ suite )
709
+ }
694
710
} Catch e {
695
711
Set tSC = e .AsStatus ()
696
712
}
@@ -705,6 +721,9 @@ Method OnBeforeTestCase(suite As %String, class As %String) As %Status
705
721
Try {
706
722
Set ..CurrentTestClass = class
707
723
Set ..CurrentTestMethod = " "
724
+ if (..ListenerManager ) {
725
+ Do ..ListenerManager .BroadCastToAll (" Starting test case: " _ suite _ " /" _ class )
726
+ }
708
727
If (..CoverageDetail = 2 ) {
709
728
Set tSC = ..StartCoverageTracking ()
710
729
}
@@ -723,6 +742,9 @@ Method OnAfterTestCase(suite As %String, class As %String) As %Status
723
742
If (..CoverageDetail = 2 ) {
724
743
Set tSC = ..EndCoverageTracking (suite , class )
725
744
}
745
+ if (..ListenerManager ) {
746
+ Do ..ListenerManager .BroadCastToAll (" Starting test case: " _ suite _ " /" _ class )
747
+ }
726
748
} Catch e {
727
749
Set tSC = e .AsStatus ()
728
750
}
@@ -736,6 +758,9 @@ Method OnBeforeOneTest(suite As %String, class As %String, method As %String) As
736
758
Set tSC = $$$OK
737
759
Try {
738
760
Set ..CurrentTestMethod = method
761
+ if (..ListenerManager ) {
762
+ Do ..ListenerManager .BroadCastToAll (" Starting test method: " _ suite _ " /" _ class _ " /" _ method )
763
+ }
739
764
If (..CoverageDetail = 3 ) {
740
765
Set tSC = ..StartCoverageTracking ()
741
766
}
@@ -754,6 +779,9 @@ Method OnAfterOneTest(suite As %String, class As %String, method As %String) As
754
779
If (..CoverageDetail = 3 ) {
755
780
Set tSC = ..EndCoverageTracking (suite , class , method )
756
781
}
782
+ if (..ListenerManager ) {
783
+ Do ..ListenerManager .BroadCastToAll (" Finished test method: " _ suite _ " /" _ class _ " /" _ method )
784
+ }
757
785
} Catch e {
758
786
Set tSC = e .AsStatus ()
759
787
}
0 commit comments