
    Vh                        d Z ddlmZ ddlZddlZddlZddlZddlmZm	Z	m
Z
mZmZmZmZ ddlmZ ddlmZ dd	lmZmZmZ dd
lmZmZ ddlmZ ddlmZ ddlmZ  G d de
      Z y)Sanity test for ansible-doc.    )annotationsN   )DOCUMENTABLE_PLUGINSMULTI_FILE_PLUGINSSanitySingleVersionSanityFailureSanitySuccessSanityTargetsSanityMessage   )
TestResult)
TestTarget)SubprocessErrordisplay	is_subdir)ansible_environmentintercept_python)SanityConfig)data_context)PythonConfigc                       e Zd ZdZddZddZy)AnsibleDocTestr   c                   t               j                  j                  j                         D cg c]  \  }}|t        v s| }}}|D cg c]s  t
        j                  j                  j                        d   dk(  rBt
        j                  j                  j                        dk7  rt        fd|D              ru c}S c c}}w c c}w )z\Return the given list of test targets, filtered to include only those relevant for the test.r   z.pyz__init__.pyc              3  J   K   | ]  }t        j                  |        y w)N)r   path).0r   targets     b/home/dcms/DCMS/lib/python3.12/site-packages/ansible_test/_internal/commands/sanity/ansible_doc.py	<genexpr>z0AnsibleDocTest.filter_targets.<locals>.<genexpr>=   s     N	&++t4Ns    #)
r   contentplugin_pathsitemsr   osr   splitextbasenameany)selftargetsplugin_typeplugin_pathr"   r   s        `r   filter_targetszAnsibleDocTest.filter_targets6   s    DPNDZDZDgDgDmDmDo  X(@[s~  CW  tW  X  X%, 677##FKK03u<GG$$V[[1]BNNN   	 Xs   C	C	A8Cc           	     
   | j                  |      }|j                  D cg c]  }|j                   }}t        j                  t
              }t        d      }t               j                  j                  j                         D ]C  \  }	}
|j                  |	|	      }	|j                  D cg c]%  }t        |j                  |
      s|j                  ' c}D ]  }t        j                  j                  ||
      j!                  t        j                  j"                        }t        j                  j%                  |d         d   }|j'                  d      r#t               j                  j(                  s|dd  }t               j                  j*                  dj-                  |d d |gz         z   }||	   j/                  |        F t1        |d	      }t2        D ]o  }|j                  |      sd
ddd|g}t               j                  j(                  rt               j                  j*                  nd}|j/                  |d d        	 t5        ||||d      \  }}d}|r*dt7        |||      z  }t?        | j                  |      c S |r%tA        jB                  |jE                         d       |r)dt7        ||      z  }t?        | j                  |      c S |jF                  rtI        jJ                  |      }g ||<   tM        |j                               D ]  \  }}|dk7  s||   j/                  |       ! ||   rm||= r g }tM        |      D ]  }dD ]  }d
d|g}||j/                  |       |jO                  tM        ||                	 t5        ||||d      \  }}d}|r,dt7        |||      z  }t?        | j                  |      c c S |r%tA        jB                  |jE                         d       |r%tQ        jR                  dd|      jE                         }|sdt7        ||      z  }t?        | j                  |      c c S   |jF                  rtU        | j                        S |jW                  ||      }|rt?        | j                  |      S tU        | j                        S c c}w c c}w # t6        $ r/}|j8                  }|j:                  }|j<                  }Y d }~d }~ww xY w# t6        $ r/}|j8                  }|j:                  }|j<                  }Y d }~d }~ww xY w)Nmodule)modulesr   _r   .F)colorzansible-docz-l--jsonz-tzansible.builtin.T)capturez%s)cmdstatusstderr)summaryr   )	verbosityz=Output on stderr from ansible-doc is considered an error.

%s)r8   UNDOCUMENTED)Nr4   z*\[WARNING]: [^ ]+ [^ ]+ has been removed\n )messages),load_processorincluder   collectionsdefaultdictlistdictr   r!   r"   r#   getr   namer$   relpathsplitsepr%   
startswith
collectionprefixjoinappendr   r   r   r   stdoutr8   r7   r	   r   infostripexplainjsonloadssortedextendresubr
   process_errors)r(   argsr)   pythonsettingsr   pathsdoc_targetsremap_typesr*   r+   plugin_file_pathplugin_partsplugin_nameplugin_fqcnenvdoc_typer6   rK   rN   r8   r7   exr9   plugin_list_jsonplugin_valueerror_messagesformat_options                               r   testzAnsibleDocTest.test@   s   &&t,+2??;;;,7,C,CD,I
 )5(>(>(K(K(Q(Q(S 	=$K%//+{CK?F$vVR[\b\g\gitRuV[[$v 	= !ww/?MSSTVT[T[T_T_` gg..|B/?@C))#.|~7M7M7X7X"-ab/K*n44;;chh|TWUWGX\g[hGh>iiK(//<	=	= "$e4* #	.Hx($dHdHE:F.:P:P:[:[//66as

6#2;''%5dFCVZ%[NFFF "_VTZ%[[G(GDDLL1=_bqru  E  cF  FG(GDD<<#'::f#5 (*H%178H8N8N8P1Q B-K#~5#H-44[AB #8,#H-G#	.J /1{+ 	EH!1 E$dH5 ,JJ}-

6+h"789'%5dFCVZ%[NFFF "_VTZ%[[G(GDDLL1=VV$QSUW]^ddfF_bqru  E  cF  FG(GDD7E	E< << ++!00G ^DDTYY''K < %w, ' 'YYFYYFYYF'P ' 'YYFYYFYYF'sA   S-S	SST	T$S>>T	T>$T99T>N)r)   list[TestTarget]returnrk   )rY   r   r)   r   rZ   r   rl   r   )__name__
__module____qualname____doc__r,   rj        r   r   r   3   s    &h(rr   r   )!rp   
__future__r   r@   rR   r$   rV   r<   r   r   r   r	   r
   r   r   rj   r   r   r   utilr   r   r   ansible_utilr   r   configr   datar   host_configsr   r   rq   rr   r   <module>ry      s]    " "   	 	   

u(( u(rr   