
    ڕ h                         d dl Z d dlmZ d dlmZ d dlmZmZ  G d d      Z G d d      Z	 G d	 d
      Z
 edg d      Z G d d      Z G d d      Z G d de      Z G d d      Zy)    N)abstractmethod)
namedtuple)utilscoveragec                   ^    e Zd Zed        Zed        Zed        Zedd       Zed        Zy)BaseTestSuitec                      y N )selftest_moduletarget_tests      /home/xtuchyna/.var/app/com.visualstudio.code/data/virtualenvs/gen-test-bench-v8TMe8KL/lib/python3.12/site-packages/mutpy/test_runners/base.py	add_testszBaseTestSuite.add_tests	           c                      y r
   r   r   tests     r   	skip_testzBaseTestSuite.skip_test   r   r   c                      y r
   r   r   s    r   runzBaseTestSuite.run   r   r   Nc                      y r
   r   )r   coverage_injectors     r   run_with_coveragezBaseTestSuite.run_with_coverage   r   r   c                      y r
   r   r   s    r   __iter__zBaseTestSuite.__iter__   r   r   r
   )	__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r      sd             r   r   c                       e Zd Zed        Zy)BaseTestc                      y r
   r   r   s    r   __repr__zBaseTest.__repr__    r   r   N)r   r    r!   r   r%   r   r   r   r#   r#      s     r   r#   c                   0     e Zd Zdd fd
Zd Zd Z xZS )CoverageTestResultNr   c                ~    t        |   |i | || _        |j                  j	                         | _        i | _        y r
   )super__init__r   covered_nodescopyalways_covered_nodestest_covered_nodesr   r   argskwargs	__class__s       r   r+   zCoverageTestResult.__init__'   s<    $)&)!2$5$C$C$H$H$J!"$r   c                     | j                   j                  j                         | _        | j                   j                  j                          y r
   )r   r,   r-   clearr   s    r   start_measure_coveragez)CoverageTestResult.start_measure_coverage-   s7    !33AAFFH,,224r   c                     | j                   j                  j                         | j                  z  | j                  t        |      <   | j                   j                  j                  | j                         y r
   )r   r,   r-   r.   r/   reprupdater   s     r   stop_measure_coveragez(CoverageTestResult.stop_measure_coverage1   sW    .2.D.D.R.R.W.W.Y\`\u\u.uT
+,,33D4F4FGr   )r   r    r!   r+   r6   r:   __classcell__r3   s   @r   r'   r'   %   s    04 %5Hr   r'   SerializableMutationTestResult)is_incompetentis_survivedkillerexception_traceback	exception	tests_runc                   x     e Zd Zdd fd
Zd Zd Zd Zd Zd Zd	 Z	d
 Z
d Zd Zd Zd Zd Zd Zd Z xZS )MutationTestResultNr(   c                    t        t        | 
  |i | || _        g | _        g | _        d | _        g | _        i | _        y r
   )	r*   rE   r+   r   passedfailed
type_errorskipped
test_orderr0   s       r   r+   zMutationTestResult.__init__C   sE     $0$A&A!2 r   c                 X    t        | j                        dk(  xr | j                          S )Nr   )lenrH   r>   r   s    r   was_successfulz!MutationTestResult.was_successfulN   s'    4;;1$BT-@-@-B)BBr   c                 ,    t        | j                        S r
   )boolrI   r   s    r   r>   z!MutationTestResult.is_incompetentQ   s    DOO$$r   c                 "    | j                         S r
   )rN   r   s    r   r?   zMutationTestResult.is_survivedT   s    ""$$r   c                 6    | j                   r| j                   S g S r
   )rH   r   s    r   _get_killerzMutationTestResult._get_killerX   s    ;;;;	r   c                 &    | j                         }|S r
   )rS   )r   r@   s     r   
get_killerzMutationTestResult.get_killer^   s    !!#r   c                 f    | j                         }|r|D cg c]  }|j                   c}S y c c}w r
   )rS   long_message)r   r@   xs      r   get_exception_tracebackz*MutationTestResult.get_exception_tracebackd   s4    !!#,23FqANNF33 3s   .c                     | j                   S r
   rI   r   s    r   get_exceptionz MutationTestResult.get_exceptioni   s    r   c                 X    t        | j                        t        | j                        z   S r
   )rM   rG   rH   r   s    r   rC   zMutationTestResult.tests_runl   s    4;;#dkk"222r   c                 ,    t        | j                        S r
   )rM   rJ   r   s    r   tests_skippedz MutationTestResult.tests_skippedo   s    4<<  r   c           
          t        | j                         | j                         | j                         t	        | j                               | j                         | j                         | j                         z
        S r
   )	r=   r>   r?   rU   strrY   r\   rC   r_   r   s    r   	serializezMutationTestResult.serializer   sf    -!OO,,./ NNt1133
 	
r   c                     || _         y r
   r[   )r   errs     r   set_type_errorz!MutationTestResult.set_type_error}   s	    r   c                 L    | j                   j                  t        |             y r
   )rG   appendTestInfor   names     r   
add_passedzMutationTestResult.add_passed   s    8D>*r   c                 L    | j                   j                  t        |             y r
   )rJ   rg   rh   ri   s     r   add_skippedzMutationTestResult.add_skipped   s    HTN+r   c                 P    | j                   j                  t        |||             y r
   )rH   rg   TestFailure)r   rj   short_messagerW   s       r   
add_failedzMutationTestResult.add_failed   s    ;t]LIJr   )r   r    r!   r+   rN   r>   r?   rS   rU   rY   r\   rC   r_   rb   re   rk   rm   rq   r;   r<   s   @r   rE   rE   B   sS    04 	C%%4
3!	
+,Kr   rE   c                       e Zd Zd Zy)rh   c                     || _         y r
   )rj   ri   s     r   r+   zTestInfo.__init__   s	    	r   N)r   r    r!   r+   r   r   r   rh   rh      s    r   rh   c                        e Zd Z fdZ xZS )ro   c                 @    t         |   |       || _        || _        y r
   )r*   r+   rp   rW   )r   rj   rp   rW   r3   s       r   r+   zTestFailure.__init__   s     *(r   )r   r    r!   r+   r;   r<   s   @r   ro   ro      s    ) )r   ro   c                   j    e Zd ZdZd Zd Zd Zej                  d        Z	d Z
d Zd Zd	 Zd
 Zd Zy)BaseTestRunnerNc                 f    || _         || _        || _        || _        | j	                         | _        y r
   )test_loadertimeout_factorstdout_managermutate_coveredfind_init_modulesinit_modules)r   ry   rz   r{   r|   s        r   r+   zBaseTestRunner.__init__   s3    &,,, 224r   c                 "    | j                         S r
   )test_suite_clsr   s    r   create_empty_test_suitez&BaseTestRunner.create_empty_test_suite   s    ""$$r   c                    t        | j                  t              s)t        dj	                  | j                  t                    | j                         }t        j                  |      }| j                  j                         D ](  \  }}|j                  |       |j                  ||       * t        j                  |      }|j                          |S )Nz{0} is not a subclass of {1})
issubclassr   r   
ValueErrorformatr   r   ModuleInjectorry   load	inject_tor   InjectImporterinstall)r   mutant_modulesuiteinjectorr   r   importers          r   create_test_suitez BaseTestRunner.create_test_suite   s    $--}=;BB4CVCVXefgg,,.''6(,(8(8(=(=(?$K{+OOK5 )@ ''6r   c                     | j                  |      }|r| j                  |||       t        j                         }| j	                  ||      }|j                          ||j                  fS r
   )r   mark_not_covered_tests_as_skipr   Timerrun_mutation_test_runnerstopduration)r   total_durationr   	mutationscoverage_resultr   timerresults           r   run_tests_with_mutantz$BaseTestRunner.run_tests_with_mutant   s\    &&}5//	?ER..unE

u~~%%r   c                    | j                   |dkD  r|ndz  }t        j                         } ||      }| j                  5  |j	                          |j                  |      }|j                          d d d        |S # 1 sw Y   S xY w)N   r   )rz   r   get_mutation_test_runner_classr{   start
get_result	terminate)r   r   r   	live_timetest_runner_classtest_runnerr   s          r   r   z'BaseTestRunner.run_mutation_test_runner   s    ''^a=O>UVW	!@@B'e4   ++I6F!!# ! 	 ! s    2A<<Bc                    | j                   syt        j                         }|j                  ||j                        }| j                  |      }| j                  5  |j                  |      }d d d        ||fS # 1 sw Y   |fS xY w)N)NNr(   )r|   r   CoverageInjectorinjectr   r   r{   r   )r   
target_asttarget_moduler   coverage_moduler   r   s          r   inject_coveragezBaseTestRunner.inject_coverage   s    ""$557+22:}?U?UV&&7  #55HY5ZO ! /11 ! /11s   A::Bc                     | j                         }|j                  ||       t        j                         }| j                  5  |j                         }d d d        |j                         fS # 1 sw Y   xY wr
   )r   r   r   r   r{   r   r   )r   r   r   r   r   r   s         r   run_testzBaseTestRunner.run_test   s\    ,,.[1  YY[F !uzz|## ! s   A..A7c                     t        j                         } || j                               }|j                          |j	                          t        t        j                  j                               S )Nr   )	r   r   r   r   r   listsysmoduleskeys)r   r   r   s      r   r}   z BaseTestRunner.find_init_modules   sT    !@@B'd.J.J.LMCKK$$&''r   c                     t        t        j                  j                               D ]"  }|| j                  vst        j                  |= $ y r
   )r   r   r   r   r~   )r   modules     r   remove_loaded_modulesz$BaseTestRunner.remove_loaded_modules   s8    3;;++-.FT...KK' /r   c                     |D ch c]  }|j                   j                   }}|D ]L  }t        |      }||j                  v s|j	                  |j                  |         s<|j                  |       N y c c}w r
   )nodemarkerr8   r/   
isdisjointr   )r   r   r   r   mutationmutated_nodesr   test_ids           r   r   z-BaseTestRunner.mark_not_covered_tests_as_skip   sp    >GHi(--iHD4jG/<<<AYAY#66w?BA%	  Is   A6)r   r    r!   r   r+   r   r   r   TimeRegisterr   r   r   r   r}   r   r   r   r   r   rw   rw      sN    N5%
 & &2$((
&r   rw   )r   abcr   collectionsr   mutpyr   r   r   r#   r'   r=   rE   rh   ro   rw   r   r   r   <module>r      sw    
  " ! , H H" ",$ '	" FK FKR 
)( )R& R&r   