1
2026-06-03 61dd274b761b476395c763614fe40be81757b61a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Ë
þêjÀãó”—ddlZddlZddlZddlmZddlmZmZmZGd„dej«Z
e dk(rej«yy)éN)ÚPath)Ú sha256_fileÚ validate_caseÚ write_outputsc óZ—eZdZdedededzdededef d„Zdd    „Zdd
„Zdd „Zdd „Z    dd „Z
y)ÚManifestPackValidatorTestÚrootÚcase_idÚ file_contentNÚ manifest_pathÚsha256Úreturncóʗ||z }|jd¬«||dz j|d¬«|dz jtj|||dœgdœd    d
¬ «d¬«|S) NT)Úparentsúdata.txtúutf-8©Úencodingú manifest.json)Úpathr )Ú
package_idÚfilesFé)Ú ensure_asciiÚindent)ÚmkdirÚ
write_textÚjsonÚdumps)Úselfr    r
r r r Úcase_dirs       ú&.\test\test_manifest_pack_validator.pyÚ _write_casez%ManifestPackValidatorTest._write_case
s‚€Ø˜'‘>ˆØ‰˜tˆÔ$Ø Ð #Ø ˜
Ñ "× .Ñ .¨|ÀgÐ .Ô NØ    OÑ    #×/Ñ/Ü J‰Jà")Ø'4ÀÑGÐHñð#Øô  ðð    0ô
    
ðˆócót—tj«5}t|«}|dz dz }|j|dddd«}t    |«}t j |dz jd¬««}||dd    d
<|dz jt j|«d¬«t|«\}}ddd«|jjd «|j|jd «|jt«d «|j|d    jd «y#1swYŒ|xYw) NÚ
valid_packrÚabcÚrrrrrr ÚPASSé)ÚtempfileÚTemporaryDirectoryrr#rrÚloadsÚ    read_textrrrÚ assertEqualÚstatusÚexpected_statusÚlen)    r Útmpr    Ú    data_pathr!Ú expected_hashÚpayloadÚresultÚcheckss             r"Ú$test_validate_case_passes_valid_hashz>ManifestPackValidatorTest.test_validate_case_passes_valid_hashs€Ü × (Ñ (Ô *¨cܘ“9ˆDؘ|Ñ+¨jÑ8ˆIØ×'Ñ'¨¨l¸EÀ:ÈrÓRˆHÜ'¨    Ó2ˆMÜ—j‘j (¨_Ñ"<×!GÑ!GÐQXÐ!GÓ!YÓZˆGØ,9ˆGGÑ ˜QÑ  Ñ )Ø ˜Ñ '× 3Ñ 3´D·J±J¸wÓ4GÐRYÐ 3Ô Zä*¨8Ó4‰NˆFF÷+ð     ×јŸ™¨Ô/Ø ×ј×/Ñ/°Ô8Ø ×Ñœ˜V› aÔ(Ø ×ј ™×)Ñ)¨6Õ2÷+Ð *ús •BD.Ä.D7có\—tj«5}|jt|«dddd«}t    |«\}}ddd«|j j d«|jd|j«|j djd«y#1swYŒaxYw)NÚinvalid_pack_missing_fileú missing.txtÚ@0000000000000000000000000000000000000000000000000000000000000000ÚFAILÚ FILE_MISSINGr©
r+r,r#rrr/r0ÚassertInÚ error_codesÚ
error_code©r r3r!r7r8s     r"Ú%test_validate_case_fails_missing_filez?ManifestPackValidatorTest.test_validate_case_fails_missing_file-s€Ü × (Ñ (Ô *¨cØ×'Ñ'¬¨S«    Ð3NÐPTÐVcÐemÓnˆHÜ*¨8Ó4‰NˆFF÷+ð     ×јŸ™¨Ô/Ø  ‰ n f×&8Ñ&8Ô9Ø ×ј ™×-Ñ-¨~Õ>÷ +Ð *úó •-B"Â"B+có\—tj«5}|jt|«dddd«}t    |«\}}ddd«|j j d«|jd|j«|j djd«y#1swYŒaxYw)NÚinvalid_pack_hashr'rr=r>ÚSHA256_MISMATCHrr@rDs     r"Ú&test_validate_case_fails_hash_mismatchz@ManifestPackValidatorTest.test_validate_case_fails_hash_mismatch6s€Ü × (Ñ (Ô *¨cØ×'Ñ'¬¨S«    Ð3FÈÈzÐ[cÓdˆHÜ*¨8Ó4‰NˆFF÷+ð     ×јŸ™¨Ô/Ø  ‰ Ð'¨×);Ñ);Ô<Ø ×ј ™×-Ñ-Ð/@ÕA÷ +Ð *úrFcó\—tj«5}|jt|«dddd«}t    |«\}}ddd«|j j d«|jd|j«|j djd«y#1swYŒaxYw)NÚinvalid_pack_escaper'z ../escape.txtr=r>ÚPATH_OUTSIDE_CASErr@rDs     r"Ú(test_validate_case_blocks_path_traversalzBManifestPackValidatorTest.test_validate_case_blocks_path_traversal?s‘€Ü × (Ñ (Ô *¨cØ×'Ñ'¬¨S«    Ð3HÈ%ÐQ`ÐbjÓkˆHÜ*¨8Ó4‰NˆFF÷+ð     ×јŸ™¨Ô/Ø  ‰ Ð)¨6×+=Ñ+=Ô>Ø ×ј ™×-Ñ-Ð/BÕC÷ +Ð *úrFcóR—tj«5}t|«dz }t|«dz }|j«|j    |dddd«}t j |dz jd¬    ««}t|dz «|d
d d <|dz jt j|«d¬    «|j    |d ddd«|j    |dddd«t||«}|j|d«|j|dd«|j|dd«|j|dd«|j|dd«|j|dd«|j|dz j««ddd«y#1swYyxYw)NÚrawr7r&r'rr(rrrrrr r;r<r=rHÚ quality_passÚ total_caseséÚ
pass_countr*Ú
fail_countrÚ experiment_idÚrun_idz
readout.md)r+r,rrr#rr-r.rrrrÚ
assertTruer/Úexists)r r3r    ÚoutÚ
valid_caser6Úsummarys       r"Ú"test_write_outputs_expected_matrixz<ManifestPackValidatorTest.test_write_outputs_expected_matrixHs‹€Ü × (Ñ (Ô *¨cܘ“9˜uÑ$ˆDܐs“)˜hÑ&ˆCØ J‰JŒLØ×)Ñ)¨$° ¸eÀZÐQSÓTˆJÜ—j‘j *¨Ñ">×!IÑ!IÐSZÐ!IÓ![Ó\ˆGÜ,7¸
ÀZÑ8OÓ,PˆGGÑ ˜QÑ  Ñ )Ø ˜/Ñ )× 5Ñ 5´d·j±jÀÓ6IÐT[Ð 5Ô \Ø × Ñ ˜TÐ#>ÀÀmÐU]Ô ^Ø × Ñ ˜TÐ#6¸¸zÈ8Ô Tä# D¨#Ó.ˆGà O‰O˜G NÑ3Ô 4Ø × Ñ ˜W ]Ñ3°QÔ 7Ø × Ñ ˜W \Ñ2°AÔ 6Ø × Ñ ˜W \Ñ2°AÔ 6Ø × Ñ ˜W _Ñ5°uÔ =Ø × Ñ ˜W XÑ.°Ô 9Ø O‰O˜S <Ñ/×7Ñ7Ó9Ô :÷'+× *Ñ *ús •E?FÆF&)rN) Ú__name__Ú
__module__Ú __qualname__rÚstrr#r9rErJrNr]©r$r"rr    sS„ð ð¨sðÀ#ÈÁ*ðÐ]`ðÐjmðÐrvóó$3ó"?óBóDô;r$rÚ__main__) rr+ÚunittestÚpathlibrÚmanifest_pack_validatorrrrÚTestCaserr^Úmainrbr$r"Ú<module>risFðÛ ÛÛÝçMÑMôS; × 1Ñ 1ôS;ðl ˆzÒØ€H‡MM…Oðr$