
    zi>                        d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
 ddlmZ ddlmZ  G d d          Zej        d	             Zd
 Z G d d          Z G d de          Z G d de          Z G d de          ZdS )z8Coverage controllers for use by pytest-cov and nose-cov.    N)CoverageData   )StringIO)cleanupc                   $    e Zd Zed             ZdS )	_NullFilec                     d S N )vs    \/var/www/tmov.alphamb/tmov_inventario/venv/lib/python3.11/site-packages/pytest_cov/engine.pywritez_NullFile.write   s        N)__name__
__module____qualname__staticmethodr   r   r   r   r   r      s-          \  r   r   c              #      K   t          | |          }	 t          | |t          j        |                     d V  t          | ||           d S # t          | ||           w xY wr
   )getattrsetattrcopy)objattrbackups      r   _backupr      so      S$F#T49V,,---T6"""""T6""""s   'A A!c                 F     t          j                    fd            }|S )Nc                    	 t          j                    }n# t          $ r d }Y nw xY wt          j        | j                   	  | g|R i ||t          j        |           S S # |t          j        |           w w xY wr
   )osgetcwdOSErrorchdirtopdir)selfargskwargsoriginal_cwdmeths       r   ensure_topdir_wrapperz-_ensure_topdir.<locals>.ensure_topdir_wrapper"   s    	 9;;LL 	  	  	   LLL	  		'4.t...v..'&&&& (|'&&&& (s    &&A& &A?)	functoolswraps)r'   r(   s   ` r   _ensure_topdirr+   !   s9    _T' ' ' ' ' ! r   c                       e Zd ZdZddZej        d             Zed             Z	ed             Z
ed             Zed             Zed	             Zed
             Zed             ZdS )CovControllerz0Base class for different plugin implementations.Nc                    || _         || _        || _        || _        || _        || _        || _        d| _        d| _        d| _	        t                      | _        g | _        t          j                    | _        d| _        dS )z8Get some common config used by multiple derived classes.N)
cov_source
cov_report
cov_config
cov_append
cov_branchconfignodeidcovcombining_cov	data_fileset
node_descsfailed_workersr   r   r"   is_collocated)r#   r/   r0   r1   r2   r3   r4   r5   s           r   __init__zCovController.__init__7   sw    $$$$$!%% ikk!r   c              #      K   t          j                    }t          j        | j                   d V  t          j        |           d S r
   )r   r   r!   r"   )r#   r&   s     r   ensure_topdirzCovController.ensure_topdirI   sB      y{{

r   c                 `    | j                                          |                                  d S r
   )r6   stop	unset_envr#   s    r   pausezCovController.pauseP   s'    r   c                 `    | j                                          |                                  d S r
   )r6   startset_envrC   s    r   resumezCovController.resumeU   s%    r   c                 (   | j         t          j        t          j        d<   n1t          j                            | j                   t          j        d<   t          j                            | j                  }t          j                            |          r|t          j        d<   nt          j        t          j        d<   t          j                            | j	        j
        j                  t          j        d<   | j        rdt          j        d<   dS dS )zPPut info about coverage into the env so that subprocesses can activate coverage.NCOV_CORE_SOURCECOV_CORE_CONFIGCOV_CORE_DATAFILEenabledCOV_CORE_BRANCH)r/   r   pathsepenvironjoinpathabspathr1   existsr6   r4   r8   r3   )r#   config_files     r   rG   zCovController.set_envZ   s     ?",.JBJ()),.JOODO,L,LBJ()goodo667>>+&& 	7,7BJ()),.JBJ()*,'//$(/:S*T*T
&'? 	6,5BJ()))	6 	6r   c                  F   t           j                            dd           t           j                            dd           t           j                            dd           t           j                            dd           t           j                            dd           dS )zRemove coverage info from env.rJ   NrK   rL   rN   COV_CORE_CONTEXT)r   rP   popr   r   r   rB   zCovController.unset_envj   s}     	
($///

($///

*D111

($///

)400000r   c                 D    d                     | d|dd         z            S )z"Return a description of this node.zplatform {}, python {}z%s.%s.%s-%s-%sN   )format)platformversion_infos     r   get_node_desczCovController.get_node_descs   s,     (..x9ILY[Z[Y[L\9\]]]r   c                     t          | d          r|                     ||           d S t          dt          |          z
  d          }|dz  }|dz  }||z   d| d|||z   z   d}|                     |           d S )NsepD       
)hasattrr`   maxlenr   )streamstxt	sep_totalsep_len	sep_extraouts          r   r`   zCovController.sepy   s    65!! 	JJq#Vc#hh.33I1nG!AI[FF3FFg	.A)BFFFCLLr   c                 Z
    d} j         sOt           j        d          5   j                            ddt                    cddd           S # 1 swxY w Y   t           j                  dk    r3                     |ddd                     j                              nF                     |dd	           t           j                  D ]}                     |d
|             j
        rX                     |dd           |                    d            j
        D ]$}|                    |j        j         d           %t           fddD                       rd j         v pdd|d}t           j         t                     od j                                         v }|                    d|pdi           t           j        d          5    j        j        d!i |}ddd           n# 1 swxY w Y   d j         v rՉ j         d         }t           j        d          5   j                            d|           ddd           n# 1 swxY w Y   t           j        d          5   j                            dt                    }ddd           n# 1 swxY w Y   |r|                    d| d           n|                    d           d j         v r j         d         }t           j        d          5   j                            d|          }ddd           n# 1 swxY w Y   |                    d| j        j        j        n| d           d j         v r j         d         }t           j        d          5   j                            d|          }ddd           n# 1 swxY w Y   |                    d| j        j        j        n| d           d j         v r j         d         }t           j        d          5   j                            d|          }ddd           n# 1 swxY w Y   |                    d| j        j        j        n|z             d j         v r j         d         }t           j        d          5   j                            d|            j                            dt                    }ddd           n# 1 swxY w Y   |                    d | j        j        j        n| d           |S )"zProduce coverage reports.Nr4   T)show_missingignore_errorsfiler   -z
coverage:  coveragerc   zcoverage: failed workerszlThe following workers failed to return coverage data, ensure that pytest-cov is installed on these workers.
rd   c              3   *   K   | ]}|j         v V  d S r
   )r0   ).0xr#   s     r   	<genexpr>z(CovController.summary.<locals>.<genexpr>   s*      FFqDO#FFFFFFr   )termterm-missingr{   zskip-coveredskip_coveredannotate)rq   	directory)rq   rr   z)Coverage annotated source written to dir z1Coverage annotated source written next to source
htmlzCoverage HTML written to dir xml)rq   outfilezCoverage XML written to file jsonz!Coverage JSON written to file %s
lcovzCoverage LCOV written to file r   )r0   r   r6   reportr   rg   r:   r`   rQ   sortedr;   r   gatewayidany
isinstancedictvaluesupdater}   html_reportr4   html_dir
xml_report
xml_outputjson_reportjson_outputlcov_reportlcov_output)	r#   rh   total	node_descnodeoptionsr|   annotate_diroutputs	   `        r   summaryzCovController.summary   s     	^8,, ^ ^xDS\]]^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ t1$$HHVS"Irwwt/G/G"I"IJJJJHHVS*---#DO44 6 6	n5555  	5HHVS"<===LL S T T T+ 5 53334444 FFFF-EFFFFF 		3!/4?!B Kt!% G
 &dot<<kSWSbSiSiSkSkAkLNNNL,@DABBB8,, 3 3'22'223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ((?:6L8,, N N!!!MMMN N N N N N N N N N N N N N N
 8,, L LdKKL L L L L L L L L L L L L L L SYYYYZZZZQRRR T_$$_V,F8,, S S,,46,RRS S S S S S S S S S S S S S SLLsU[Uc9Q9Qiosssttt DO##_U+F8,, P P++$+OOP P P P P P P P P P P P P P PLLuW]We9S9Skquuuvvv T_$$_V,F8,, Q Q,,4,PPQ Q Q Q Q Q Q Q Q Q Q Q Q Q QLL=`f`nA\A\tz{||| T_$$_V,F8,, L L$$4$HHH dKKL L L L L L L L L L L L L L L LLwY_Yg$(/:U:Umswwwxxxs   "AAAG66G:=G:,III5"J##J'*J'
L33L7:L7N>>OO Q		QQ*>S44S8;S8)NN)r   r   r   __doc__r=   
contextlibcontextmanagerr?   r+   rD   rH   rG   r   rB   r^   r`   r   r   r   r   r-   r-   4   s       ::" " " "$      ^   ^ 6 6 ^6 1 1 \1 ^ ^ \^
   \ U U ^U U Ur   r-   c                   >    e Zd ZdZed             Zed             ZdS )Centralz)Implementation for centralised operation.c                    t                       t          j        | j        | j        d| j                  | _        t          j        | j        | j        dt          j        	                    | j        j
        j                  | j                  | _        | j        s| j                                         | j                                         |                                  d S )NTsourcebranchdata_suffixrU   r   r   r   r8   rU   )r   ru   Coverager/   r3   r1   r6   r   rR   rS   r4   r8   r7   r2   eraserF   rG   rC   s    r   rF   zCentral.start   s    			$DO,0O1515B B B &.do6:o;?9;Ib9c9c;??	L L L  	HNNr   c                    |                                   | j                                         | j                                         | j        | _        | j                                         | j                                         | j                                         |                     t          j	        t          j
                  }| j                            |           dS )zSStop coverage, save data to file and set the list of coverage objects to report on.N)rB   r6   rA   saver7   loadcombiner^   sysr\   r]   r:   add)r#   r   s     r   finishzCentral.finish   s     	%&&s|S5EFF	I&&&&&r   N)r   r   r   r   r+   rF   r   r   r   r   r   r      sN        33  ^& ' ' ^' ' 'r   r   c                   J    e Zd ZdZed             Zd Zd Zed             ZdS )
DistMasterz&Implementation for distributed master.c                    t                       | j        rgt          j                            | j                  rCt          | j        j        d          r)| j        j        j        	                    | j                   t          j        | j        | j        d| j                  | _        d| j        _        d| j        _        d| j        _        t          j        | j        | j        dt          j                            | j        j        j                  | j                  | _        | j        s| j                                         | j                                         | j        g| j        j        j        d<   d S )NrsyncdirTr   Fr   r   )r   r1   r   rR   rT   re   r4   optionr   appendru   r   r/   r3   r6   _warn_no_data_warn_unimported_source_warn_preimported_sourcerS   r8   r7   r2   r   rF   r"   pathsrC   s    r   rF   zDistMaster.start  sD   			 ? 	Drw~~do>> 	Dt{):66 D"+224?CCC$DO,0O1515B B B "'+0(,1)%.do6:o;?9;Ib9c9c;??	L L L
  	HNN+/;-h'''r   c                     |j                             t          j                    | j        d |j        j        D             d           dS )zFWorkers need to know if they are collocated and what files have moved.c                 ,    g | ]}t          |          S r   )str)rw   roots     r   
<listcomp>z-DistMaster.configure_node.<locals>.<listcomp>)  s    &T&T&TTs4yy&T&T&Tr   )cov_master_hostcov_master_topdircov_master_rsync_rootsN)workerinputr   socketgethostnamer"   nodemanagerroots)r#   r   s     r   configure_nodezDistMaster.configure_node#  s[     	%133!%&T&TT=M=S&T&T&T!
 !
 	 	 	 	 	r   c                 0   t          |di           }d|vr| j                            |           dS d|v rdt          j                    t          j                    t          j        dd          |d         fz  }t          j
        | j        | j        || j                  }|                                 t          j        d	k     rQt!                      }|                    t%          |d                              |j                            |           nRt!          d
          }|                    |d                    |                                                    |           |                                 |                                 |d         }| j        j        j        d                             |           |j                                        }|                     |j        |j                  }	| j         !                    |	           dS )z#Collect data file name from worker.workeroutputcov_worker_node_idNcov_worker_dataz%s.%s.%06d.%sr   i?B r   rZ   r   T)no_diskcov_worker_pathr   )"r   r;   r   r   r   r   getpidrandomrandintru   r   r/   r3   r1   rF   r]   r   read_fileobjr   datar   loadsget_datarA   r   r6   r4   r   r   _rinfor^   r\   r:   r   )
r#   r   errorr   r   r6   r   rR   rinfor   s
             r   testnodedownzDistMaster.testnodedown,  s   
 ~r22v--&&t,,,F &&)"$$bikkq&))+,- K #4?+/?0;04A A AC IIKKK$v--#~~!!(62C+D"E"EFFF%%%%#D111

6"34555%%d+++HHJJJHHJJJ+,DHO!(+224888 ##%%&&u~u7IJJ	I&&&&&r   c                    | j                                          | j                                          | j        | _         | j                                          | j                                          | j                                          dS )zJCombines coverage data and sets the list of coverage objects to report on.N)r6   rA   r   r7   r   r   rC   s    r   r   zDistMaster.finishV  sb    
 	%r   N)	r   r   r   r   r+   rF   r   r   r   r   r   r   r   r     sm        008 8 ^84  (' (' ('T 	 	 ^	 	 	r   r   c                   D    e Zd ZdZed             Zed             Zd ZdS )
DistWorkerz'Implementation for distributed workers.c                 &   t                       t          j                    | j        j        d         k    o| j        | j        j        d         k    | _        | j        sY| j        j        d         | j        | j        fd| j        D             | _        | j        	                              | _        t          j        | j        | j        d| j                  | _        | j                                         |                                  d S )Nr   r   c                 <    g | ]}|                               S r   )replace)rw   r   master_topdirworker_topdirs     r   r   z$DistWorker.start.<locals>.<listcomp>t  s=     #B #B #B'- $*>>-#O#O #B #B #Br   Tr   )r   r   r   r4   r   r"   r<   r/   r1   r   ru   r   r3   r6   rF   rG   )r#   r   r   s    @@r   rF   zDistWorker.startf  s#    				 %022dk6MN_6`` Z"kT[-DEX-YY 	 ! 	T K34GHM KM*#B #B #B #B #B15#B #B #B"o55m]SSDO $DO,0O1515B B B 	r   c                    |                                   | j                                         | j        r/| j                                         | j        | j        j        d<   dS | j                                         | j                                         t          j
        dk     rBt                      }| j        j                            |           |                                }n+| j                                                                        }| j        j                            | j        | j        |d           dS )z8Stop coverage and send relevant info back to the master.r   r   )r   r   r   N)rB   r6   rA   r<   r   r5   r4   r   r   ru   r]   r   r   write_fileobjgetvaluer   dumpsr   r"   )r#   buffr   s      r   r   zDistWorker.finish  s    	 	 HMMOOO >B[DK$%9:::HHMMOOO $v--zz++D111}}x((**0022K$++#';&*k#'- -     r   c                     dS )z&Only the master reports so do nothing.Nr   )r#   rh   s     r   r   zDistWorker.summary  s	     	r   N)r   r   r   r   r+   rF   r   r   r   r   r   r   r   c  s^        11  ^2 ! ! ^!F    r   r   )r   r   r   r)   r   r   r   r   ru   coverage.datar   compatr   embedr   r   r   r   r+   r-   r   r   r   r   r   r   <module>r      s   > >          				   



  & & & & & &                    # # #! ! !&f f f f f f f fR%' %' %' %' %'m %' %' %'P[ [ [ [ [ [ [ [|D D D D D D D D D Dr   