+
    9j)                         ^ RI t ^ RIt^ RIt^ RIHt  ! R R] P                  4      t]R8X  d   ] P                  ! 4        R# R# )    Nc                   N   a  ] tR t^t o R tR tR
R ltR tR tR t	R t
RtV tR	# )TestAggregateRegressionc                6   \         P                  P                  4        \         P                  P                  4        \         P                  P                  4        \         P
                  P                  4        \         P                  V n        \         P                  V n	        \         P                  V n        \         P                  V n        \         P                  V n        \         P"                  ! 4       V n        \&        P(                  P+                  V P$                  P,                  R 4      \         n        \&        P(                  P+                  V P$                  P,                  R4      \         n        \&        P.                  ! \         P                  4       \&        P.                  ! \         P                  4       \&        P(                  P+                  V P$                  P,                  R4      \         n
        \&        P(                  P+                  V P$                  P,                  R4      \         n        \&        P(                  P+                  V P$                  P,                  R4      \         n        \&        P.                  ! \         P                  4       R# )test_srcbenchmark_srczhistory.jsonzdashboard.mdadditional_outputN)arSCENARIOS_MAPclearSCENARIO_IDS_SEENQUARANTINED_INFOSCENARIO_ID_TO_TIERTEST_SRC_DIRorig_test_srcBENCHMARK_SRC_DIRorig_benchmark_srcHISTORY_JSONorig_history_jsonDASHBOARD_MDorig_dashboard_mdADDITIONAL_OUTPUT_DIRorig_additional_outputtempfileTemporaryDirectorytemp_dirospathjoinnamemakedirsselfs   &H/home/Messier82/projects/service-book/tools/test_aggregate_regression.pysetUpTestAggregateRegression.setUp   su   
 
""$
!!#
$$&  __"$"6"6!#!#&(&>&># !335'',,t}}'9'9:F!ww||DMM,>,>P
BOO$
B(()'',,t}}'9'9>J'',,t}}'9'9>J#%77<<0B0BDW#X 
B,,-    c                   V P                   \        n        V P                  \        n        V P
                  \        n        V P                  \        n        V P                  \        n
        V P                  P                  4        R # )N)r   r	   r   r   r   r   r   r   r   r   r   r   cleanupr!   s   &r#   tearDown TestAggregateRegression.tearDown"   sU    ,,#660000#'#>#> r&   c                   V'       d   \         P                  M\         P                  p\        P                  P                  WB4      p\        VR RR7      ;_uu_ 4       pVP                  V4       RRR4       V#   + '       g   i     T# ; i)wzutf-8)encodingN)r	   r   r   r   r   r   openwrite)r"   contentfilenameis_benchmarkdir_path	file_pathfs   &&&&   r#   write_kotlin_file)TestAggregateRegression.write_kotlin_file+   s^    +72''R__GGLL4	)S733qGGG 4 43s   A::B	c                T   R pV P                  V4       \        P                  ! 4        V P                  R\        P                  4       V P                  \        P                  R,          R,          R4       V P                  \        P                  R,          R,          R4       V P                  \        P                  R,          R,          4       V P                  R\        P                  4       V P                  \        P                  R,          R,          4       V P                  \        P                  R,          R,          R	,          R
4       V P                  \        P                  R,          R,          R,          R4       V P                  \        P                  R,          R,          R,          ^x4       V P                  R\        P                  4       V P                  \        P                  R,          R,          R4       V P                  \        P                  R,          R,          R4       V P                  R\        P                  4       V P                  R\        P                  4       V P                  \        P                  R,          R,          R4       R# )a  
        package com.yorvana.regression
        
        import com.yorvana.testsupport.tiers.Regression
        import com.yorvana.testsupport.tiers.RegressionFull
        import com.yorvana.testsupport.tiers.ScenarioId
        import com.yorvana.testsupport.tiers.Quarantined
        import org.junit.Test

        @Regression
        class FirstClassTest {
            @Test
            fun rV01_firstTest() = Unit
            
            @Quarantined(reason = "mixed-order", since = "2026-05-22", issue = 120)
            @Test
            fun rV02_secondTest() = Unit
        }
        
        @RegressionFull
        class SecondClassTest {
            @ScenarioId("CUSTOM-S01")
            @Test
            fun customScenarioTest() = Unit
            
            fun helperMethod() = Unit
        }
        
        class UnannotatedClass {
            @Test
            fun rV03_testInUnannotated() = Unit
        }
        z4com.yorvana.regression.FirstClassTest#rV01_firstTestscenario_idzR-V01tier
Regressionquarantinedz5com.yorvana.regression.FirstClassTest#rV02_secondTestq_metareasonzmixed-ordersincez
2026-05-22issuez9com.yorvana.regression.SecondClassTest#customScenarioTestz
CUSTOM-S01RegressionFullz3com.yorvana.regression.SecondClassTest#helperMethodz>com.yorvana.regression.UnannotatedClass#rV03_testInUnannotatedN)	r6   r	   parse_kotlin_sourcesassertInr
   assertEqualassertFalse
assertTrueassertNotIn)r"   kotlin_contents   & r#   *test_parse_kotlin_sources_multiple_classesBTestAggregateRegression.test_parse_kotlin_sources_multiple_classes2   s)    B 	~.
! 	LbN^N^_))*`abopryz))*`abhikwx))*`abopq 	MrO_O_`(()`abopq))*abcklmuv  yF  	G))*abcklmtu  xD  	E))*abcklmtuwz{ 	QSUScScd))*efgtu  xD  	E))*efgmn  qA  	B 	NPRP`P`a 	VXZXhXhi))*jklrs  vB  	Cr&   c                   R . RO/p^ p^ pVR ,           F:  pVR8X  d   ^ pMVR9   d
   V^,          pVR9   d   ^ pK(  VR8X  g   K1  V^,          pK<  	  V P                  V^4       V P                  V^4       R . RO/p^ p^ pVR ,           F:  pVR8X  d   ^ pMVR9   d
   V^,          pVR9   d   ^ pK(  VR8X  g   K1  V^,          pK<  	  V P                  V^4       V P                  V^4       R# )outcomes_historypassfailN)	rM   rM   skiprM   flakemissingrM   rN   rM   )rM   rP   )rN   rP   )rM   rP   rM   rM   rO   rM   )rD   )r"   statsconsec_greenconsec_passesoutcomestats2s   &     r#   test_streak_calculations0TestAggregateRegression.test_streak_calculationsq   s"     l
 /00G&  --!++ !F"" 1 	q)*  Q
 011G&  --!++ !F"" 2 	q)*r&   c                :   R pRpV P                  \        P                  ! W4      4       V RV 2pVP                  RR4      P                  RR4      P                  RR4      P                  RR4      P                  RR4      p\        P
                  P                  \        P                  RV R	24      p\        VR
4      ;_uu_ 4       pVP                  R4       RRR4       V P                  \        P                  ! W4      4       R#   + '       g   i     L7; i)z"com.yorvana.regression.ExampleTest
testMethod#[_]= zflake-z.txtr,   flakedN)rE   r	   check_flake_filereplacer   r   r   r   r.   r/   rF   )r"   	classname
methodnametest_keysanitized_keyflake_file_pathr5   s   &      r#   test_check_flake_file-TestAggregateRegression.test_check_flake_file   s    8	!
 	,,YCD  [*. ((c2::3DLLSRUV^^_bdghppqtvyz'',,r'?'?6-X\A]^/3''1GGH ( 	++IBC ('s   	D

D	c                   R pV P                  VRR7       \        P                  ! 4        V P                  R\        P                  4       V P                  R\        P                  4       V P                  R\        P                  4       V P                  R\        P                  4       V P                  R\        P                  4       V P                  R\        P                  4       \        P                  P                  4        Uu0 uF  q"P                  R	4      ^ ,          kK  	  ppV P                  V0 Rm4       R
# u upi )a  
        package com.yorvana.regression
        
        // This is a comment discussing some class which shouldn't match.
        /* Multi-line comment referring to class AnotherClass also ignored. */
        
        @Regression
        abstract class AbstractClassTest {
            @Test
            fun rV01_abstractTest() = Unit
        }
        
        sealed class SealedClass {
            @Test
            fun rV02_sealedTest() = Unit
        }
        
        open class OpenClass {
            @Test
            fun rV03_openTest() = Unit
        }
        
        @RegressionFull
        inner class InnerClassTest {
            @Test
            fun rV04_innerTest() = Unit
        }
        
        value class ValueClass {
            @Test
            fun rV05_valueTest() = Unit
        }
        
        class NormalClass {
            val someString = "This is a string literal containing the class word."
            @Test
            fun rV06_normalTest() = Unit
        }
        zClassRobustnessTest.kt)r1   z:com.yorvana.regression.AbstractClassTest#rV01_abstractTestz2com.yorvana.regression.SealedClass#rV02_sealedTestz.com.yorvana.regression.OpenClass#rV03_openTestz4com.yorvana.regression.InnerClassTest#rV04_innerTestz0com.yorvana.regression.ValueClass#rV05_valueTestz2com.yorvana.regression.NormalClass#rV06_normalTestr[   N>    com.yorvana.regression.OpenClass!com.yorvana.regression.ValueClass"com.yorvana.regression.NormalClass"com.yorvana.regression.SealedClass%com.yorvana.regression.InnerClassTest(com.yorvana.regression.AbstractClassTest)r6   r	   rB   rC   r
   keyssplitrD   )r"   rH   kparsed_classess   &   r#   0test_parse_kotlin_sources_class_regex_robustnessHTestAggregateRegression.test_parse_kotlin_sources_class_regex_robustness   s    &N 	~8PQ
! 	RTVTdTdeJBL\L\]FHXHXYLbN^N^_H"JZJZ[JBL\L\] 463C3C3H3H3JK3Ja''#,q//3JK *
 	 Ls    E)r   r   r   r   r   r   N)zTestFile.ktF)__name__
__module____qualname____firstlineno__r$   r)   r6   rI   rW   ri   rv   __static_attributes____classdictcell__)__classdict__s   @r#   r   r      s1     .4 =C~:+xD = =r&   r   __main__)
unittestr   r   tools.aggregate_regressionaggregate_regressionr	   TestCaser   rx   main r&   r#   <module>r      s>     	  'th// tl zMMO r&   