o nnh @sdZddlmZddlZddlmZddlmZm Z ddl m Z ddl m Z dd lmZdd lmZdd lmZdddZd ddZGdddeZGdddeZGdddeZGdddeZGdddeZdS)!zExecute Ansible tests.) annotationsN)read_text_file)ApplicationWarningdisplay)get_ci_provider)categorize_changes) TestConfig)ChangeDescription) HostStateargsr return list[str]cCsft|}|jjs|rt|||j}nt}||j_|durgS|s$t|jjjdur.t|jjjS)zJReturn a list of targets which should be tested based on the changes made.N) detect_changesmetadatachange_descriptionrcommandr NoChangesDetectedtargetsNoTestsForChanges)r pathschangesrJ/usr/local/lib/python3.10/dist-packages/ansible_test/_internal/executor.pyget_changes_filter$s rt.Optional[list[str]]cCs|jr t|}n|js|jr"|jpg}|jr!|t|j7}ndS|dur*dStdt ||D] }tj|ddq5|S)zReturn a list of changed paths.NzDetected changes in %d file(s).r) verbosity) changedrr changed_from changed_pathr splitlinesrinfolen)r rpathrrrr<s  rc"eZdZdZdfdd ZZS)rzIException when change detection was performed, but no changes were found.r NonectddS)NzNo changes detected.super__init__self __class__rrr)UzNoChangesDetected.__init__r r%__name__ __module__ __qualname____doc__r) __classcell__rrr,rrRrcr$)rzBException when changes detected, but no tests trigger as a result.r r%cr&)Nz$No tests found for detected changes.r'r*r,rrr)\r.zNoTestsForChanges.__init__r/r0rrr,rrYr6rcs$eZdZdZd d fd d ZZS)DelegatezTrigger command delegation.N host_stater excluderrequirer r%cs(t||_|p g|_|pg|_dSN)r(r)r8r9r:)r+r8r9r:r,rrr)cs  zDelegate.__init__)NN)r8r r9rr:rr r%r0rrr,rr7`sr7cs"eZdZdZdfdd ZZS) ListTargetsz8List integration test targets instead of executing them. target_namesrr r%cst||_dSr;)r(r)r=)r+r=r,rrr)ns  zListTargets.__init__)r=rr r%r0rrr,rr<kr6r<cr$)AllTargetsSkippedAll targets skipped.r r%cr&)Nr?r'r*r,rrr)wr.zAllTargetsSkipped.__init__r/r0rrr,rr>tr6r>)r r r r)r r r r)r4 __future__rtypingtiorutilrrcirclassificationrconfigr rr provisioningr rrrr Exceptionr7r<r>rrrrs"