@@ -75,6 +75,9 @@ Property Hashes [ MultiDimensional ];
75
75
76
76
Property Monitor As TestCoverage .Utils .LineByLineMonitor [ InitialExpression = {##class (TestCoverage.Utils.LineByLineMonitor ).%New ()}, Private ];
77
77
78
+ /// keeps track of all the listeners that may need information broadcasted about the unit test progress
79
+ Property ListenerManager As TestCoverage .Listeners .ListenerManager ;
80
+
78
81
/// Runs unit tests that have been loaded, with code coverage enabled. <br />
79
82
/// Note that if coverage is to be tracked for lots of code, it may be necessary to increase the "gmheap" setting
80
83
/// (under Configuration - Additional Settings - Advanced Memory in the Management Portal). <br />
@@ -624,6 +627,7 @@ ClassMethod OnBeforeAllTests(manager As TestCoverage.Manager, dir As %String, By
624
627
Set tCoverageRoutines = $Get (userparam (" CoverageRoutines" ))
625
628
Set tCoverageDetail = $Get (userparam (" CoverageDetail" ))
626
629
Set tSourceNamespace = $Get (userparam (" SourceNamespace" ),$Namespace )
630
+ Set tListenerManager = $Get (userparam (" ListenerManager" ))
627
631
Set tProcessIDs = $Get (userparam (" ProcessIDs" ),$ListBuild ($Job ))
628
632
If (tProcessIDs = " *" ) {
629
633
Set tProcessIDs = " "
@@ -645,6 +649,7 @@ ClassMethod OnBeforeAllTests(manager As TestCoverage.Manager, dir As %String, By
645
649
Set manager .ProcessIDs = tProcessIDs
646
650
Set manager .Timing = tTiming
647
651
Do manager .SetCoverageTargets (tCoverageClasses ,tCoverageRoutines ,1 )
652
+ Set manager .ListenerManager = tListenerManager
648
653
If (tCoverageDetail '= " " ) {
649
654
If (tCoverageDetail '= +tCoverageDetail ) {
650
655
// If we were passed a display value...
@@ -680,6 +685,10 @@ ClassMethod OnBeforeAllTests(manager As TestCoverage.Manager, dir As %String, By
680
685
}
681
686
682
687
If (manager .CoverageDetail = 0 ) {
688
+ if (manager .ListenerManager ) {
689
+ set tObj = {" message" : " Starting tests" }
690
+ Do manager .ListenerManager .BroadCastToAll (tObj )
691
+ }
683
692
Set tSC = manager .StartCoverageTracking ()
684
693
$$$ThrowOnError(tSC )
685
694
}
@@ -698,6 +707,10 @@ ClassMethod OnAfterAllTests(manager As TestCoverage.Manager, dir As %String, ByR
698
707
Try {
699
708
If (manager .CoverageDetail = 0 ) {
700
709
Set tSC = manager .EndCoverageTracking ()
710
+ if (manager .ListenerManager ) {
711
+ set tObj = {" message" : " All tests complete" }
712
+ Do manager .ListenerManager .BroadCastToAll (tObj )
713
+ }
701
714
}
702
715
Do manager .Monitor .Stop ()
703
716
} Catch e {
@@ -734,9 +747,15 @@ Method OnBeforeTestSuite(dir As %String, suite As %String, testspec As %String,
734
747
Set ..CurrentTestSuite = $Case (suite ," " :" (root)" ,:suite )
735
748
Set ..CurrentTestClass = " "
736
749
Set ..CurrentTestMethod = " "
750
+ if (..ListenerManager ) {
751
+ set tObj = {" message" : " Starting test suite: " }
752
+ do tObj .%Set (" suite" , suite )
753
+ Do ..ListenerManager .BroadCastToAll (tObj )
754
+ }
737
755
If (..CoverageDetail = 1 ) {
738
756
Set tSC = ..StartCoverageTracking ()
739
757
}
758
+
740
759
} Catch e {
741
760
Set tSC = e .AsStatus ()
742
761
}
@@ -749,9 +768,15 @@ Method OnAfterTestSuite(dir As %String, suite As %String, testspec As %String, B
749
768
{
750
769
Set tSC = $$$OK
751
770
Try {
771
+
752
772
If (..CoverageDetail = 1 ) {
753
773
Set tSC = ..EndCoverageTracking ($Case (suite ," " :" (root)" ,:suite ))
754
774
}
775
+ if (..ListenerManager ) {
776
+ set tObj = {" message" : " Finished test suite: " }
777
+ do tObj .%Set (" suite" , suite )
778
+ Do ..ListenerManager .BroadCastToAll (tObj )
779
+ }
755
780
} Catch e {
756
781
Set tSC = e .AsStatus ()
757
782
}
@@ -766,6 +791,12 @@ Method OnBeforeTestCase(suite As %String, class As %String) As %Status
766
791
Try {
767
792
Set ..CurrentTestClass = class
768
793
Set ..CurrentTestMethod = " "
794
+ if (..ListenerManager ) {
795
+ set tObj = {" message" : " Starting test case: " }
796
+ do tObj .%Set (" suite" , suite )
797
+ do tObj .%Set (" class" , class )
798
+ Do ..ListenerManager .BroadCastToAll (tObj )
799
+ }
769
800
If (..CoverageDetail = 2 ) {
770
801
Set tSC = ..StartCoverageTracking ()
771
802
}
@@ -784,6 +815,12 @@ Method OnAfterTestCase(suite As %String, class As %String) As %Status
784
815
If (..CoverageDetail = 2 ) {
785
816
Set tSC = ..EndCoverageTracking (suite , class )
786
817
}
818
+ if (..ListenerManager ) {
819
+ set tObj = {" message" : " Finished test case: " }
820
+ do tObj .%Set (" suite" , suite )
821
+ do tObj .%Set (" class" , class )
822
+ Do ..ListenerManager .BroadCastToAll (tObj )
823
+ }
787
824
} Catch e {
788
825
Set tSC = e .AsStatus ()
789
826
}
@@ -797,6 +834,13 @@ Method OnBeforeOneTest(suite As %String, class As %String, method As %String) As
797
834
Set tSC = $$$OK
798
835
Try {
799
836
Set ..CurrentTestMethod = method
837
+ if (..ListenerManager ) {
838
+ set tObj = {" message" : " Starting test method: " }
839
+ do tObj .%Set (" suite" , suite )
840
+ do tObj .%Set (" class" , class )
841
+ do tObj .%Set (" method" , method )
842
+ Do ..ListenerManager .BroadCastToAll (tObj )
843
+ }
800
844
If (..CoverageDetail = 3 ) {
801
845
Set tSC = ..StartCoverageTracking ()
802
846
}
@@ -815,6 +859,13 @@ Method OnAfterOneTest(suite As %String, class As %String, method As %String) As
815
859
If (..CoverageDetail = 3 ) {
816
860
Set tSC = ..EndCoverageTracking (suite , class , method )
817
861
}
862
+ if (..ListenerManager ) {
863
+ set tObj = {" message" : " Finished test method: " }
864
+ do tObj .%Set (" suite" , suite )
865
+ do tObj .%Set (" class" , class )
866
+ do tObj .%Set (" method" , method )
867
+ Do ..ListenerManager .BroadCastToAll (tObj )
868
+ }
818
869
} Catch e {
819
870
Set tSC = e .AsStatus ()
820
871
}
0 commit comments