bgtddlZddlmZddlmZ ddlZddlZdZn #e$rdZYnwxYwGdde Z dS)N) Directive)ResultTFceZdZ ddZdZdZeeeZdZdd Z dd Z d Z d Z d Z dZdZdZdZdZdZdZdS)TrackerNFTc^||_||_d|_g|_||_||_||_d|_||_i|_ t dd|_ |jr=| |j|j||jdSdSdS)NrFz \/ z----)outdircombinedcombined_line_numbercombined_test_cases_seen streamingstreamplan _plan_writtenheader _test_casesstr maketrans_sanitized_table_write_tap_version _write_plan)selfrr r r rrs \/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/tap/tracker.py__init__zTracker.__init__s ! $%! )+%#  "  # h ? ? > .  # #DK 0 0 0y$  ----- . .$$c|jSN)_outdir)rs r _get_outdirzTracker._get_outdir8s |rc||_|r5tj|stj|dSdSdSr)rospathexistsmakedirs)rrs r _set_outdirzTracker._set_outdir;sP  "'..00 K         rc|j|V|jr"|jr|||jg|j|<|jr|j|dSdSdS)z-Keep track of which test cases have executed.N) rgetr r_write_test_case_headerr r r appendr class_names r_trackzTracker._trackBs     + + 3~ F$+ F,,ZEEE+-D Z (} A-44Z@@@@@ 4 3  A Arctd|||t|}|||dS)NToknumber description directiver_get_next_line_numberr _add_line)rr*r1r2results radd_okzTracker.add_okLsT--j99# **     z6*****rc td||||t|}|||dS)NF)r/r0r1 diagnosticsr2r3)rr*r1r2r9r6s r add_not_okzTracker.add_not_okUsW--j99## **     z6*****rcd|}td|||t|}|||dS)NzSKIP {0}Tr.)formatrr4rr5)rr*r1reasonr2r6s radd_skipzTracker.add_skip_sg%%f-- --j99# **     z6*****rc|||jrt||j|j||dS)Nfile)r+r printr rr()rr*r6s rr5zTracker._add_lineisU J > , &t{ + + + + $++F33333rc|js|jr|xjdz c_|jS t|j|dzS#t $rYdSwxYw)N)r r r lenrKeyErrorr)s rr4zTracker._get_next_line_numberosv = DN   % % * % %, , 4+J7881<<   qq sA AAc||_|jr%|js||jdSdS|jst ddS)z6Notify the tracker how many total tests there will be.z;set_plan can only be used with combined or streaming outputN)rr r rr r ValueError)rtotals rset_planzTracker.set_plan|so >  0 .  ----- . . M   rc|jr>|js5td|j|jd|_dS|jrd}|jr%tj |j|}t|d5}| ||j )td|j ||jD]$}|||j||%|j )td|j|ddddS#1swxYwYdS|jD]l\}}t||d5}| |||||dddn #1swxYwYmdS)zGenerate TAP reports. The results are either combined into a single output file or the output file name is generated from the test case. 1..{0}r@TNztestresults.tapw)r rrBr<r r r rr r!joinopenrrr generate_tap_reportritems_get_tap_file_path)r combined_fileout_file test_case tap_liness rgenerate_tap_reportszTracker.generate_tap_reportss > % *hood&?@@t{SSSS%)" F = M-M{ I " T[- H H mS)) UX''1119((//$)448DDDD!%!>I,,!4#3I#>9$(//$*CDD8TTTT U U U U U U U U U U U U U U U U U U)-(8(>(>(@(@ M M$ 9$11)<D>-GG G c||||D]}t|||js3tdt ||dSdS)Nr@rL)r'rBr r<rE)rrUrVrTtap_lines rrPzTracker.generate_tap_reports $$Y999! + +H ( * * * * *} B (//#i..11 A A A A A A B Brc:trtd|dSdS)zYWrite a Version 13 TAP row. ``filename`` can be a filename or a stream. zTAP version 13r@N)ENABLE_VERSION_13rB)rfilenames rrzTracker._write_tap_versions0  3 " 2 2 2 2 2 2 3 3rc|j9|js)td|j|d|_dSdS)zWrite the plan line to the stream. If we have a plan and have not yet written it out, write it to the given stream. NrLr@T)rrrBr<)rr s rrzTracker._write_plansN 9 % ?hoodi00v>>>>!%D    ! rcPtd||dS)Nz# TAP results for {test_case})rUr@)rBr<)rrUr s rr'zTracker._write_test_case_headers. -44y4IIPVWWWWWWrc||j}|dz}|jr%tj|j|S|S)z/Get the TAP output file path for the test case.z.tap) translaterrr r!rN)rrUsanitized_test_casetap_files rrRzTracker._get_tap_file_pathsJ'11$2GHH&/ ; 77<< X66 6r)NFFNTN)r,)r,N)__name__ __module__ __qualname__rrr$propertyrr+r7r:r>r5r4rJrWrPrrr'rRrrrrsH &.&.&.&.P   Xk; / /FAAA+++++++++++444       M M MD B B B333 & & &XXXrr) r tap.directivertap.linermore_itertoolsyamlr[ ImportErrorobjectrrgrrrns ######KKKEEEEEfEEEEEs ''