
    Vh	                        d Z ddlm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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 proper python syntax.    )annotationsN   )SanityMultipleVersionSanityMessageSanityFailureSanitySuccessSanityTargetsSanitySkippedTARGET_SANITY_ROOT   )
TestResult)
TestTarget)SubprocessErrordisplayparse_to_list_of_dict	is_subdir)run_command)SanityConfig)PythonConfigc                       e Zd ZdZddZddZy)CompileTestr   c                    |D cg c]J  }t         j                  j                  |j                        d   dk(  st        |j                  d      sI|L c}S c c}w )z\Return the given list of test targets, filtered to include only those relevant for the test.r   z.pybin)ospathsplitextr   )selftargetstargets      ^/home/dcms/DCMS/lib/python3.12/site-packages/ansible_test/_internal/commands/sanity/compile.pyfilter_targetszCompileTest.filter_targets/   sH    %,{60@0@0Ma0PTY0Y]fgmgrgrty]z{{{s   A
AAc                   |j                   r!t        | j                  |j                        S | j	                  ||j                        }|j
                  D cg c]  }|j                   }}|j                  t        j                  j                  t        dd      g}dj                  |      }t        j                  |d       	 t        |||d      \  }	}
d	}|
rt        |||
|	
      |j"                  r!t%        | j                  |j                        S d}t'        ||	      }|D cg c]?  }t)        |d   |d   j+                  dd      t-        |d         t-        |d               A }}|j/                  ||      }|r"t1        | j                  ||j                        S t%        | j                  |j                        S c c}w # t        $ r/}|j                  }	|j                  }
|j                   }Y d }~%d }~ww xY wc c}w )N)python_versioncompilez
compile.py
   )	verbosityT)datacapturer   )cmdstatusstderrstdoutzF^(?P<path>[^:]*):(?P<line>[0-9]+):(?P<column>[0-9]+): (?P<message>.*)$messager   z./ linecolumn)r/   r   r1   r2   )messagesr$   )prime_venvsr   nameversionload_processorincluder   r   joinr   r   infor   r   r.   r-   r,   explainr	   r   r   replaceintprocess_errorsr   )r   argsr   pythonsettingsr    pathsr+   r)   r.   r-   r,   expatternresultsrs                   r!   testzCompileTest.test3   s    6>>JJ&&tV^^<+2??;;;{{BGGLL);YUVyyTQ'	(stLNFFF !c&PVWW<< 6>>JJ['8 
  !iL6""4,QvYq{#	
   ))'59 WV^^\\TYYv~~FFM <  	YYFYYFYYF	s%   GG +AH	H$H  HN)r   list[TestTarget]returnrH   )r?   r   r   r
   r@   r   rI   r   )__name__
__module____qualname____doc__r"   rG        r!   r   r   ,   s    /|,GrO   r   )rM   
__future__r   r   r0   r   r   r   r	   r
   r   r   rG   r   r    r   utilr   r   r   r   util_commonr   configr   host_configsr   r   rN   rO   r!   <module>rU      sO    + " 	   
3G' 3GrO   