From d74f70c2e8de4a3aba276cbcfe71eb8a867aac05 Mon Sep 17 00:00:00 2001 From: Carson McManus Date: Wed, 5 Jan 2022 18:40:02 -0500 Subject: [PATCH 1/2] add unity project used to build test fixtures also add some test fixtures to be used in unit tests --- unitypack/test/fixtures/README.md | 1 + .../bundles/audio-2019.3.13f1-no-compression | Bin 0 -> 25643 bytes .../audio-2019.3.13f1-no-compression.manifest | 17 + .../single-text-file-2019.3.13f1-chunked-lz4 | Bin 0 -> 1140 bytes ...text-file-2019.3.13f1-chunked-lz4.manifest | 16 + .../bundles/single-text-file-2019.3.13f1-lzma | Bin 0 -> 788 bytes ...single-text-file-2019.3.13f1-lzma.manifest | 16 + ...ingle-text-file-2019.3.13f1-no-compression | Bin 0 -> 4381 bytes ...t-file-2019.3.13f1-no-compression.manifest | 16 + .../projects/example-bundles/.gitignore | 73 ++ .../example-bundles/.vscode/settings.json | 56 ++ ...Bruh - Sound Effect (HD) [D2_r4q2imnQ].mp3 | Bin 0 -> 10437 bytes ...- Sound Effect (HD) [D2_r4q2imnQ].mp3.meta | 22 + ...Bruh - Sound Effect (HD) [D2_r4q2imnQ].wav | Bin 0 -> 385718 bytes ...- Sound Effect (HD) [D2_r4q2imnQ].wav.meta | 22 + .../example-bundles/Assets/Scenes.meta | 8 + .../Assets/Scenes/SampleScene.unity | 328 +++++++++ .../Assets/Scenes/SampleScene.unity.meta | 7 + .../example-bundles/Assets/example.txt | 1 + .../example-bundles/Assets/example.txt.meta | 7 + .../example-bundles/Packages/manifest.json | 49 ++ .../ProjectSettings/AudioManager.asset | 19 + .../ProjectSettings/ClusterInputManager.asset | 6 + .../ProjectSettings/DynamicsManager.asset | 34 + .../ProjectSettings/EditorBuildSettings.asset | 8 + .../ProjectSettings/EditorSettings.asset | 35 + .../ProjectSettings/GraphicsSettings.asset | 66 ++ .../ProjectSettings/InputManager.asset | 295 ++++++++ .../ProjectSettings/NavMeshAreas.asset | 91 +++ .../ProjectSettings/Physics2DSettings.asset | 56 ++ .../ProjectSettings/PresetManager.asset | 7 + .../ProjectSettings/ProjectSettings.asset | 676 ++++++++++++++++++ .../ProjectSettings/ProjectVersion.txt | 2 + .../ProjectSettings/QualitySettings.asset | 232 ++++++ .../ProjectSettings/TagManager.asset | 43 ++ .../ProjectSettings/TimeManager.asset | 9 + .../UnityConnectSettings.asset | 34 + .../ProjectSettings/VFXManager.asset | 12 + .../ProjectSettings/XRSettings.asset | 10 + 39 files changed, 2274 insertions(+) create mode 100644 unitypack/test/fixtures/README.md create mode 100644 unitypack/test/fixtures/bundles/audio-2019.3.13f1-no-compression create mode 100644 unitypack/test/fixtures/bundles/audio-2019.3.13f1-no-compression.manifest create mode 100644 unitypack/test/fixtures/bundles/single-text-file-2019.3.13f1-chunked-lz4 create mode 100644 unitypack/test/fixtures/bundles/single-text-file-2019.3.13f1-chunked-lz4.manifest create mode 100644 unitypack/test/fixtures/bundles/single-text-file-2019.3.13f1-lzma create mode 100644 unitypack/test/fixtures/bundles/single-text-file-2019.3.13f1-lzma.manifest create mode 100644 unitypack/test/fixtures/bundles/single-text-file-2019.3.13f1-no-compression create mode 100644 unitypack/test/fixtures/bundles/single-text-file-2019.3.13f1-no-compression.manifest create mode 100644 unitypack/test/fixtures/projects/example-bundles/.gitignore create mode 100644 unitypack/test/fixtures/projects/example-bundles/.vscode/settings.json create mode 100644 unitypack/test/fixtures/projects/example-bundles/Assets/Bruh - Sound Effect (HD) [D2_r4q2imnQ].mp3 create mode 100644 unitypack/test/fixtures/projects/example-bundles/Assets/Bruh - Sound Effect (HD) [D2_r4q2imnQ].mp3.meta create mode 100644 unitypack/test/fixtures/projects/example-bundles/Assets/Bruh - Sound Effect (HD) [D2_r4q2imnQ].wav create mode 100644 unitypack/test/fixtures/projects/example-bundles/Assets/Bruh - Sound Effect (HD) [D2_r4q2imnQ].wav.meta create mode 100644 unitypack/test/fixtures/projects/example-bundles/Assets/Scenes.meta create mode 100644 unitypack/test/fixtures/projects/example-bundles/Assets/Scenes/SampleScene.unity create mode 100644 unitypack/test/fixtures/projects/example-bundles/Assets/Scenes/SampleScene.unity.meta create mode 100644 unitypack/test/fixtures/projects/example-bundles/Assets/example.txt create mode 100644 unitypack/test/fixtures/projects/example-bundles/Assets/example.txt.meta create mode 100644 unitypack/test/fixtures/projects/example-bundles/Packages/manifest.json create mode 100644 unitypack/test/fixtures/projects/example-bundles/ProjectSettings/AudioManager.asset create mode 100644 unitypack/test/fixtures/projects/example-bundles/ProjectSettings/ClusterInputManager.asset create mode 100644 unitypack/test/fixtures/projects/example-bundles/ProjectSettings/DynamicsManager.asset create mode 100644 unitypack/test/fixtures/projects/example-bundles/ProjectSettings/EditorBuildSettings.asset create mode 100644 unitypack/test/fixtures/projects/example-bundles/ProjectSettings/EditorSettings.asset create mode 100644 unitypack/test/fixtures/projects/example-bundles/ProjectSettings/GraphicsSettings.asset create mode 100644 unitypack/test/fixtures/projects/example-bundles/ProjectSettings/InputManager.asset create mode 100644 unitypack/test/fixtures/projects/example-bundles/ProjectSettings/NavMeshAreas.asset create mode 100644 unitypack/test/fixtures/projects/example-bundles/ProjectSettings/Physics2DSettings.asset create mode 100644 unitypack/test/fixtures/projects/example-bundles/ProjectSettings/PresetManager.asset create mode 100644 unitypack/test/fixtures/projects/example-bundles/ProjectSettings/ProjectSettings.asset create mode 100644 unitypack/test/fixtures/projects/example-bundles/ProjectSettings/ProjectVersion.txt create mode 100644 unitypack/test/fixtures/projects/example-bundles/ProjectSettings/QualitySettings.asset create mode 100644 unitypack/test/fixtures/projects/example-bundles/ProjectSettings/TagManager.asset create mode 100644 unitypack/test/fixtures/projects/example-bundles/ProjectSettings/TimeManager.asset create mode 100644 unitypack/test/fixtures/projects/example-bundles/ProjectSettings/UnityConnectSettings.asset create mode 100644 unitypack/test/fixtures/projects/example-bundles/ProjectSettings/VFXManager.asset create mode 100644 unitypack/test/fixtures/projects/example-bundles/ProjectSettings/XRSettings.asset diff --git a/unitypack/test/fixtures/README.md b/unitypack/test/fixtures/README.md new file mode 100644 index 0000000..1f2b66b --- /dev/null +++ b/unitypack/test/fixtures/README.md @@ -0,0 +1 @@ +Fixtures are currently built manually using [Unity Asset Bundle Browser tool](https://github.com/Unity-Technologies/AssetBundles-Browser) in the Unity Editor. diff --git a/unitypack/test/fixtures/bundles/audio-2019.3.13f1-no-compression b/unitypack/test/fixtures/bundles/audio-2019.3.13f1-no-compression new file mode 100644 index 0000000000000000000000000000000000000000..173653b081c067528f174a8842af58280f85d2c1 GIT binary patch literal 25643 zcmeFZeOMFM_At6Gcc1sY_kHej z|9IEK?Ce=2M9<;0LZjqU;za&=tS_#1U?O8SX88HYF4-*JJc9%Fig+R%9Q84G~F0xG|n(8 z4B3j%a6|ZXSSkX@WReZWM*yB}+N$i;E7z>b%!c{7X8;&0$O`}hzJuo);{x9i6b56h zee~#1SbWTDFJ)f#nZCes)9v66Atc>q(!hs-mjIw2K^S|X$HK7yfhpoxfZmThrZedg z8vh>&5P%}Eku>u#`I#ya>RCDqd<|(6U>O*su^2jdo}LWp`S4-NX3{)QN5=AVp3s+?<@%*-X``dF#gduyT0;lozY>R<3x`DyHw7nBdW)cP=fCv0Pg)@AToRb5-%H z-kAxpKf#AtpA7u}Ssn~Reqh!K!;fR~fM#0!82(cpjmZP*DV5=!=jG9#o_Br|r5Ja`tE_KodF5Xt0c^CKJsB zkKsS-4`k4e$22DV&-ESjZ_-$dp)>ts^bMx`$qberBaH=c{XWP4Qiy%Ne~0dG=@ks!DIN(@q3X$(~oIP_@Cn^|2JtY#?YUYFA4@rkCDa#M*cD5`&7P!GFW$g*eYk*nbztb!Z(n11kNqt_XXW3MrJ%d+Fui~?XN${mYDtz1!L$Xk)U z3XElpUy-vCz)hRc4jwBDPhQ5hbOTd1%$*2xj3tNhlr<}g@|I^u!M)y4lxNIa1}zkb zex?~oP<4P9b#_5ER6kZ^=4CTlP5kPoT19GR_KNIh(nDf&alx{@%)BB-H_;g0Sh&^hZ(D=;<-_$t+R6- z@P)zuANW5b@P9_&e{BSqeNDA$O)fc=ga*KhEHXMLCp)u&Ft!)`W!lETv-0Dqj9_TY9y2EUR=;R`+~qNAip+k}<=iaT<*fhF<-$eNmKQMl z3Ik7N^V72b*UNg{u=YtgPs@7Rwy_HSBVf`z+qY-Q&)ORQZ|3i(%71GN|6k1C(|L2K zANPjoV@#?locU!Q$z$}G!p+zd432@un9;j$k1lQdwgk_UWSxz;_748(hsV9D$L8jN z3xK+XclDC3M+umgVt5l8Q`Bmx|3RY&mVp2c0zCdV{;dORN7ug^bRvKJkt4r)Qnb*=P%;U?&#Q+ri`0+1~9yZT>`=8%^zRUO6#dUxC>HQy|D)GzL zUw+&+^W#UGCjRBMyAK)V;_b^n{^j8pj~>l^c;M>L-H~qP#7Vu6X8!Hbqj?b%|ME%* z{r00rBj3FJ-pHxj94U~DY?!+;^sQg-ah9_PK<&<7v`=caSn#)?5?ZUSH3*vx!W8>z z5D3DqPrtPM+>*mn4jxP~!BH|&n8@P2AnC{Y)#)1Uh&;#dJ2&taI2OG2Zf-M@F0`|C#h_OXGBJ$tPCjB{T+M}K4KJ2+?gqFb$_ zr))jVF*lh7OsYC(r0UK-Xq!9zjd*pfPc_{>w>Y&b^Z5CP`?~YKIM@B%dTZyeOMi6Q zZ(Topb>-2;-Ur^FqGghWg_^rJ8Uqg2SSAe(9?pd|+=Go0Zhm>r7|B6*H zD46?Y>JN#F{?)N3@Xp=vR~5}W8^3VN2#Nk{5%%b^IQ!l=ATAk&-=kUfi(eq_F zEB@Gbd+55#ju~L%jIo-7a%Fnuq=qF}fMVE+{xH9OAk$Y=3Bhw`u3;>cL~7S?L(|Hs_=M{c#V6 zVv~|<$d+lj1G|1J`|D{hpS?p%mj}L%rrug36MfeH6Z*B=Qn2UJ{T+*oy=N`I`~BT* zy>B7;*4E|k{;PaR#|7_C{1@lldcoE_8h~o!rAU%bNO{P1W?a=ZgQPt$P6YaAfLT|j z3bObEF@BYco6BfJejF_gF4`)o-E`@_wzum~ExYpC>YvG3hJU_xi=8)C*~)y&uKU)Z zN4c^0V;h?5VD-;qMz>)fzU@(_34%3I)<$vTi3O9Wy`|sgl%LfKOUfHpjT0&cZvW5` zJ8#2LYGdS)GVkHu)hB=KMSfq~mHP+!8kqf0Uyu(Tewp);>$UF#+j!sq<&UtG{y78h z{rYFrsFy^k-Kt&N#`sKXcJR)&1q27P*e{Ca_FV`Y7xiZLii%(SL)F1H`R4a~uQopf zEqTi(tTtf!6;qb>{;>aw%d4nc4)8yF#I(6?lIra>KV|j*?Ln~l(1GEA?>6);-aUJM z*!yo;U&9NAseM_kbXm;anu z9f@u&K)3GP*>V0<*BT$~#)fmOJKd~&rk?4$eE;Bee3Jglw8Y<{zkgr&C(P&u?620T zYxQDS6{X|EC(alDWS~N;W18EE+Uv}G`d5Fra`T<+gYPy@;@@i3t<^Jne{lY|_<^XmX2hNUy(#jbHA0FD>Z~2xjt;&) zW5)f?_4k~w{p;pC$gK2+3x`~sqYFQLLs&9#it&{xzx{m%S~q#<$H1k)fB$!um0SOK z=iY0R9{v2eulvvQs?t_FUpo76&bs$EKYEa}(fnY_g8(FVe#jiJS&R~4Nf5*fIz^S2 z7Kriu0G3r_IizE^-@KCOcK_p#U0+)Ek+}WGWh*~%eXZkm;POYaKV5R;#QNa`uy6ob z11k&qb&~G-l+mg0zrAfsV)xIfRcW5TkGKER>)!S+J~?})`O1Uf2MV|PL#_XCtzznG zY}+CT?UruXAy=|snN!FO7gfd-G61R8<*>P>P}d1MDrWBs;lOr zyVg&S`Ka5r`R^)v`KyC#&^N$qUp41`(5Lxk--!!)L{u+p_-Y!>u^=+EBzd zXZHPVchtSlr%C1a%;Pu{+Sf0=Yx`;Nu95%a(e0f3)%};cY++ma$KUXpeg|CzPAs^8 z_EoLDf7*}u&D2+?{xy4=bTIdw*Rh|2*C{`1ehbz_ad%q6*kNZXekU3dQ);-|`)d}? z=^m9&y1wah$ddh+BWBJRVvoPc`fB&lD+Z*Kq8?}M+Zl%JJPKX|lp z`s-hK*b^_mSNt#bqdh+@-t>Cu%;NRgmx{oi2e%zA{7c)$|832b=C@`QL`n`fza&~X zFM9maLfgAW#_vkL=zc>V5tnu0cTK-0>q7lM{J%N4g7wXJ5{&lW>+^C#=b7>)3gG8& zJ$C)Uo(Dl!r+;_r=Io5^*Z(klwl39YI7IP1wWa?XPoKqie(3(R;f)_%i@?LtsehZW zh;`}I5+Sek?6v-d#V_q-AKv_Txj1E8#jZWwx1hh4+S{MQ_L!0T+KQwVNi#ni_fM_Q z3*Ik$m*@B9iOm;tf4P7z4%z7a^3+{lwNJjGXRY;}b@b=R?EZ1bHu#^ok&`(;@uT3^ zF^}`_vA174|I&$xCGKm$p3%#{l+NvCHT`Aq`h%*9uRlF@N90fbKB9ZS@vFuQpKx42 zAN9|l0w%wd+o+4iBWbwk&Q5Mje47W{(2L?cXJIekA$Lv;NdU6|b)kh+$*@xW1#fl{N6j=1zPatugzB+Hf8ao6M0Ix z)MJla^XV1pYtEUd20&2zSQF(N6C$zFroQ-Eq=>y`pJ3)p-{|DHn>Pnd{a$a`V)o(} zZw?;PVv4=xCn|&b0>K8b>{rcn-eyVhgjX(ToB?iMr!QRC-D^~Y%rLjw`OSGB)HPqu z7tW~E@4S*5en4z?X-lt6bgOK*sV{6FO1zLSyQ&Fkv?LT`cQQi!QG8RJgs@0GNKwHs z&Q&VZy%Az07A3Da-D+4O`L)wN3O(*90l@c6)@b#~1s7wJ!$~jWmtM#_;Im&F5zW6m zU;1ImoBg2q_lgO>eAQ~1xVEF^fITl`@L=9di#7E^#h`9~Pj7FK`-Rp;h4N+2cKyzr z%x0-TcVGb;v^HmQ% zNtzR>icE-!qD7L?B9cDWBvwzBQcL>WWGq%R>-;vY{$yM$yAHhiFB9vh{6{9+Yxk!t zE}&k!y_gvI^u!|WtlK)?g|H6R!qj;k9TyIFS}k=)tP^iI^VjHN!yeKguy&5!OV- zCt12uq!^;n=ax10+f&|u?T?>1wGSd=bDI*-$Vs3Q{Ennz#|9Q}J^mZ3882%6MEd#{ z`?qFC#@HLYXSE3zPW9d|I$|0$4a$Qjq*b=EZ|Zw;IwOKF$lJ_Az8*=pr4DJFlnm@O zo>oXQ{5-mhBEfi`f$N|MGaY+Zz9&wi!nae7)#BmP75EiHh=wGWIA~fzxKY|JEa>7u zwmf4>U}Sb}(`2w2{O4?_d4(kDx zgYvUt)O*%#f_1@R9OuG~?Z{Z3G*L%15I7YsD0iL|&i0=Jr2ZR7FqZ_g+2waL>MY%S z1Lj(<5ceuaa9r(IU3jjfS0ZOg$DgRWR~055Ul-TkelW(+`iTsegb9M;tt0_{MUS1D zu>R9aTYkTpbU~c_;}!pv_ognL`_ukeiIwV)H~a#RSkIo7W^Lb=eZ_0x1&_#OE|n!N zm3d_TrM$Yj{Irkw71~!%J(x9N8pJ9nN+R|_c0i%5&|I-aIW>@Rgm)eP9_ zwDt)5Wn@3gdw+v>DqC>?)m!qEz8N~5E-|VnKl0Y8B#;)J3@R6B!h70xm@muSC%PVA z)F!mEEk)C;OIFup0lPdT&d{^o)0L&4Q$*n=6df^n?aObs{n#j zcq*_>nEJF2)G*a-KOYiw^9*1_E<};iVL7pVdX`@etzfIwaeg(^&5ja9uaID!Q!e4+ zKD#6LRSR1LGs_d?!lE*smR9w}+Z0ksHMT8giCiAJ*OSVY$ICXBxT*Jry7~6u98W|{ zCk4i{y%2Zq_FBOPbY()4py~Jce_icc{C>3)f>oyzxp;!0;HE~I9scP}lGYZhOsE%? zm-XH3pEqgI#BFtTy7L_GlorXpgSrYgr(Wc9vfL!Bh-xBQIYKZeeSWPV#n2_2E{T+P zB%s#D?gj2O)hfF-L*!oD)Vi5IQQbuUJP6lz0{*gW%WG+S=jEpHeWM54W9+rMiEimG zAM_bEl5t%syjmO>tl`WNr>6ziAx2Rhb?C>c^(^BTh_sLY+qr4$Oau;gq5dB&{5AZA z$zL7_|KYWn-z|v0w&KbcuhwTBz4+l@Z`3UfbfpG3w)6{fXMX3b1!-Jlz!o4h9u2UY zOG|ss=kFK_GZxC7?LI9n3*6h%quMRD{G-C4($Wlq7ahs%yrfY3Ig1M9ZOZ;1a>LW2 z1zqBNuWO=S^g@_gv&*3OqI78k)bcL%f+^$z6s128OZ5CS(kaK1_YZQ6%EES7Tdj0g?ik(Kl!S&)KUHi~&o5Nyo32&ciN9n!MJb@=mBi})*~X3LhV68&M;R&LsH>^$8k2s zEIA*i@1sritW4UW%mi^xH^dE(P-N9BudDr(0aTV>1V9RnP9TiJ&bcW?u1S8Z9CGGH zcG1i&k5ECL8 z$_^Z^0o61eP@tl+oRG7L8YQ0;7n~DbujjeOfHFq~ix*0n>kBv0+?v(k9HVmUN6G-2UO&8qQ8xvgF zTOtuBndh)dm?5Ew(Y$+$7LhkyRHMrV2W@bv3-v+96vR#1m$h9RX_txC2+W*XuG>a? zY0K1}&=Yw#=KE0C^sp`~S`Ot-Zse!H6o zDr+|BJ5tl8HZO_}$r?YSk-uT2XyuVzRT{iyL``giB_E3lJbwy)W7d$Je}blYe}B6WW{@ zlD>Z^5zGj!8_1_>GF3iAfLO+i=&M3meB*I*)XoN(F*eo@0L=@`lSF13Rl&Hm7jshvl zD=ZFC0j0pKkRwzvzPa3hdi3a#C@6USDppIffD^G4#;E;joOM<=Q-wlRWZHyRD?{~a zOpQ}On^(k%-&afDP;IdY^#CIjfEv6x7_jeb+x|~pa{~}X3xSrMgJz&j^18rGDH@eH zbi7FbaMY>Y(L~1A?&y-NnJi;=OfqeOH@Lx}VdC>1n zBBy5c!+;?2x9QpABfi=e@X;9;aI3vrMtcdsFh@;Wxf&KPt-DvAoZ&sIIXM6I{5o5+ zm&?M)$y$b8AV(>n@y(Fytv&kY&Y)}-Y9US33$fTtrmS>#l+ z%yc;tA)$Fpd3^=Nrgy!uE`NdhWOH6xc*xb2bxEe)tvTdqZ9F$ZjQI01$+k+r1agGrJFGtusYb+#VYP(<7#t1^r|>cW>Q`rR zeMG<&%L4V&Nlpn*1%w1!jmnd_JfZw5PWOWMf0itk=A`t~1t>&>Q!#Pp2|1p~%;sgYCJ7JHhk zdT`DVDmEKT_T5M5P>U+Oho5<=&2l+79pNT->Gs=ArIyRYt_?+Tr5fq9DWOuo36Y94 zWS|$VLuYg<>6Sad1es?bDXmL}+J=@G78;?n(_E9CZnUcAZ%q~iPVw$cUA8<~K;fQ| ziQ$DtPcLulPO-VQWw76)u`zv?mj;XDAiN#+_brE_N2kE+ZjEM{OO6i8hzql z6pw%|ACwOnk3iT&mB=SjfL>%pGUN0#O@fh#vCO1`IAVw5h zw-$3FM1g^#LNz63tFd}ov8gH`Aj^;T#3BhDoaT4~T0s`C66cGJs)SYC2n3W^N`VQH zdsFf~ARvlN!u>3~LV-=nGaCd5D2D7~w&Aw912v3q?`vDo-ehuM^%Ts2^7% zgw<6_c>rk3vT4{?9BQ-h#dVW|<`oQctI1%lY-5awjudltt5RrSvT2ElTkv+Rt_!2^ z2EN-U*9L^}blUbpQ|zH2Py91r=_2gxQUrC2rzLVhZ8eIumx=H3OciNCLFMHoJPJs%Bk9xbH;D z<%0x!pX+C8Q#?h-&BWbfzPJKyJ8t1eMfnM=i8r0E94U*z?)f(QFG0UvQuMEd=MQ`q z=yfp9`t8lQcl*Cx8GkhN9o>h`!Q1x-yu_a$PVjY$iR5H&*JaVzGSJ@BXu-4Q@6(93 zi}XW@l?dBv*~l@QNLkSRjTsw+RC4EnHfx6N^;v)wjdfG_to4Vq&|`oAN0?f%+#Tq( zu~7)PWzNvRvxRWK_q91lTB>Q0*0UQ80w;N(BUPh8whP5UH`U3`esS|g>tKGJm83X8 z?zcNbhcTiM#Ks<9`K^lBhl2dhol@I0zv~i+rKqTieSxGX(0NtL3o-FW+;DA5zA;n~ zHLh4d3Im6s@Ijz4uELS2E<6<#PsJsmhntiMNuXYF)rrtbb}8!TAEPMdYMgw%3}uUj z0+US~)Tq6ifm+M8XbEl+VqH)bv_|7XvG>Ulksn|q5*K+%u*Js1L z1>^4!$aRMj@a2HIi=&=*gyJ%ll%pjnmE@d-C4$|BK#)Wc8$|X9iQVL=quNu9uDS}; zz=GlWi-$IG-4RaRSh7;M=Hp&mdKg(h@0xI8-OXdk?I&xSwyHzoI4L$2QG%3bWVg~8 zp^<5V^d=6W*y8a$e@7gqiXo0sYhP<-0S7^ zwBKi0Z#BfZ-3wm$?sr!I{jwE^^I}r6V4*I{yL!-@oSK|`Tu6VuDL5ZR*DlaeANJpc;b0GsCQZA~Y!_04PC{ z=JdfqbF@#UW&=D0fR-UZho4jVRKo$K^|KQsVjHsnBZhzNkzQF!l|=-gv<#Y1cJ+@_7OOu z(!dvq-WkE?TNpe=rsb=Vu*5mv@T1GdnLfSEnViO^$Y4vCX$MIHG$Sg_;wS}Wdb*;IOyK?gOu%qEjAa#k3D+q z9C$elq@k~5VE5BY#ywd0@Y;=Id(#|U;`XDQSNp#CY4Y4JCLTanBq!fG?9!9Z(UzUQ zsg_(pI+6uCY(NVtr_zH5M=PNg2HN*8(h!xn-7f51r47fpiVmwun(rdNrA_PHl-ez; zOX>m3)*i1z?ZUO)K^ffbJJUNCI$;+bVaqUtT=IqK_0~$ z&OpT>ia;+_l2zYA_|jbs8GdD@$>OrByfWM~*$)|arM-A|S-|ieFrKF<7CJI88-es* zAwv9FBo28^FwQT60I^2;^j&bWL1?jbc_!111QKvgdA*Ew@{}TU6?Dw<}Mmm!O$Mh5t39xN?at+P#8lV)^V|Fep>Zhj!$*|eV(?TVspRBS)5mIOF-;M9;* z&1YQPhGoAk<&!FWY` zTf~gFc=b5T?jX7Wmk_5LIff6mb!-^gPEHrJ z2yP5|Z~@%pbbk`$|b$D96%xs04ddrZ3(`dBC3VQ6o z)_h5u3J*)ahga|?R8}+s;0J95r%p2^>2|Ymfucj$oVdLwf5CElOCD-=8OZNc5FJmr z$`YUuo%J5&owaWXiDxW;VbN^=E>VUb*MbSUv?&Dds$6$?E1nRqHcduDs=6|h#cUQK zRzVrmy`{F=^FoSPqEsyq&zvX^lGc%RI!?0!*XE;QvC1ZK)`)}x5#d%G;%EdLPGth@ z4)mb${CIOnbaqu~yPE6WYlIql&{ac-HxI7}Sc0oD$|)pbF@T~3X|&K5RxwqEn1=Px z>@2GwxO<7JB~=QwIt%v`s;V1b74XLg6bnzD1U9L+8F2MNAly*umLb?2fG#;5fuaiI zY1}R1x}&;K;vq#niLEp#MQk8ujE87oflH4B+%S$fGD9(JiHnoZp0E5TdFm=psKFZM z#iC9pLU!39??TuV$Z{E_ z;^6d$|EL;R&TX2xW&+y%QC%RehRdHQ3CguVM*I4uvM&SHOg6r~cu&&pu!B49xf|}s zU9K4V=AHLaXKh>>^iuUUG#gQg?KvsiJ6tp&xYR_D)!9Gy7%Cf4lRJtEWS+_VgLXj^ zX0zm(cFr){?YD*AsRPqcvA#<#(73v~9=E54XBEi2J0U;N3l7ZaCMqwt?mXpDX&DTI zACXQ#QD7GK2JQy;?&uUp(6@+y}i@hWl)UMK#-0n^LpIQ)`G*Y{l8oDU0i&Z;>4+rV=&5{ zXiQltDC2iz2ul&%|D-}qsmzXQi^a^1Rh1H{sfgEh%oRHw5t`-algYKfPg{e^n-sa4 zGCI;i)guUhvbxuYL`Gl=y;A6a5>70nDXBNpc?e=Qkd($p(ty|ol?_~^Kko+D3=vSx z@qDsDf~7PPG_{o`d|&=dg(hD3(slidN7xWR|;v*@BZ!IHZ9o>rB8 zKt3*d@Y9re{f7j6S>*mXvgy1VQ5P=@0o1(Yv|8dA=1sQp1*mXm zZFof;uHnR^amZH_RF{z}bdVK=9{z9k!o{}_efZ1Bt=OxH0|)=Oz%ovibv9r7@zj@_ zox55V{q~-#bAc{D@r--R404=S8d+%j@Nl$zxj?PPuu#&TbGl zd}lN73|g5Ht$+$R*QNVnQe~?-x<6CAR!o|3OE8|Xym`^!RrSW~>22nTjFPUIkj(0c z_L;nClZPz5TkdzDxq_7r1zgl;OF2G=Qgmk2tJ7{X+8WydkDFYeR(LI>oJ9Db+Fvb@ zhY0Z*=`K;r)Kjf8vHUzN&Ype>ExQdwzQQAYu5CAfP1Yz&-?k_tVsfN(AM@!{VDE+V zDSU(-DB0^U77C<_;leN_cTX+7)pu@X^j+NBwSXY`cM0BHRi!akyA|7z($}Z0?JuBu zm4)D31>(x4phsApg<)dUvjS(&fyNqc4LDgW*sPMXVs5-?$F|)&`fXbo+`2?+!Zi*ub9*yGB1j=bpW8*#HaUrsKgBuVJ%Zo!i zPLA;yp*Y7}ZUcne2T-o+y#`+(mXiRK@yIIRS=SW6DUWF&fox&`-~-_ZO~=(M3D15X z0SE5%nZCPAcqOAnY&KV*i7wIvY)^r#O`6_fbQE|S_vk^-vSVu!PJ#p^UQ!3*?K%)w ztIdd`_nk}$n7=JVN5%fd+b-6%B1?b1*<#(K>(p;oiKce=H;hu%_IKiA+ouVlXn6Uv-)x(-8TpZTq$|`>CTe5MGDSe#6sSGV6 zL~QXnH=@R(=q=&JYj5am7wRz9blMh*q0nTYd6_iy!TI4etgHIjCcaiMR}Hm_%}e@9 zBH?M&(~o$-l6qbj3IC%2>7WUe3qN9I#RtUAL{9q@4A-*|ARl(Zy8}XC`Mak^t~y|e^?b(uj~+dhesnIEmEUaJCi(GCZ-FLb%WY8#}D)kbz6Fy z-+menkj=Z}lJoHV17_b#iR}vu!g`FC+KhwPeOd6dX@Wx`y6T1_W|Ng;aezk9*z&o( zZfN=1%87mxx#6E@*TGY{dS9T|zqiq3O@rLuf0+3WQ@^vhRCG~!4Z&LnR~+354Kizb z2nQ&YWXoMtdnP!LQJ6M2^j3Q|()=3FE&QvVl9m{gMJ-_AaxUqIxMmi}%L4fwQbcU5 zz!RwC5P%8iQ1IlygW^(DUoaLU*L@<-glB`0i}@zP#DWIgoqkVf~gC8X;9)xqSvV^+{ZP>0W3(QoP!hIC9n&D zjTt77BK~xOWE4FM4xCCfmc(beh3Qjrq34Y#sa6tVl*bRnz;GP&T6+OH-Z*n(d?a>q zdPKN))X7S>SZhJf@Z9+E#{j!DNzZ-1bIU6;6h%Mhs)z=sEmd6Cg@I~qlQt0K$Q5y* zmcqPLE&@Edwy!p;mf!Y%dh+4E&>Xf~ zB;Q1nll@piZp^7^YwD>|q-v&1eg%Iy7Ra1KSrx56HP*l?F?6$dZ#<&HnTe&d_O`6I;Hwc!FF?X zdgbMVK{yy@$pLA}i)@=wX-%!nJDT}YB(|LPYR^DGbV#r-l#l6ajEy%3;uEM^I89QI zhJB4eR6I|{HSrC3mO?eI2oDz#shPxVjtEzm6-d2%;Y9*UR0eo=q-8D{f(>1Uh)l}q zvxIU)tODn%dCak{LM<#6iRm~>1iCZC9^(kVO%`~jOWJ586OW_o73YNPlOj-RY?qoT zXC`U%i$J2(S!xWhMF1D`2|sU9qZ+lILc~=lHqH}KL1hwi5;XxO7NbS(UCN>@C51TY z8@Z%fz)y{rd5z+VQA;FICuy-HO(y7JJcI6H)P`Q@>C{RE8oh4?uNPx?p?=;bJR^j+ zdAQK&=0l<=59mz*4S>T9nX*K2jxO8;xO5>VF`ssGi?5GunE>5|HE?VpozNLF_`)h_5MjyypcKm|{u&ts) zzCAS`X;MS3I%TN0SESlOIP!($NN#wK$4HRr9-?kByc+>ffnaL||@o+#{Y-)ra4fVK!{xb8RQ&m;C% zw34wvac9 z)O|uIn}mAkSUU*~hn`5h%0bi!m*7xHv2m5-WU;WTs~9bdYR|w*NW9WjP0{UgWJ9?^ z$@Lc#q7aqyYK7c;j^v~o>-FS`{Wlwl*&3kq!{qYj0GUgj0K=LMCW!}))9~sYYH}1g z>UwRYrd9(l_TkiBsW&Ss!$L2qCwxSc;nf1bgZ?0J8b_39R2F5aXOXokzK{TH3ea-B z2CYEk+8tr+E#@6{N$-g{8jfhSv+kN1vH+z+ezGxS;EY^{8)^F^2=&(6x)p- zT&n8GaNnQWsc&psV@724 zv>6>jYYPf;YS`)n-pPew$syw7+Hvx!qbYjm?19%u47v&_j9A*6ng#>{8kx=B(49I$ z*H(M?*wn>jg9>-k3SCF^g7J}3-e#6sr9WNGW0@)SY2|f43s461Dx;VNb5 zRi|ZoF99!8$**$34UMc>D=pIZxy{_2qylEhg07i7F6odju{f1H-YTe~QegPBTg7S= zgE#CPnR+e~>*Q;>n=H{p2-0P&z=S1tak@Z__ww$l{Yt=<0>ZzfKcSjUXkS#vPiRvKq3LJ@+uEyS4IyzD_Ego4~p8irB3x8;jnGd*+R`&{c82O5>b?; zDbv@TRYB!ZqehR>2&+I0#!!8(3!=B_gE7a0;HFVk0#K`9syKIdH~DnD zF)kqA%kqQJyNOI52+ z3vC5+Mss(>4H7!SExwxOcyU|X`-o}|q6&1`X|e>e>?*5-m?L&Wg^2@$NAm%Jp(es4 zoW=XO4t+~FaFLgz%6yBo`;0HWH1nh;_p|Zp@DVSWeH+zG>#f2WoaRea!F9AU!zHA- zrNowgy!3L8z2b0o)IpKWL|S`R44ukfT~v_YBMUO>U+8YPi;Q(MJQeCmy5u&Qt+~-A z%ny&gMN}WzVgPFHg%#Fd@8gU7H9Sox;-dA^@t{L+sA_?(zU5Nk)!dGmGwDSx8de9# zc-jIu_N#hd^Mb*{bv7e!mng_xe$_^r2DO@Dy`@L)4$`y&wbs>BZqTX++{|eqwq}6l zhr7@yZ|M^GRK(Vp4yY1O-)ZmpX~$*9!I2JO$EvA>ICB?t5!UiOM-13zqXjyld%)}} zF<)+k$D~new%P*kTa8%i<0s?3IVq!DP7J)Y)awJFr@033+~6jRVeEP!bWJ*4F&)Js z4ftljt+AXk$}u|dDjDKnp`4LqOpI%y0lc&4Nr<7QCX~aQk$xM*%Gp558R2m`4H+Sh z;X>SG)N-p_)#spJ!6}So(|&GrA(~ZHD3P#%AL3Rbbj>P@J55xJL=#ivFKa}plE*lBK0HLU#4jS$18%rAJU&?h`_8i@?VTQn zg8tDk-yj9*2rF}w#Xvj+hw%DoH&CsB*G)?~8sGT7c(m>y3D;7v2I(s@UnJ6u5F)K) zP#O&`iU5syO6JtgOyRhwK5cWAcpc!Jd62NpD=n9who_~5H?%gi%H!shHzK;)TCZBW ziks-&SDljPC9;&sC{r3A6j7hm22xs8Vjj^Sd}H9KIsM*)<{LMl6>M9%Q32M0a&*t= zlrH{lmqp(vC%(+}TpyUx__1y2%l6g{S6D-rq!up?59+GX+zFnmLx9<<(q1QPG)3z) zuCYDS%>AJYJpX7ioHBi`jqSGPDYBh{?ywNZAkD^%sV$B985+ezqBqPv`~YOxo>n2+ zvXk9xSgkW?cI9R82tk^Tnkr0R#x`F1hS2oHq^VtW0s-a{mH1VmaY22ZDJ?otF4%ur zF7O;scWkoN)yb5FS1rL}4{>@Fm*v&nr*MysbR4#4Oq@F7xKKJHT+t>BP^NXZrgag~ zk;$H&Ls(kPik7-`#VzP%YN@+;Bq*!^ucHlxMqn#I&zi@@s-c<#{b?B}&qax|EEpEU z6WR!mafW0e6nW=-8^W_#QuAg+-a^S8c%~qNsBg z(RB(qaGsD<^i~(D%>dp`h2I#Pf#tMMXcll1Zaks_87Zp|SVi@^@p_DMaPle+HdF9| zIZmKRFNz}NcZ%`vD2H1Gk9D?-)5elmg6Clq*K>MA^9 zq<%FfR%eyLO9c+xQmA5|Eo{$5-C^;O3b;tTHz1}~X1zMsIxh<~N6o{nAJ#DCc6JZsHThU0g&(M&o zOA)lg%1?HtCnpZ`Mp`J&5NFO^6k156AVa=)r+lofXr~z>ifL?^+v^X_S@6WY>nVJw3VX-J4o0W_e~65-Zl%7aGgpZRp8Kr>pUr zx}<$9_vAQJuUc5*8H!3!aT0V>M*$S>!2wI07K=g;?-GbzH=P#3i?0qP5zBT8LnR*d z)d1S*Wkn`iwT|B(uh}QkhhkW7i6>-qo=<_%Q6rpuwcazdw?YK3!CvF~Ag;Yi{wjTa z0Bac9&wTIko(8%EmwS{Xi#4!C^{b80^iCyIxFKkw6x%}SOfg!ZXmMnTIi((Wy=X~2 zZc&D|a7`tn4op@O=NlBK*{9fnc}}kZ8UsL0@vN$lDjGmh+BYhIPRE>RxsXdcJ|n62 zCV>wZgqQgii7?gzcGD|FbsH6Qs7%92+Z#U^_i|7p^_NA#haa?H=Wlk~W4dd1;4vG@ zPCVd<*9+E{Wu3X=6ID@iY@!@$@>+`om!w7VRUA5yyJ_UZc9MREc< zvv)OHTRva6tV;|2uU4)zs)@B*PbeCY5+JmIbSa_tjxiJ|0qI>11f&Xwj;J6a21G!* zfYca6q)8J9NI*i7UP4zuM5PM~;t@o@sONn5uDkA!@5lGdyfb@dt(mp=nrG&HXO|ab zYY^z($B0%%=||)z^+3xp!Y8QRb{#d7nNjWJSz84N!tmS{Hl9bVt>?MO01qa~BRN?Z zJ3EEWv$uIJUg6)Rp^--e$G{~Wp>-87e@A+XRU309wEzHhz8hhiG(D1rcJ7{3LMKal z^WH_zR?)!YAJ%VSg+vIj4M{a}BPXpL8)6yEGwTecraVxq1GuX2Fc$l}J>8Q*1bAMu zI~nR3cN(~xG>j>=r>}cpU+MQ0AZS4>5MD}xyY5mn28(NLx=oczwa+YCpm13JsR||r z>L)Y>fSv@&fKJlNbkc~h-E~(43>73#h;+pP-RZ)L=t3}+i^2{er z3KFoV0yK|h{z4?kRpLyT~0}9@RSS6qmAbM_b%JX9J z<_fz?Vmh?hFL?eKGPy&ODjbX);ic^b^Pu2aU34cv;PJZDPA1K$YyeTr2BHC001ul0%v zf*lisle1bI&O!H7&7XbxsCHG-Z%Xa~(%&;BhNwuJUb>1wRq?kVm**}5iu5NG^+q{) zq@XNC@Vt&dcHJUNwb4iPb2@V-n_q|qqFH|l>^&&Isa~19?_S}H?WkQ7`135Z{KROp z1xsKW;;oEs^vy6%3sm&D!k(eI8v`pBQE87kd&1zcw5lpdhxU6^+eaBQxibf*W|{^8 zi8q?1B_?`ABF)XFS=Q%Q;*$OHxY~yO6`3iu&Q+LXnEitVbn<{C;N9+hX{uAjk{o`j z`E3fXT@7C@8&u zy)`J+BdXTLRHhQ+C@T(jCrmvbkH6!QY?T;$1g2z+3m(#90slPARIk4iHC}4?ywOqi zQIQLtnGf#)v;U}H;nAEE;pUuO?+i7;niZNW%Hjb=$xiTe=)m-f>pTyjD0O-Besiu= zK!dX-&LO3Y$NuhA?fjOS^myRfp-LH{tbg*%$UG%6hX#sf?ey1Y8@bw9N722)aNu16 z?bj9V{|MpL^ylAGOe}u!3VJ3(&>+>dgpKl2<^4_Z&?H2}e!w*L$I}9*LjK}*f(e`R zw=$RAz00TMGeKfhcNpN)4Iu0^Xv5g6FDNXF-Fu@uhy>z%nih4tmsMtT6Rjum->rTr z&(^x|=`RLQ#Q+Xx=_f&U;1TD<=*UU$A>xiget<`qS|4&JbhUU<)Bn8~cFWGH>nI%; zlsFYn6|NV2u6j`g9vdx+SW*>vXYF*1=u>25?VGFeXUfl^cg0PvvAnc}=Sdl~PTI-v zI+W$qj!b|z+pl!bKCeY46^tB3C{IS|7&uo)aHjkE0sPCPq% z?N(OSp>12usaKcThcgz0IFS*q&Sc4YFsb|{I#S`-*!fZZH$Gp(oxrY^&6i2>6VG*v zIrP8OI)&ixkC@nVWduEw7UX{SaOE=*=QkL;}f;q}V+{xQ2_ zlO-MRTb)5S*gceVL)yywPdUtTrH((ghB^vF-OO{&o{cUE$e1Z^t+_oMG%W}ecZb+v zljh8BVDgdKH4#gVwhV(3yo2g^;tle^w(DT$N(cQZ=EcyX`S$@|iqG|2Kkm(Yx_EcO zS2HU1PV{PeC_`V!lJyKF_ihN}_Uw=87Vd=V_@DE?>P5Kp0h;rMre!3IpchEk77mh%sr(n#U}_Yr=E?^Ac?DVgc~l6cyevfxEo(PVOrls%Tl-w_y_V0; zU|M)etaP=$9$rfK+U8aiAMu#I0p-MW2@WxruLz1zVG`uNzIAYniT9OE4{byf4xgTo zB$R5dtw~Syp|{^=zI^@7ZzD~o7P3-8A-nEPURWPXJdAJOF?+jiv1>I{c0c{-+{!eAiing1_95{O+a%*c~8#`rHMqydX=3OzwyC=AA9>N zs!2yK^m5Je$NPWmk=L%nj#hQlHg1tEZ~%5Prlmj9ZM9sdxZXia)7xRY*68|c(FF~sP^|jk8zNmn!AZMj=NujE@m$?T8*}CX zU*Oj}Kl=K1ucbd*8V!FG)FWLo0KR#5I$ zGt#%uf6kb_YV)aOE_qO|Jj1ZI>(J%-LT28DF`u+ot{$`QTrmo>(#mCSZ!(T-IMB=B+TaNKFq{cnW zDYdp{c2k}a6w5m8ys3y*xi$;0rE47|@d%Rx?}!EMNo}#Ke=%mqoPFu(alsbkPJY3+ zw!2oleB_?KUkBnP&3ydJUxUq}sEda+oE=!9p9>{KpvGK3oo>p5DzC1@w##gc z-IHj@`m+5!U+eP4fhHG*E-XpF$H!vOmjfzs&cCBI%g9QyxtQ176&o|Vp_@=1 z%e|}Ptj#|C1?;NFhtWq9kfm?PJ)->4!Ke5swZ|o!jNEgr1jKLJ}+f^JD7B( z-y0~jhqW`jSLq0crKV?@9ew{kYWVtdq{`0dDygUM;N#J3kiS&4u$0(i=J}S{ehvPa zN9;^ZF~i#*W1h+PzFg$eC=L7(^WCjuXD3W(>C$;!jImX>xw%I4l_mR`qB;I^;w2Xs zf|~Aa4i{90FQnYvd$pujoc>kr4TN)Zbf(`bJs(V$tNZT&*F}lU^)wxHjdc`C1qqH{b+rE7>Pi97A7G_*~g#{X03v!Ed z2ijAVIc^yVcsS#1PoAL>qq79j0#A|^CKT$#4QoLrgI5n%oa4ln--^1INvL?W1=_`+9Z zBlvKH3W$n%KtO;r(#OYV4d)ja7?_$t+S%Gln4X^ISw9+^yMP6B#Dz#h_%Mt@?rRSZS zh&$&2WSN|V=?hn<4Zx~}s*UQgoH+PUvMCNO!^uFcRWn2ygQUDl{RlBXTe@E!wec`u zJ-UrA;#4Cs)3dzJo<6=)bBzZ@<^fCp?7H<->R8RU^f`{kVA}ctTay(wl@`@nPdBIn z)S&E6j4xWSU^da{$#}p%tlfwekpFE4%RO2PMt^eA%dnmBEBwLMmVEQ+)L7I1fSMrw z8wtNJ;1=k-IUl@w@Jd@=Cyr`%CeUwbD)sYk@D~u43htQ}<&<@lcvk=9PuSW?<%2}n zk&?;SUn`_5;U*B&to?15%(_(ba@)x4-#{!){RZc`zt5c-i;DOOkcuo7z#2`?|F4B) zIh7^<=l}>&=}`I54(Cpj1+BnNjsLUwt8m&GKc|bka~o=HY-ndIOx@SsMX1A4pVM)m z6pS8@gSE8(0c`=52)_W1p;F{0B*x}{0d|u_ePbJxfySn$CL=9vT56Q*zd2Xne|Wcl J+xvfoe*thV1Ni^| literal 0 HcmV?d00001 diff --git a/unitypack/test/fixtures/bundles/audio-2019.3.13f1-no-compression.manifest b/unitypack/test/fixtures/bundles/audio-2019.3.13f1-no-compression.manifest new file mode 100644 index 0000000..33a448a --- /dev/null +++ b/unitypack/test/fixtures/bundles/audio-2019.3.13f1-no-compression.manifest @@ -0,0 +1,17 @@ +ManifestFileVersion: 0 +CRC: 454576840 +Hashes: + AssetFileHash: + serializedVersion: 2 + Hash: ae5ad6387bb316cd93b359f260b990ce + TypeTreeHash: + serializedVersion: 2 + Hash: 3f7d0c5e0986ec71841622bcb2f9be1c +HashAppended: 0 +ClassTypes: +- Class: 83 + Script: {instanceID: 0} +Assets: +- Assets/Bruh - Sound Effect (HD) [D2_r4q2imnQ].mp3 +- Assets/Bruh - Sound Effect (HD) [D2_r4q2imnQ].wav +Dependencies: [] diff --git a/unitypack/test/fixtures/bundles/single-text-file-2019.3.13f1-chunked-lz4 b/unitypack/test/fixtures/bundles/single-text-file-2019.3.13f1-chunked-lz4 new file mode 100644 index 0000000000000000000000000000000000000000..4ae2c8974147d623d11a0c3623ebf9865616f682 GIT binary patch literal 1140 zcmYjQU2NM_7(Lf^e&;qnPDaw;*t8oRg``Q_G!2?i+LWq6gLPyG1e<23aW^ zhzE-?!9ef;mHMzgL;~$)PeYS<0vREp35h3!gm^$f+6#N?HUwf4Dxb9%u5{1m`+fJG z?;QL3m5yoctkgimTgdjaeaz(YrR;1rKikZ^SsH>xut@U_nw2ydzGOgnpDGOeDEzb< z!$AT$CIog~CE{W}#Wk8M(q-v)(K<>c#r}91duE;EzWHh*KoO1KRhNee;Xo&wssf_rq@ojofQjZwKhaJw`M*&BHDN_92ZpBwGek@h-zE z@c4~VDcUL!6(2)Tg?)xn8#K>B7F2LHq`NjE z9vjmTY>i=8l;NGl$Z)ZT2qmZt6&Z*pQHLoCLeWK=`IiORGlh)T|dybCif%(^f~kS=HfvoRjz zH7N5WMk%_mK#(fYZ3-;*dWN;M-D$K8v@fh}8LdsdaaON~pskoKqq>|xUbij<@M&eU zW9eqc*eao3?KC&hE#Pdm(=hrY&}!z}2J{JBCXyFv*P@8O{V#8KEVFG?Hrrj@GV5lG zep;%(kK9Xo`yD(CEgM~f2s-Pg(W64OSF^SZy=^pV>qf`;3J>__``wngZd%K_rJvGw zHn*)?D6h2ii_d}0L0{E-myF(Dh;skpv*REA^Ucv~pZ|c8N7xMrVWi&6un>d$mmNOD zl@Z(M>+LQXy*aYcGB39EU;z>% zTL1t6LmmJD0I~r901%u200N-^K@I>20RR9R0Pq+91VceWEoCt{GBIN_Ha0aiI5#pl zW;ZZpFf}x0VrDsHVmD$oGyq)y00;m80AM6j(Fz;(R_Hx%TSta>1Ac|wVl(Y!O)2j{U##p(>CXLuV9)&-2TjMpx)?CMWu&E@M=|L{h}H) zqSc4dAi)1(G9)-O8ae#$TzkcBHHsdmn8UzYG^pV0tsYv4=;u6u;0U?2KzZ@SB%a^R z)FGceObo&P8EdegzEz%6>{dD|)hy9Z3RJ4Z)z_VLeDTpk^zsQGkX{jyY z-PMX8CU8;EgMhCfWz(0Vt7LIR*A<67jbuTpEERF1Rc?ZM=;Ru_XKyb&02@1qKA(fP z1(@uLOPG8#nBS$iFsZ$@`|rh*U%`PWLuI7) zMSIBh#eY^OE^m`iSI5pNnW~jk-vkpHQzbgVYjMd_wpSS&Z@2vNFmJ)ljG|kMT!*BJ z^#r5BRnO1*kUR=A2es2}3_Ia-0PfNjg8XGHVvIcS7UfSHgYpZi17IH2QKt5KH`cnH Sk%nn@$4p4==~sXK+y_3>n`OWN literal 0 HcmV?d00001 diff --git a/unitypack/test/fixtures/bundles/single-text-file-2019.3.13f1-lzma.manifest b/unitypack/test/fixtures/bundles/single-text-file-2019.3.13f1-lzma.manifest new file mode 100644 index 0000000..edc3c57 --- /dev/null +++ b/unitypack/test/fixtures/bundles/single-text-file-2019.3.13f1-lzma.manifest @@ -0,0 +1,16 @@ +ManifestFileVersion: 0 +CRC: 802265369 +Hashes: + AssetFileHash: + serializedVersion: 2 + Hash: 3e47ce8a9ba896cddc171921cbdbe28f + TypeTreeHash: + serializedVersion: 2 + Hash: 5ad585dd02dfb5016c0dad519eab8f49 +HashAppended: 0 +ClassTypes: +- Class: 49 + Script: {instanceID: 0} +Assets: +- Assets/example.txt +Dependencies: [] diff --git a/unitypack/test/fixtures/bundles/single-text-file-2019.3.13f1-no-compression b/unitypack/test/fixtures/bundles/single-text-file-2019.3.13f1-no-compression new file mode 100644 index 0000000000000000000000000000000000000000..1c900b4a70e80fcf4ce1a8dea3ec6da7597634a3 GIT binary patch literal 4381 zcmeHKO>7%Q6rM>O(-tVSg;H8*DYX3Cb>cc9TyWzM#ZsX^DFQ)JwYDee7JF^Q8_D6c z7bJcpPDnZQf&}UXj$A-W95CXW;dSMjW{FWC(WCg_q{jo&6_u~ z_FI7;ZZ53|P`*+e6bE9aG(BG|7pKds)0BetJqh+2+IwiVqe6-cQizAY&58Zhy(#tCSj***UDR`!03(GaACk>;97Xe-1UE-wsCRWKO;jN3}c%<=V&^-6co|WG+ayKaxdQu$Z=)RNg$vfwFD1%EKe*<#H_BfhNI6o);!#0R-A~Tfsf0E)K4Mv{6-_MR9JtEHf=M&BKpQAL= zkY>0aPW?X*sk=W@pUEfS1>z%fjHjIay_mtJI17(AV);w7t&$mH{#lXtkB-Tsgn4+Fh@8$!qB8lHXSKMasSKsvgw3LFoB`S{K@|9;|jn&luH%mKr3J z75_seJgyDvH(;UFF}}DFgnmcWx}BaE`VGI0pKcIaVZ7;e7|NpRDXbVYebvXb-d_pV z6`2l)D+*Y=x!xafu6S#PtuL9dK?sqL-NTH7pp{i|4uG@-dT`Ptt;9K8P3 zEzbCGl9J?b{)IIsHl}d~#u*rAV4Q*fcLw-BRt>yP4_`_C=WY9I9S{GU_~)bV2WxFr u2-P4gtm6Bbd{2^Z4d?ump+AoOQ}Hsza1cTWO6wb`%c--IFI$T-lKufTn4=;9 literal 0 HcmV?d00001 diff --git a/unitypack/test/fixtures/bundles/single-text-file-2019.3.13f1-no-compression.manifest b/unitypack/test/fixtures/bundles/single-text-file-2019.3.13f1-no-compression.manifest new file mode 100644 index 0000000..ac8f0b9 --- /dev/null +++ b/unitypack/test/fixtures/bundles/single-text-file-2019.3.13f1-no-compression.manifest @@ -0,0 +1,16 @@ +ManifestFileVersion: 0 +CRC: 668520680 +Hashes: + AssetFileHash: + serializedVersion: 2 + Hash: 316393cb9cd8b38d63e4d44bb3ef4c47 + TypeTreeHash: + serializedVersion: 2 + Hash: 5ad585dd02dfb5016c0dad519eab8f49 +HashAppended: 0 +ClassTypes: +- Class: 49 + Script: {instanceID: 0} +Assets: +- Assets/example.txt +Dependencies: [] diff --git a/unitypack/test/fixtures/projects/example-bundles/.gitignore b/unitypack/test/fixtures/projects/example-bundles/.gitignore new file mode 100644 index 0000000..f1562be --- /dev/null +++ b/unitypack/test/fixtures/projects/example-bundles/.gitignore @@ -0,0 +1,73 @@ +# This .gitignore file should be placed at the root of your Unity project directory +# +# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore +# +/[Ll]ibrary/ +/[Tt]emp/ +/[Oo]bj/ +/[Bb]uild/ +/[Bb]uilds/ +/[Ll]ogs/ +/[Uu]ser[Ss]ettings/ +/[Aa]sset[Bb]undles/ + +# MemoryCaptures can get excessive in size. +# They also could contain extremely sensitive data +/[Mm]emoryCaptures/ + +# Recordings can get excessive in size +/[Rr]ecordings/ + +# Uncomment this line if you wish to ignore the asset store tools plugin +# /[Aa]ssets/AssetStoreTools* + +# Autogenerated Jetbrains Rider plugin +/[Aa]ssets/Plugins/Editor/JetBrains* + +# Visual Studio cache directory +.vs/ + +# Gradle cache directory +.gradle/ + +# Autogenerated VS/MD/Consulo solution and project files +ExportedObj/ +.consulo/ +*.csproj +*.unityproj +*.sln +*.suo +*.tmp +*.user +*.userprefs +*.pidb +*.booproj +*.svd +*.pdb +*.mdb +*.opendb +*.VC.db + +# Unity3D generated meta files +*.pidb.meta +*.pdb.meta +*.mdb.meta + +# Unity3D generated file on crash reports +sysinfo.txt + +# Builds +*.apk +*.aab +*.unitypackage +*.app + +# Crashlytics generated file +crashlytics-build.properties + +# Packed Addressables +/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin* + +# Temporary auto-generated Android Assets +/[Aa]ssets/[Ss]treamingAssets/aa.meta +/[Aa]ssets/[Ss]treamingAssets/aa/* diff --git a/unitypack/test/fixtures/projects/example-bundles/.vscode/settings.json b/unitypack/test/fixtures/projects/example-bundles/.vscode/settings.json new file mode 100644 index 0000000..1060b04 --- /dev/null +++ b/unitypack/test/fixtures/projects/example-bundles/.vscode/settings.json @@ -0,0 +1,56 @@ +{ + "files.exclude": + { + "**/.DS_Store":true, + "**/.git":true, + "**/.gitignore":true, + "**/.gitmodules":true, + "**/*.booproj":true, + "**/*.pidb":true, + "**/*.suo":true, + "**/*.user":true, + "**/*.userprefs":true, + "**/*.unityproj":true, + "**/*.dll":true, + "**/*.exe":true, + "**/*.pdf":true, + "**/*.mid":true, + "**/*.midi":true, + "**/*.wav":true, + "**/*.gif":true, + "**/*.ico":true, + "**/*.jpg":true, + "**/*.jpeg":true, + "**/*.png":true, + "**/*.psd":true, + "**/*.tga":true, + "**/*.tif":true, + "**/*.tiff":true, + "**/*.3ds":true, + "**/*.3DS":true, + "**/*.fbx":true, + "**/*.FBX":true, + "**/*.lxo":true, + "**/*.LXO":true, + "**/*.ma":true, + "**/*.MA":true, + "**/*.obj":true, + "**/*.OBJ":true, + "**/*.asset":true, + "**/*.cubemap":true, + "**/*.flare":true, + "**/*.mat":true, + "**/*.meta":true, + "**/*.prefab":true, + "**/*.unity":true, + "build/":true, + "Build/":true, + "Library/":true, + "library/":true, + "obj/":true, + "Obj/":true, + "ProjectSettings/":true, + "temp/":true, + "Temp/":true + } +} \ No newline at end of file diff --git a/unitypack/test/fixtures/projects/example-bundles/Assets/Bruh - Sound Effect (HD) [D2_r4q2imnQ].mp3 b/unitypack/test/fixtures/projects/example-bundles/Assets/Bruh - Sound Effect (HD) [D2_r4q2imnQ].mp3 new file mode 100644 index 0000000000000000000000000000000000000000..da1d8dad20ac83bef09c6fbfaf6589e431f8b893 GIT binary patch literal 10437 zcmeHMcT^MGyFCGN385G1CG?I22vS742Bi0@RHaE*;VK%WDqX4wNJkN*DhPszG^I$9 zYD0V-@ zU4ayjH+eF+RXPViIR}6<{wNFpas&Vn{3jQ`i|fC?{NKhuY5zEAY`lrj z{xA4HLH+B{4)FK?W_*j^jPLiG@soZte&uh*@BPjAuVen%|9_eBC%ql`a~J>bg2%V` zu&d8+)Q6H7^PqdqQxgioU;udn=u~RHJlyb_i_q8Sp$X96jL-k3zqT{xEZ2cl+p3G6 z(CDdTmB+8%7ide&k(Y}Jym_@DCc#5Kim=a2!>uDb7&!GIUM0A7iRH7;3Q=PBJEPi3T9YD%H+6?m?`klH;8P8v3eHoy~!SRFMSC5K@iM&?q)$ zMmh+nXxa(>)x)EHdhIQUaK~{PvhvncNVePYBZ&|ssb-}Eb3}LuR0Bp*_c+zRw8?I) zA=0d2G7Hv!A3XUM#wSj@7f9eIJI^2jfYT5MPil4 z-kMt0o=&TqLp3YysDkx#!*d@LbR{`>?{}3v!ulrju?<+#^#zO)JeaHI4Xd8!+X=o% zNO)DuV)g@aZ6!|%b5jj$JZ<__i}kzjDM|;Ul^H(1nYxF?jjz)St=Sy!LXvjd%hm8& zqK3d+iU8@~;cw7=%TF#~0MTR1vPo55CUGhTHVJEhff7gz$DdZ0m{)`jUd&^W_}CLx zemo!n#g*F{BNrq1#OGb~d94n^5DG)CEAqJ2UqCK>rvz3(+St_6iu{EXl>Fs*#iGb2?YOR+=&z?wNCPFw!s0 zniuL1a5*0{+bH(V!GZgp{>v+}RddP9X9(a_e?*X8!?})spjM5K(Z4*3bs>TSl0e2Z zh&co6$s{vpe0$lI>gY(#5)72i;P!atb0)H1FpzgISiut*SX} z0IZ^z3C{LgJ~;{?Fi>V&km5GFl~4K}@$}T0zdw7)wlI=@ab za*`Ue?T`pmMrn-1Lxr1JQAs`?(=rdF>q4XKU%jOwbSPiSqOkgSqg1iQSzqIeejZlTdysPJ1 zl#X0`be4!UA&8))K_!QtMuFsH@I$iZn*BX(&Nonpj5tCT)%5eS{T)tR={*&D49&$Z zB$N5!$vboniNStVQmXZ0nrjp9Xc+d(+8u$o50UmsytbKJ&vG+Dmqn8S&GChJ;EI z!laz4f{wn){#R5FywBh8LTGbD5Vii9a`LkMnJQf7pQJ?hAIHVo02=~zPogrjTw&S5 z>Ku-}ni0KOxmjt;;manlPXSS!)FH)*-0~tTsR@??$ZUK?YC>quh6VTa`bU_2=A*I? z4zIUMYt72AzmI#zdY&JYDiGjf8=n6Pz?RDN*NP~FZ~KI?&tj&|Aalzn<`zn*UM>w3 zAq6#eDMKmE^cRId_&!Dox=zotIZPs4Iu!fL9ij-=;(~K+nxklrp&yPL-uv`m8LBwN z1$nJclGj&EmJ;zc5x0S$UZ$o|ke1*AguI@AxO&BK)v9s959H|6eln@GO7Z24W7Oy2 zH$+w+^&QfI(N5ekp`!`Bz(UJ%HkGhtvgU3x6lgmm89Er~#+dSq_D;4F=8;71whIk#rcK8n{NbSD|4^@9?4=WM7^e0u>7vxo3 z4+dEuMlW?2WC9)ruFxc0!{k1X%e&6Fv-%%}v!`u3+-;_?$pjs5p_rO(C>NV?k zQxSn~D@Y~{UF@eebS#&WE?4qncbTWfa3dZlrysrDGDYu*koWpqetkB|$&;}g>D^9m zXAR}howI?_B5&Mk1?G|Y`YTU-?6Rrw&+<%!7$N#)9>ZP&i(7u7oCEI2;Gu-O3v&bv znIiIvtwf6!M~1D*4`OYnl)cS{3qBN7rA5VBk*eOGgfxufRvjEZ0PI~U6PCSl+x+2b zc>aIs-$*f7eO*X7tbOnDOPJ_pbp$d)63aakMW|1HJtv$PIei5%600}4liSvWG&l=8 zehj=e*hrb~^qJ;HdY6m%$^`ayES6VF!sO_oC&mGN+5FzG3izOQM5|ox$NbUC6zVRK zO~{Rx3mXI%`Z65=$gC#7*dmmo#*Ff~G-FlNE#=M0)8ikKd$BQd1x2f_2%+eUdCHmC z*qOxB()`3-^bM0l=!L6PT&WKYA0loOFpW!{CLv)G;yjgLwxPyEvPl_``C!C?4sQAl zfB))~9blo{za3XeSbJ;_m6{;7t{2RJQ`QsBGG-7c6LGLwU51~0=8AEd3n7OoJ(IDU z*0r=-B3Z8_OTc~HdU@8zWfj#RCA5)eT%zf9@s`xLv+Rbr_Y>vm($J4x3#%%m0x@ob&7Tj=@^;4^5N(bzhr_ur3n+9q*97kDtFI-a6L%J5{B=&DkQ0D)EMbCaIoG)xz(dq*>S?mS_=;Ne3g zXrA&UF{fmCLNt-A`J(r^SwqT2r_`&%spQ1xOp6t$Mjb*}s{&(BMr1zR$l%KxE}x#4x>@9>@BmKWH`4kjY0sac^y{wjpNax6 zgxziTr;F}fI@z63S{xYWKFu-81QK(57K!O6v2}U=bJ`vM`u`# z=2%uoPDIt+oR9N=%@F_Poi}@Gy|Vx+i==&KgF0p@h@)j;_et2V*tpj#t$6xg+}}t3Ec0l^$#vxJmA|$$uK}A1U+Y_rlx$ zhjny17BT8>`#)TBIC(AOZN`hE^-k8|4LX>lP6rsRCNjXkd|U@SKcL&B*`>OvObBKUh?dylXm5{=}JN6*JcgmZTPSzhE8G&U1!gzGnoyhJwYO zyY#D6t@)SdY6hBTNwSPdanJNVAbiRI4~D*N^)uLCc>`AOG%pwr$GtN-Fy&l3`RG&6 z6W+LFvKKfTr+|^K`Uhfp#4Mc0zvmUiOI6MV!JgN*^oP*Vl!aA4N75QN^MFcqa3{1| zFbIZH?uel3@v0t!9Ma`?dD>c9gi_Ycy~#P3^`S5jv~n3gH94xdLeIgHZu~AGkw47N zRQV?RK{i4e4eeV&78uG8d?QUv1nD|<=Pl~3&nM)L9;?t)R#$gA6|RP`j0Pl#ngmBG zpF}mrIv6ug=pH`mq=LPPh0~#KZTNun@EG6PqO?t}%4S}K&r1a)&Gl!P@r1wDV@W`# zeUbQafi3>2NmaGRp>`Q6Z~iR)G%oq@T(O=j$w+RWEja)L7YT%IAZz7UR8FYQ3-;EZ zQ?aX~2BcyTL>hLkAVxdGQYOFscBNyd^a;>T>!H=23?(?+{1DDz z|M|1R<=)S%6700qEE^90Gbelr z4MHN&YFiN5gZH^&1HNuN7E3k?2m(_Pt+&bEob!zl@#A4D;(@}2zSqnOci5<@ZhxQi zlN#JV9-<)L^OL!o{MWz*j=g5CWK3<_{6UU!L8;TIJBEJ&;EVM;Yh+|U!Qa_bW2XPP z7T+Y>xp+S&oE0M8kmalgo%B8zJ5=HKa~o2l(TZb7Y_uGP?O3`qiI+hmZ@3 z`IY!2pe<18M|=eI*YO{VnIi^|FbzNAvlIS0{&@U9z+>iC0+o zcXdB}T-#k=ykxujY`>J=_0LZg*o{A%`On|CU43@-`IqfBWYj7ylRB Qe|Pc!*+0Ab{GassFQhuRs;>(F?b_qBo?XBCtZy*B?>=(&xE8H4nzhbo z+N23*%*a_IC*WS#g(bieU|Nr-P{@VW=-G+Yu{`T}+x($8(@8$ii z{(F78&HwiPvFPjj+q{2H@4wRXqwncL&tCw1p!<4%oA-}Tzo*~PSGv5vkN1C{yVhOz zm(um=_H^C%_eJ+l*MEQA_xD+MNB{mq_xt{F|9d^UEF08w=R>z^0d1feG=hde_e+mUk588bP6DS1 z)Q3c93T@#d_y9V>2$%+ApeJ;NuV5&QgkjJd=yr6QR?rDPhfkp~(0zvky+`Ts=_|c1 zgf8?Rs|L!7UMG58DMxzkDf7obuN7VYLud{3_s2jiyw8aqgEFKX=sxIuLGKg#KV?ks zYkGea!z-ZIgx(8u-}D$4;2zNXr89H`dJK9m(Bn{!bfLeYm{ZIt<(2Z30m^_@fvp00 z@MXZ40Ydl)20%3A3-SeTfEU0Es1?)-bf5}Q1uTP`ume7WSZD|xp*M_#DKG@mA?ROp z|Am4=!5;V?ra~V`1PLTVPZ$PY!zh^juYrPrf{&pUd<3cB;=B0&z}HZ~E8vZX=I|Lz zf;sRV{0ujt0!rW^+=0jN6fOW=XDoF8*FfGtUN4A)r`)I9mGC7*Lp7(G^Bl|&&yDAP z0QDgb+QD4d`LA`{b=>8!0#*b4t`j&pPR?1_3438XOaXcy(tDjglNrz)=zT-)P5M85 zR_L=w*P-`3eV(Z8y$;)9K70as{ycv_DDV~d=0YO8_P+M+fT0ivRh}x(eYgj&p$6Xn zY=dWmr$59(rMuF71{Od^kU@c~z;zOqKv$5!OXo}H9mxFG8Rr@2Huweh0R7Gn16%`K z`7qHv(d~s5o)sRcSL$5@2B_z&=Su=1y!F2Io`q%588~pxbIvmhJ_R0}cb|8Uhhzwb z1o#}Lz)x@-=x=D@Y2jG~IS}p*_YQ*Jp%8+6LB1%EzzgpS?|krie4ZI#cAMQxK@E3Y zcU)_L{_g!y3Tf^%_i$JXcR}OPAiWJ9FSPfz_l|;@@H1S3a^U#>N3plqdlbe4y(UGT zBF}MH03AUHuiUTP58w@OJzP%`w1vU22I#f>)cdJ-Gdu!6V-z-)=YvMUd)G_4kKi@FmdoNpF}7haexgwcOe?7z{h15~z(C0E2+uuhjO_ zG3O0XyG6%YI<8QANyid8UeWh-ETZ@QEO-nZxE;9vfP$x}`wTARE##d80bjuX3Rc1n z_ydl>Rk#P&;27+KLvRYt!C5#DSzv@DK@wV%fr204H~0%OAuu2?U>rPyW`WHDr@=

#YHbby6$8nlq?P4@PO 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 Date: Wed, 5 Jan 2022 19:27:31 -0500 Subject: [PATCH 2/2] add a unit test for extracting a single text asset, mostly as an example closes #107 --- CONTRIBUTING.md | 9 +++++++++ unitypack/__init__.py | 6 +++--- unitypack/test/__init__.py | 0 unitypack/test/test_read_bundle.py | 26 ++++++++++++++++++++++++++ 4 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 unitypack/test/__init__.py create mode 100644 unitypack/test/test_read_bundle.py diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 57b7f19..5b553fa 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -29,6 +29,15 @@ If you need to modify it or amend it in some way, you should always appropriatel Also see: [Github Help: Using Pull Requests](https://help.github.com/articles/using-pull-requests/) +### Running Tests + +To run unit tests, simply run: + +```bash +python3 -m unittest discover +``` + + ### Need help? You can always ask for help in our IRC channel, `#Hearthsim` on [Freenode](https://freenode.net/). diff --git a/unitypack/__init__.py b/unitypack/__init__.py index 78ea144..30a9024 100644 --- a/unitypack/__init__.py +++ b/unitypack/__init__.py @@ -1,7 +1,7 @@ -import pkg_resources - -__version__ = pkg_resources.require("unitypack")[0].version +if __name__ == '__main__': + import pkg_resources + __version__ = pkg_resources.require("unitypack")[0].version def load(file, env=None): diff --git a/unitypack/test/__init__.py b/unitypack/test/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/unitypack/test/test_read_bundle.py b/unitypack/test/test_read_bundle.py new file mode 100644 index 0000000..95b864c --- /dev/null +++ b/unitypack/test/test_read_bundle.py @@ -0,0 +1,26 @@ +from .. import * +import unittest +from .. import load +from pathlib import Path + +def get_bundle_fixture(name): + return Path(__file__).parent / 'fixtures' / 'bundles' / name + +class TestReadAssetBundle(unittest.TestCase): + def test_single_text_file(self): + with get_bundle_fixture("single-text-file-2019.3.13f1-no-compression").open("rb") as f: + bundle = load(f) + self.assertEqual(bundle.name, "CAB-2c069a3745be5cfe0c630ceac750b567") + self.assertFalse(bundle.compressed) + self.assertEqual(len(bundle.assets), 1) + asset = bundle.assets[0] + self.assertEqual(len(asset.objects), 2) + obj = list(asset.objects.items())[0][1] + self.assertEqual(obj.type, "TextAsset") + data = obj.read() + self.assertEqual(data.name, "example") + self.assertEqual(data.bytes, "ligma\n") + +if __name__ == '__main__': + unittest.main() +