
    Vh                        d Z ddlmZ ddlZddlmZ ddlmZm	Z	 ddl
mZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddZddZ G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zy)zExecute Ansible tests.    )annotationsN   )read_text_file)ApplicationWarningdisplay)get_ci_provider)categorize_changes)
TestConfig)ChangeDescription)	HostStatec                b   t        |       }| j                  j                  s5|rt        | || j                        }n
t               }|| j                  _        |g S |s
t               | j                  j                  j                  
t               | j                  j                  j                  S )zJReturn a list of targets which should be tested based on the changes made.)	detect_changesmetadatachange_descriptionr	   commandr   NoChangesDetectedtargetsNoTestsForChanges)argspathschangess      O/home/dcms/DCMS/lib/python3.12/site-packages/ansible_test/_internal/executor.pyget_changes_filterr   $   s    4 E==++(udllCG')G+2(}	!!}}''//7!!==++333    c                   | j                   rt               j                  |       }n\| j                  s| j                  rC| j                  xs g }| j                  r(|t        | j                        j                         z  }ny|yt        j                  dt        |      z         |D ]  }t        j                  |d        |S )zReturn a list of changed paths.NzDetected changes in %d file(s).r   )	verbosity)
changedr   r   changed_fromchanged_pathr   
splitlinesr   infolen)r   r   paths      r   r   r   <   s    ||!006			d//!!'R^D$5$56AACCE}LL2SZ?@ (TQ'( Lr   c                  $     e Zd ZdZd fdZ xZS )r   zIException when change detection was performed, but no changes were found.c                $    t         |   d       y )NzNo changes detected.super__init__self	__class__s    r   r(   zNoChangesDetected.__init__U       /0r   returnNone__name__
__module____qualname____doc__r(   __classcell__r+   s   @r   r   r   R   s    S1 1r   r   c                  $     e Zd ZdZd fdZ xZS )r   zBException when changes detected, but no tests trigger as a result.c                $    t         |   d       y )Nz$No tests found for detected changes.r&   r)   s    r   r(   zNoTestsForChanges.__init__\   s    ?@r   r-   r0   r6   s   @r   r   r   Y   s    LA Ar   r   c                  &     e Zd ZdZdd fdZ xZS )DelegatezTrigger command delegation.c                \    t         |           || _        |xs g | _        |xs g | _        y N)r'   r(   
host_stateexcluderequire)r*   r=   r>   r?   r+   s       r   r(   zDelegate.__init__c   s+    $}"}"r   )NN)r=   r   r>   	list[str]r?   r@   r.   r/   r0   r6   s   @r   r:   r:   `   s    %% %r   r:   c                  $     e Zd ZdZd fdZ xZS )ListTargetsz8List integration test targets instead of executing them.c                0    t         |           || _        y r<   )r'   r(   target_names)r*   rD   r+   s     r   r(   zListTargets.__init__n   s    (r   )rD   r@   r.   r/   r0   r6   s   @r   rB   rB   k   s    B) )r   rB   c                  $     e Zd ZdZd fdZ xZS )AllTargetsSkippedAll targets skipped.c                $    t         |   d       y )NrG   r&   r)   s    r   r(   zAllTargetsSkipped.__init__w   r,   r   r-   r0   r6   s   @r   rF   rF   t   s    1 1r   rF   )r   r
   r.   r@   )r   r
   r.   zt.Optional[list[str]])r4   
__future__r   typingtior   utilr   r   cir   classificationr	   configr
   r   r   provisioningr   r   r   r   r   	Exceptionr:   rB   rF    r   r   <module>rT      s|     " 

40,1* 1A* A%y %)) )1* 1r   