From ffe98af4b1a0841489a84e1b459432d07251ddd8 Mon Sep 17 00:00:00 2001 From: Zhang Qiang Date: Fri, 16 Dec 2011 18:54:59 +0800 Subject: [PATCH] Unit test support currently, unit test can cover plugin manager, config manager, baseimage (yum/zypp). run 'make test' at top dir can run unit test cases. Signed-off-by: Zhang Qiang --- Makefile | 3 + .../baseimgr_fixtures/i586/A-0.1-1.i586.rpm | Bin 0 -> 1396 bytes .../baseimgr_fixtures/i586/ABC-0.1-1.i586.rpm | Bin 0 -> 1404 bytes .../baseimgr_fixtures/i586/B-0.1-1.i586.rpm | Bin 0 -> 1392 bytes .../baseimgr_fixtures/i586/D-0.1-1.i586.rpm | Bin 0 -> 1460 bytes .../baseimgr_fixtures/i586/E-0.1-1.i586.rpm | Bin 0 -> 1404 bytes .../baseimgr_fixtures/i586/G-0.1-1.i586.rpm | Bin 0 -> 1396 bytes .../baseimgr_fixtures/i686/C-0.2-1.i686.rpm | Bin 0 -> 1396 bytes .../localpkgs/H-0.2-1.armv7hl.rpm | Bin 0 -> 1228 bytes .../baseimgr_fixtures/localpkgs/H-0.2-1.i586.rpm | Bin 0 -> 1396 bytes .../baseimgr_fixtures/noarch/F-0.1-1.noarch.rpm | Bin 0 -> 1224 bytes .../baseimgr_fixtures/noarch/H-0.1-1.noarch.rpm | Bin 0 -> 1224 bytes ...e7015963cabab2751263c7a20f4ff1c668-group.xml.gz | Bin 0 -> 316 bytes ...cae1eb9b7855127938b39de83fbc303-patterns.xml.gz | Bin 0 -> 350 bytes .../baseimgr_fixtures/repodata/filelists.xml.gz | Bin 0 -> 699 bytes .../baseimgr_fixtures/repodata/other.xml.gz | Bin 0 -> 697 bytes .../baseimgr_fixtures/repodata/primary.xml.gz | Bin 0 -> 1372 bytes .../unittest/baseimgr_fixtures/repodata/repomd.xml | 40 ++++++ tests/unittest/baseimgr_fixtures/test.ks | 14 +++ tests/unittest/configmgr_fixtures/mic.conf | 9 ++ .../packages/repodata/filelists.sqlite.bz2 | Bin 0 -> 679 bytes .../packages/repodata/filelists.xml.gz | Bin 0 -> 304 bytes .../packages/repodata/other.sqlite.bz2 | Bin 0 -> 644 bytes .../packages/repodata/other.xml.gz | Bin 0 -> 299 bytes .../packages/repodata/primary.sqlite.bz2 | Bin 0 -> 1616 bytes .../packages/repodata/primary.xml.gz | Bin 0 -> 654 bytes .../packages/repodata/repomd.xml | 55 ++++++++ .../configmgr_fixtures/packages/test-0-1.i686.rpm | Bin 0 -> 1400 bytes tests/unittest/configmgr_fixtures/test.ks | 28 +++++ .../unittest/pluginmgr_fixtures/backend/yumtest.py | 8 ++ .../pluginmgr_fixtures/backend/zypptest.py | 9 ++ .../unittest/pluginmgr_fixtures/imager/fs_test.py | 6 + .../pluginmgr_fixtures/imager/loop_test.py | 6 + tests/unittest/suite.py | 16 +++ tests/unittest/test_baseimager.py | 140 +++++++++++++++++++++ tests/unittest/test_configmgr.py | 74 +++++++++++ tests/unittest/test_pluginmgr.py | 77 ++++++++++++ 37 files changed, 485 insertions(+) create mode 100644 tests/unittest/baseimgr_fixtures/i586/A-0.1-1.i586.rpm create mode 100644 tests/unittest/baseimgr_fixtures/i586/ABC-0.1-1.i586.rpm create mode 100644 tests/unittest/baseimgr_fixtures/i586/B-0.1-1.i586.rpm create mode 100644 tests/unittest/baseimgr_fixtures/i586/D-0.1-1.i586.rpm create mode 100644 tests/unittest/baseimgr_fixtures/i586/E-0.1-1.i586.rpm create mode 100644 tests/unittest/baseimgr_fixtures/i586/G-0.1-1.i586.rpm create mode 100644 tests/unittest/baseimgr_fixtures/i686/C-0.2-1.i686.rpm create mode 100644 tests/unittest/baseimgr_fixtures/localpkgs/H-0.2-1.armv7hl.rpm create mode 100644 tests/unittest/baseimgr_fixtures/localpkgs/H-0.2-1.i586.rpm create mode 100644 tests/unittest/baseimgr_fixtures/noarch/F-0.1-1.noarch.rpm create mode 100644 tests/unittest/baseimgr_fixtures/noarch/H-0.1-1.noarch.rpm create mode 100644 tests/unittest/baseimgr_fixtures/repodata/4bb63d1039a6f0d3fd1e7035acff76e7015963cabab2751263c7a20f4ff1c668-group.xml.gz create mode 100644 tests/unittest/baseimgr_fixtures/repodata/ea95ecaccf9abc214715b1724188a3ecfcae1eb9b7855127938b39de83fbc303-patterns.xml.gz create mode 100644 tests/unittest/baseimgr_fixtures/repodata/filelists.xml.gz create mode 100644 tests/unittest/baseimgr_fixtures/repodata/other.xml.gz create mode 100644 tests/unittest/baseimgr_fixtures/repodata/primary.xml.gz create mode 100644 tests/unittest/baseimgr_fixtures/repodata/repomd.xml create mode 100644 tests/unittest/baseimgr_fixtures/test.ks create mode 100644 tests/unittest/configmgr_fixtures/mic.conf create mode 100644 tests/unittest/configmgr_fixtures/packages/repodata/filelists.sqlite.bz2 create mode 100644 tests/unittest/configmgr_fixtures/packages/repodata/filelists.xml.gz create mode 100644 tests/unittest/configmgr_fixtures/packages/repodata/other.sqlite.bz2 create mode 100644 tests/unittest/configmgr_fixtures/packages/repodata/other.xml.gz create mode 100644 tests/unittest/configmgr_fixtures/packages/repodata/primary.sqlite.bz2 create mode 100644 tests/unittest/configmgr_fixtures/packages/repodata/primary.xml.gz create mode 100644 tests/unittest/configmgr_fixtures/packages/repodata/repomd.xml create mode 100644 tests/unittest/configmgr_fixtures/packages/test-0-1.i686.rpm create mode 100644 tests/unittest/configmgr_fixtures/test.ks create mode 100644 tests/unittest/pluginmgr_fixtures/backend/yumtest.py create mode 100644 tests/unittest/pluginmgr_fixtures/backend/zypptest.py create mode 100644 tests/unittest/pluginmgr_fixtures/imager/fs_test.py create mode 100644 tests/unittest/pluginmgr_fixtures/imager/loop_test.py create mode 100644 tests/unittest/suite.py create mode 100644 tests/unittest/test_baseimager.py create mode 100644 tests/unittest/test_configmgr.py create mode 100644 tests/unittest/test_pluginmgr.py diff --git a/Makefile b/Makefile index 641188a..d742826 100644 --- a/Makefile +++ b/Makefile @@ -41,6 +41,9 @@ install: build develop: build $(PYTHON) setup.py develop +test: + cd tests/unittest/ && $(PYTHON) suite.py + clean: rm -f *.tar.gz rm -f *.tar.bz2 diff --git a/tests/unittest/baseimgr_fixtures/i586/A-0.1-1.i586.rpm b/tests/unittest/baseimgr_fixtures/i586/A-0.1-1.i586.rpm new file mode 100644 index 0000000000000000000000000000000000000000..b6084852a6530fafd4c0ee4621ba71964b2b6019 GIT binary patch literal 1396 zcmbVMU5FD`6uz??>wghi=&Dsx6xpTTG09|;Y&B|j*JYQ&ZqzOAN=5EWZnA^P%0FDUOB8>iIO;|Ir$EZ3-YK5WP5Y%4{~P#r4)8xy{z2uZ zK573E#a{s_e^l|;iVMZxC|+sv*r$qD75@xKz0K}*VZeuHfxX?`l6o zRMj@ShwQ2xv@2*S=$W?_#Z1)|C2|GB;-D=0vTQfrx(D2v=gT0FQN*aI$^WH}1QSgZ zPU{&xf%l${RzpwdX|P^B71?r_4TSDNI6TYbBgTUivyDw0e62XjPP5G|l)&pL54%tqLhr+~2nC00nYcyFZ znmrG(rPE&L&lA1lR_hJDs}--a&56C3|AUvyE_ARjw2xto6^AqT*p$zCx9I23*t*&NFUKBtKcAlS!__yunWbB1cb~j^Q>@#1 dbm_4ln>y2W9_jhx?5|ztzdnaMMy1KU{{sF5|78FG literal 0 HcmV?d00001 diff --git a/tests/unittest/baseimgr_fixtures/i586/ABC-0.1-1.i586.rpm b/tests/unittest/baseimgr_fixtures/i586/ABC-0.1-1.i586.rpm new file mode 100644 index 0000000000000000000000000000000000000000..4c790d13c617ab01db1c0a228e5b486662008222 GIT binary patch literal 1404 zcmbW1U2GIp6vywhBb1L45=|%qaZMA`M((iP-3}wTNOx;fqO?na*fufb?#$hG(%qTq z%&cx#o`?@V@t_hCd@>;>#u&fqt1l!Fp6s&*0xG1UE%8N2_*njD=kgJF<0fbR^E>Cv zz2}_S*_CfrfA3^i+EAg$)5ZWFAbP%~u@|0x@Z`74n(|TX2y7p0Eo>OJ83%Vm*T85Y zw{sb)!*(kE7fShQ81g%BLMgreJxDujl^!>W}U-*1JE#c^uZRsnu$Ik9(ZK*b{Z{V620DZ^2MU2Zf0p zSQi1-!@8*tN+A9lN=!z4L*1`eOnt3`ZB)FX_!Y&gQ0g;WV;<<$NmlOwzw?L`i6EO6s_dx0V&lA6vul@Zh+0sUhV9o_)%EHP<_=mWotAuEMikmc7}VP5!`s)eOrFj3 zV=olF{z*et)h+jpxK%mq&Y-NQpDABSEL45rP$(J|AIMTDD{kXaxaik{P)3n#XN-xO zeCE*u(PXoq93G1@ zhQjQ?^;x6IGVS^E7+ZSDl{%t++TU}lbw7>!&G&XUC#Nz0t9Lej*}-1bHo>WvM$Iei zBevsx*3*4SFK0XU4qYp)jpqxCXTLuE+T{yBTr{?~=rdrfcd79D_>I0>^UGnp?WbU2 o!<$QoPky&3diR~!@bS-0gK3A3_y2Y3x1KNFIfHkMlcuI00NBJ2jGVuAkVt0+UB!tur;7&42KYJsA7!+-n%?p#8SOa1P}qlwwM-xiA|4 zpPTCFko*WrOu6KrkxV(nRM$M%e92EFW51UFDU@<`$y7J3my-MfO8#w^a}O8fubR+V~5{y!wIl>An5Hx&CT zv<~W5N89sC3`*;bL6NUe9B~m!@v>gEB>4uE@`dD^lFO2BOQv&E{@pe&Jqg8mmFL9$ zEXVMBXK_|AtwUx-#B#B+7sMhFM&FvsKfF9upWr1C9*R64D`4b3SFoHJ3N{`^{-%u^ zMcs7#s?aRYVO86$)tQ~n7);(QEetFz@Ez=&>#k=Eo=o&mA@e^s_^WoYd(f_m0lR|3 zggs2o70k)1XO_qn?l2FFLLka^{gb=jbNoPrp=d?qO-Fo{IuwpJdRR&`G#wW`)p{m1 zT}y$|TB0?VK~vg;zUAEZe?t4ohZ8YgiE-cdMU3w=t5rPx4Se9>;PCE|p~10(dxrP! z?*BQ9u(GII!jEjv4FO?R-4NMSj5|qWJ7!>w zXQ_F3k7};SR)i}8+rnCAIO$sBf#-U)kk{N_ZMVcDvxufJ%eOsNZ?HtG?>xeiZu?0U zQ9Z3Y+-!cJJGJC}Z)0>n`hWlJ!m}N0t+E)CYGH?Qj~!ua4zR98x7A{@WApZhg*nkg z?$WuxPXBo4>c7{t)lK^8Gq!Fjw|;o0`}M?h5UslCPcHarYR~b%FPZDM99!_)e+`W( WyN>oeICZn@%rAf98)K)j{T~4yz5pNq literal 0 HcmV?d00001 diff --git a/tests/unittest/baseimgr_fixtures/i586/D-0.1-1.i586.rpm b/tests/unittest/baseimgr_fixtures/i586/D-0.1-1.i586.rpm new file mode 100644 index 0000000000000000000000000000000000000000..0eb43109379668cd508ef78898e6077b91a604ae GIT binary patch literal 1460 zcmbW1O^g&p6vwM)8-Ya(2_&up$q7j(_e~KX?PeI9lj`?ZkF7q%H z>l<64*uPoo`;8sUvrxn{c0nor9Q$ei#K+mcA4>CIgJL~{_iI+c6#oGGYs`0;HS_n( zE;H4c;?X{7{*Qg${4Nyvq+r6Bz;VU>5E)TX&Vs7zbUEz?Q999a@?Txkw?DhyUX(Q* zFC;;T2x!xRuSH44TFfU&_}t#Tx~-aFLt9SJ6b;XBwS_k}o)>%*tvGV5C~S%n)-DgX z$MbSDJAyb!c5t;}Ov9@VPkIeq_UcF|9ueGEQA>?L)yNeeR3~*M(yrHj6E_>^C|C>!?`p{r#6BXR>Ko zPs`8?by~iv8Vx+dJ+gdaa^}dfsmZw$M`vC+GI5}YVXkgFI!wI4j{$Lls>?76673`? zyOg1dRI?bzp{%xCS4T4TI=Yxk%jPI%H&x`!7pa+H-+!*!Tkk*6?b3A-n;sTAvpAT8w|;y4d`j#v zo2~RJ#%B|?4kGZ&9Tzl@jn5Jz5#9k literal 0 HcmV?d00001 diff --git a/tests/unittest/baseimgr_fixtures/i586/E-0.1-1.i586.rpm b/tests/unittest/baseimgr_fixtures/i586/E-0.1-1.i586.rpm new file mode 100644 index 0000000000000000000000000000000000000000..0c0a92d0dc6deb205f0f2d417078f897c689815e GIT binary patch literal 1404 zcmbW0O^6gn6vwM~Cw?n}N;WaVh$6GZYG-yncKjGWc6SyRVR!r@yMjn{clB&zPj_#3 zPn?~25|3gIAqeV4@FF4_qSrw1Al}qN4w0;eXxKFF!8nwlfu0oZofeAp0dISyV5od=_V*zQ?q z0=7}{?@)?Q!w}#72bBCfVOl}-=Z#Dzoi}W=P_(kebkQ^m{ieCuDp>u+ytUajgl!mz z#YkAI+?nFNmVNVw=`T~?uXu0{lgDB0oLa5cHN4{t#{QG{8pgV4ZU+o`bdj6bf-NAx z_&0B=g93?$j@QGKn52oqwvMiI1S#Vy4t zD9+bbLs5TXyfd$@hthr%P^{OeUShg4iZ4Ma-cmfHSStQSv90)5#gsR#pY8C9ub{|R zqdsVZtjzGevka>U^QfrGWI1X3VKSCc{JyEt$KTy;OmRy_M`J(04j7}pC)t3AB%6%m zV9TaWvLR}LD|OSaG1u|x4d&#F1*ZNiJqk@d3~H=g#^L2uqgdeCzTS3mi%{U4A;xu# z)Ue~qA*YIjqF$!vDq`C8g+;DtxABhh%Xm*w<= zp2p9fYd^DkTF-&flTtxgzMrNY~({nhR60D z7#W^8vVZL0zQJ+{VYY0TGKd}DivUrKZu21YV`;`{H|K!}MXeM?0XOQlEkhnTOCA?iTi@K)KWWi#z}UJw1D}pPN&PuB8^)`@4W<`wyR-lF)$3y2 e_7jUw-e~Gf+k3qC(bqrroZE92ca4)K4*df-5Cbd# literal 0 HcmV?d00001 diff --git a/tests/unittest/baseimgr_fixtures/i586/G-0.1-1.i586.rpm b/tests/unittest/baseimgr_fixtures/i586/G-0.1-1.i586.rpm new file mode 100644 index 0000000000000000000000000000000000000000..95a583a521e6333ed061d075c3e4a3c00656149b GIT binary patch literal 1396 zcmbVMTWAzl7(TOEt2J7L3dU==dWLa@(?8Isnu%zgm2Vf?5)06G8UT$)fW)-p}ho>PYFVLTC;uA zIbw=G0TQQP$^KMviXl$t`VcZ-@n?#oUSxj`q*z07IydFZDE=q#%^Z;LZ)G1)cIuPz z4=esJkm5%apHW;W{z~ymo5vR`UR8Vvkb0+i;f(PvAk{wx!QIA}0?B?#@nvnU;jEFp z8;JVaDj;<6F(Bf#H9*QY4n(|0_fFgdl7AjZ{w2k4DJ~Vir+8WM`-)TF6#uZzKRyAZ zdVdk`XG09Xca~&DVI2?^nHWlxT|W`ZAbg){zec>J4UR^EswomLB+)?t3*<9_nu7b3C2uiSpoZ^WT;}2Cu4Z zb`RQBIbc`NQqVK2D~hSAD@tSvwux_K(U)br@y6Wm);wPZfs8yxL`}XEIvk8OQ8=UL zbOY}_6YXi;&@*6JJr(Klm<<-)=e+j+LVM?1~ef!Tj(4v*2`$eX4x~WxTj8_ZvINR_&NXs;Eqvge9vp@mjMv~ literal 0 HcmV?d00001 diff --git a/tests/unittest/baseimgr_fixtures/i686/C-0.2-1.i686.rpm b/tests/unittest/baseimgr_fixtures/i686/C-0.2-1.i686.rpm new file mode 100644 index 0000000000000000000000000000000000000000..12358669998bf21158645cb24cbb5856dc308daa GIT binary patch literal 1396 zcmbVMOK22H7_Lrc)%Ato%En!lSrkdoY9}+3p2_O?$i!d}lJSL!C{o>1lQd30(%rK= z89j*y4D|TZNXn(fB(Dw>h5P3 zp5JR{SXz;%^fd3L=l{Dj_RZ&^Coj%uN=LTckd2VpkbcM_6kY(F1)&As_8DLTvR3iG zf#jcpz`y+kknEcwnrZdq^1W8Z%JinCkuO&avp1JBdQzDR_Pi-`-NKZHfG<{J{~qCI zyy+)Pe%pNP#;Oy0-$Ho=68F?>HZS8DH5mJ(@8yiO&4FqY1bt}#0?DTgAw8`RebYJG z6#olIoO&huQ^hHUIGyWT$XvyrDUN!v{W*|gQ;O5MDPLCce}Et7fPAl%yPs%^2 zIGvT^hZKLOIL(Iod9V0bizmKQysG&3KlD1b3TQ3MBjQivQ5!8gj?> zP9W-QD}c}?Mu3RdRskvBC=l@)-8*p;Nd9>s`Ii;HqqtQ3p5hh7A1F?JQ~Y#`FFpmN zdM}9=S&`v=XWgtMtV3c8@EuexcGmL-&!oHJJUHCkPo$S*<%!;uCGXLUnQ z;d{@D!Ciz}btz!4r^8SMZ!#j5m z4vZe$HN0nMacco?6&P*jwbr9{dxY(>Ib*3+}4*h>Gfx9-e3W(a;zNwBf=1*{9+AGBu znQ0C&)wKnxWL{!MzG8eCPIEoXR5z{XXZ{Lbe-Bvi8^^mj{sT_y_b~s0)BGs&3bV$% z$~;(N=MH9*c_*Cqeu=pjPWdMxd|T%(IK{6s?`Ebv6mNnfze4?}-`NMpe8mMP?uTQ( zvY%Op)A$3-31*d)a%v}}4T zG?Ws2xl}6~SF@Qkl5<1hl^fM55Kb9-(+MLbyNy9?$7){di)rI2Q%g|DifCgpmX%2( zw;t{?)0wQaELj{8)zb2>sXbO-z8ObI4XPg8b${{Kr+QRBC{Vorel@HXuS-Sg|G?er z74eK=id~y_pRx^|&R8V) zUR)G)=R|GwtW)=u9XUQ9E4N2Gr*Gf6)-d<{(F=8NfsU0B^)sCZdl#F&k1k~GJx?;@ mRYzyeOg)&^>f0|@O+L-5LODIr{PF6W+M6eD;Qb*}|G;mds>wV6 literal 0 HcmV?d00001 diff --git a/tests/unittest/baseimgr_fixtures/localpkgs/H-0.2-1.i586.rpm b/tests/unittest/baseimgr_fixtures/localpkgs/H-0.2-1.i586.rpm new file mode 100644 index 0000000000000000000000000000000000000000..896bd53bdd406312efffb035060bd56fca80f290 GIT binary patch literal 1396 zcmbVMTWAzl7(SD%)p{v{f@!N|#ZnUL88^F=%~rc=lNdG#$<_-dqR83VGn>JkOJ-)< z&FWL>gHOJQ2-O$C7ZGVo^~DE4C{*9l$0!Yo3Q>$ANEI|$zkl{br0r7={PWHC-_L*M z%-p4?ciI`2R^TZ;&AaLS|1OO!`Df_K%d?u&k!>GjJ7g(j0J0i|R{=kO(1LIKEHDAt ztoRck`KKW8Z+`|P`%Z{f?#>D`la@wWrc0%CE@hd$JyMp1*;}%#jA58x zJc|6STeir$aQv#&P0wLf+pX1^-IL2Qb+hy^F!jK9P`S`q&t-Wg-4*A-=9a%NeGFbz zyVN;oSLJ|RK}%uRqOK?=tDY#6DJ+QZWHFGIU4Lip_Z&ZvVJKsdVd2Psg${+I4HP!? zte(PsH{xeTPw56&Py7!s^qe053FthRwf+mOCm%^Cc_qnx+m}gxKvb)E`kVQ{k-?EY z`-TR`j_e)Tzo&m!9&VPbo6?VL&kaGs2!rN+;6>7mFlo+x5eO$AhCVOVEK3GFv>P&S zB)OA8v?Bs@JWm6}dsK5}z9L;2*d}s`aMCr$1JCtpA+NdL+isahqJ)t!)3-fVZ?JSc zdmbUB+j`QhX+QBjZZ;R_Uag+*ZHyko{O`S9dA^Np)INeTQ7mNdvSVz+Vb-zguS6-+ zw(XmT#ih|i-<1m&&wMfS$FH~a^-cQx8QV0~_vOgr&X*IjLGPhZ{q8yEo_p`RZx-(_y|xHg zA!v7~PP>zy|JM|;<uU z@)=6;V{j!dy;|JkayvafPpkAqeKI2b5iRC-YJR`d?TALD&*67@kqfg-y?oZ@orq08 zzd5sfL*LwGCd*yvU4x#rP7GY8}k9Z<^1;ybRqq2h8`Cs15>{)ig$>hz7R7s1l-BTQ}{)#{2CRp!AmJGL=rn0LTw?H8Hr;MD&Tgm>%M38(yZ=3UI+nVaG0FKvfo|BgO5=1cX= z{cy~eoN&rV;Z)zm9B1CgtTVSVCzw6VDQ13NTd#qsUx@OZA|!C$g1<9nO}$hR*3$Z4Q@hQ+LJN+MtjY?$b6@G#D=V@OhV4qO$y7 z;Og;+ST<>hd_j0b(jQP=RcvgN42U?Csr;&39~KkF*7Y zjz~zI6&FOqSy5N>#u4?}4j-F~R9GXysk`@XHocvG_)M-Z(vcFPaVEIGXQBD)$b8P) q{U|$HePpJ0{K1sg*nYYC%Hx78q*G%p?{B=SyM5voo*z2(5Bvfw#m4yn literal 0 HcmV?d00001 diff --git a/tests/unittest/baseimgr_fixtures/repodata/4bb63d1039a6f0d3fd1e7035acff76e7015963cabab2751263c7a20f4ff1c668-group.xml.gz b/tests/unittest/baseimgr_fixtures/repodata/4bb63d1039a6f0d3fd1e7035acff76e7015963cabab2751263c7a20f4ff1c668-group.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..ec5cb9e4bf82860e49775a29b133f73fff6ce516 GIT binary patch literal 316 zcmV-C0mJ?uiwFn+00002|1W57ZDlWbX<=`1X<=?>FL!TpYjA8~V`VQ*Wo1WiFHm7) zYhh<)Elpu=VP|D>FKuaKEp={bbaZ8NbT4yoWn(XLWpHmVa%FIDWMOn+FK2RZb#N|t zZEOIQk-<*GFbsz8eTpa#P{Vafvm5XlUSmeIBn`1sjkhPPVMXEsw_l$>TXtfO*BI1F zh5eEy{Ww18qaDn=#LTLd5+6#AlYSG)2Y}#Hy^gM4Xe3u5lAuFDXpZiBMiDBB?>%W* zDTJ|&gpBhA&$Rb(WrE(J?Vyx7m!;;f)UtQ>giHon*hs=io!#O_9r0XzmUaSk)aI7e zvp)s0Qfl*mlFjMc1kbXOofUdl@{wuMj$W|_(e}x}Ui^dq{7?Vow|^(!D;ns}W8n5f OcK8G_D#1~}0RRBe@{*kZ literal 0 HcmV?d00001 diff --git a/tests/unittest/baseimgr_fixtures/repodata/ea95ecaccf9abc214715b1724188a3ecfcae1eb9b7855127938b39de83fbc303-patterns.xml.gz b/tests/unittest/baseimgr_fixtures/repodata/ea95ecaccf9abc214715b1724188a3ecfcae1eb9b7855127938b39de83fbc303-patterns.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..ba21df67966bf2b05de7c6e727c278165dfea658 GIT binary patch literal 350 zcmV-k0ipgMiwFn+00002|1W57ZDlWbX<=`1X<=?>FL!TpYjA8~V`VQ*Wo1WiFHm7) zYhh<)Elpu=VP|D>FKuaKEp={bbaZ8NbT4yoWn(XLWpHmVa%FIDWMOn+FK}UWbY*gG zb1ryoYyg#zOK!t33`F-ig`fkN?beVLpo^y0P;Ax}qF+VINN!)*j#6}yMR&xT8UEDq z>YZ3HlZ|1JuicA0>Vry#8FL^p#uB)4sT&hD5NMEJ%&7+maY5(0F?vX5yqFomBb&*v z0V;%WkI6mP=j0z*XG6JmQ@LP=Q~AwRPqVj0{y$G2giyhF)MrDeU@KQf#e0))`mJJd z??K`-X2D2o!>piLR{MlBW}CSF2R2ZLFL!TpYjA8~V`VQ*Wo1WiFHm7) zYhh<)Elpu=VP|D>FKuaKEp={bbaZ8NbT4yoWn(XLWpHmVE-x-}WpHm~VRT_HW@&6? zY-w|Jb1ryoYyh>C!EW0y42JJ}3d8p`5-C#B(6m^$b$fvA0VI-YgQiK*rb8cp4A7*9 zU3zE?1A;Bt{P>eU&o5u@*VA8nd|GWc%Q>Efd9sacb+x%!&VPPie=hUo#i#SJTHAW{ zw0oNT{N`yn-|lt~Ulxn?YV-VZrq6eFX8OFiw_Ve=Ym4Lgd3tDa*KW+esk8s-^>KQ* zyIJXS&H+Xu8rHH5A~ED(5-AK#rBV!7g?j8GV278>MWfgHi#h*jFGIC;OVp~2fXhmQV&gsHx}m<2PbzyB?OXy zZr<7`b@X_qAxN}T(fzsC>@NI5i`~yn)_u3i;0076UNUi_? literal 0 HcmV?d00001 diff --git a/tests/unittest/baseimgr_fixtures/repodata/other.xml.gz b/tests/unittest/baseimgr_fixtures/repodata/other.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..bfb4320376325191beac0bc184e7dcdddb76e22b GIT binary patch literal 697 zcmV;q0!IBGiwFn+00002|1W57ZDlWbX<=`1X<=?>FL!TpYjA8~V`VQ*Wo1WiFHm7) zYhh<)Elpu=VP|D>FKuaKEp={bbaZ8NbT4yoWn(XLWpHmVE-x-}WpHm~VRT_HZ**v7 zaxQpnYyh>C!EW0y42JK03d8p`5-C#BkhEC0b$fvA0VI-YgSJW0rb8cp%+O@OPCYD! z0ofK|ef-Iv%gfh?`{|cGJ+HT$)f~^mJlRIJy58KZ=AS>VKa~0M;%vFy-P)73U7I|9 z^SqjGce}@ri^ctV^YVJGFL!os`m%ViUE4=3{>0DIW0SjfV;)~;|I6F!^muo(*43N? zj6^i7Wf??b$iXC17@A6@7_bWU*hk0_F#tjZ8?kDV4#qrBoAzL<`P)3TC%IkCYbxyL zOnxoja+>UMyWjG>{EM&Wah{&+-gBK77iVY7#T(TA`5!)xIkMD3Lb0dFP*PL?z@!;1 zT1#kbj8PFgajnSKG_a@%duj*1uP5Tm1+w{JoQ;!ZwUI(-QMvY0ktj}%NQy##u~ZQQ3RW6hu)3~UY&?f&wi=*?Kxa78-%$qdIf`qee+ddLn9O)itb@AZ%V;} fnoE}x2s9b}*n!vok8p7u_7}ealSw4Z9|iyb{~Jrp literal 0 HcmV?d00001 diff --git a/tests/unittest/baseimgr_fixtures/repodata/primary.xml.gz b/tests/unittest/baseimgr_fixtures/repodata/primary.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..aaf04239868c849aa8e979a7bf7ba5ea738f911c GIT binary patch literal 1372 zcmV-i1*7^OiwFn+00002|1W57ZDlWbX<=`1X<=?>FL!TpYjA8~V`VQ*Wo1WiFHm7) zYhh<)Elpu=VP|D>FKuaKEp={bbaZ8NbT4yoWn(XLWpHmVE-x-}WpHm~VRT_HaB^vF zVRCsccx`L|-I_~t+cpq@@A(xRp4x*&yg_6nW+Y3pPnmYw9(n|Ug~hQ%DkSA``s)km z;YX83rmZMaW;{c3u>coXe*4h4|KWZykM5vuimDvMxQF5hN>kaQycxuQ{W-lz;}6-p z{sLNUb*m$@T*UQD;8D1xjmfGCv z8}RF^*uQl97`305Fo=Uj_AZM0rCvaG)lb&fAkej$Wd%<~KUv=f*>+12EGsh`#C}^| z;;%g%M>Wj-R^w!?Xl7t;o7H0bmS(027v7ZHo5Bv_zbAjhnMA}f&K+oJ9Onk8KwvOO z&azZ-jHog^$GJliQ;G;Bih#q)GLsV!-mKkA)^GIJg|0tmziqd76}hU8T4>sSvKtF} z78+9*%hqq>tGZ9egZ}oo>a3qU+y?ooo@d+BhkLzP&Y|c1(@%mtjJL%CB3I1)?lC1) zNX3{xrF>P)?K9Elz?$M8*m)`pD}P!=*|d5-2fIG$;Dq8X3=$S5_2-q*!OUn@gB!%b zRms(b_r(S7g@<17?Phhqy@hVWt$*<1_w&L)*+BNODxse|l|1U)L20Wxc_O)~tJN|a z>1I1;^ZYoz-rTHe+U)+*g+IvKwpwm9A4eXwn`%`X@ORnH>ZUfq=*^VJ;m0X6&=%^8 zT9@8y{&4Dc5R-IGS2)yg`_$fLUELMlj*Vz5gtDzaN8vLc#8+|T=K98?G5I~-`&EB^ ziC^whaY4zi9hcf{^0|fU#cTMqD(Y_-J$k;xQ~iFj^Yp{lx`+755s4RAVqsLu4aYgd zf}{*vLI`D6Qox`Y1p$I$OKHx9QdD?7o zGr}P)mEt6|nA<(b4?7?~JQDKgOXSgEll<^3ksto3BtLvR)x+~n^25>P5t%2B16Ra= zusPP4anOz{$f;nt4+O>tYXszJ$_#gs5=^KQiYwuKD6mc*lKIi)$x;8>MDO=m! zee`7SUwr`fN0+Cc(?>_-J7u02qYiwJPB5pFSJ6E>OSVUcB3p`XWRKp?_2~4e9v_ivLm{PH^W6FmoM|lx zLPFw{QpZzeecLWI%Z14~!J1%%IB|}FN|BEOTA4jmk2_F3KE38#pjS~nK1-^{2cnuX z)|Kl2$94R6;>X7(eydjHO*M!1<<v6;{}NwT;qskIh1{e<0B4*bVLmjqm(@ zI8ewErKq)>ITrp>qw_t?Uw2^s`s7LlLOQqi8)qfg+qAoRJRk0_4^%E-)Umz4KF?p{ zrbmU91tfho2FIyP1@(11vM4m_iU^> + + 1323679441 + + b986688b812223a31fbe59f59229cdda5eb7010bdc1492c9a77d66b45dc51207 + 1323679441 + 697 + 1567 + da7a68cbd42c85411ecca4069f1d04d8e9fe27d12f0a912d837f68c5e15bdfc7 + + + + 8274d0eefe8cc49055ccd2e82743d37d91a2ebf1c1e4ff288aa5f3a8b3572194 + 1323679441 + 699 + 1562 + 77977b787c2e5c5326752100c77a93a6573385b43061671e7091a0895b5aad53 + + + + cc428f16cb0ae3a3981c43bd2ab494fa12549459912b491d4b10664e95703860 + 1323679441 + 1372 + 9145 + b61cfc6373c10e02ab0bf256cfa30ca01b1295765c4d9f7ce1cf147c79f7cb26 + + + + + ea95ecaccf9abc214715b1724188a3ecfcae1eb9b7855127938b39de83fbc303 + 1323679441.67 + 053b5757a184246546ddc61ee0533d755ccdd73799cd310042606da57f066897 + + + + 4bb63d1039a6f0d3fd1e7035acff76e7015963cabab2751263c7a20f4ff1c668 + 1323679441.82 + b830ae0d0a36c4c1044fcc7c87797d374053ed3909e6d84770704b3016c992c6 + + diff --git a/tests/unittest/baseimgr_fixtures/test.ks b/tests/unittest/baseimgr_fixtures/test.ks new file mode 100644 index 0000000..aa0425f --- /dev/null +++ b/tests/unittest/baseimgr_fixtures/test.ks @@ -0,0 +1,14 @@ + +part / --size 3000 --ondisk sda --fstype=ext3 + +repo --name=test --baseurl=$$$$$$ + +%packages +@base +A +EE +A* +*C +H.noarch + +%end diff --git a/tests/unittest/configmgr_fixtures/mic.conf b/tests/unittest/configmgr_fixtures/mic.conf new file mode 100644 index 0000000..8418475 --- /dev/null +++ b/tests/unittest/configmgr_fixtures/mic.conf @@ -0,0 +1,9 @@ +[common] + +[create] +local_pkgs_path=/opt/cache +pkgmgr=yum + +[chroot] + +[convert] diff --git a/tests/unittest/configmgr_fixtures/packages/repodata/filelists.sqlite.bz2 b/tests/unittest/configmgr_fixtures/packages/repodata/filelists.sqlite.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..0fbd0dfec14d311c08e262a0148b1ef36590b024 GIT binary patch literal 679 zcmV;Y0$BY*T4*^jL0KkKSws*w_y7Suf7}1MfR03Mf9n75{Ncav-)JBJ00V$90ssI& zKqx>0JvrUd*+G;FjUTBr)7095=?AH_A?jdFsKoUKfDD*{p{796CW*CA(GNnI4H*WE z5NOGWG6$#_0%SDN>S3ySC#suM2*4&xOeO%CGBRKz&;SBp2*OB+nWV`BDW{Mi(V#R8 z0S1gssgTo8K@8NYL#RoyucIWtpVFmdiAWynpaN!8(Ln{G$g2#A3j`LiAXBMtc2mb5 zbIn=Hz1Nf0JX1e(#KZ&y0D%T4brTfq$HCr&>hae6f6gVGHO46sz zH5uaB3!YV|fkY+WsUU|!TLDA?QNuF_XRTx@!6sy@7Kmk`4MfF4#<}+rO(Yq?KvO!+ z5F0&Ukl6;f*=!JqqN7=WxrkBLVI47qh;1k;;Ayas=<`5xzu+=}u5MSIjPQ~J2S_my zk7h&7XsoHCq7Gaq%OQ|S#R76C4Y)ZX(O8n9EG@yV?OIb_D}QK|_nMrQp0N{pWhXv} z8Cjx0zGwg)VcsZ);Bwj~QAgr@%y+3{^5441+801GBE>m|?>vSEQDsdCy^3LTrIU*m zR~FJFsETF`3V5XuEwow`0%)30*9;Z~Xw6(?*Zd~o7a3`>i$wq^qRPdPnPNjthb6#* zC%21C0ys$Q^44w^L-3K-P7b| zVEW%*=7YJOn#37WOS1lNcuDEvWp40y1Z~chdRP!czh8-&k_I#2gi=;PfYStXG6`g( zo@kV{v`x!6p0knSJBfABQVJ~MGi{3F81ZACCCVS+QFbCL!{Oj=2K6z$2Vup+@MI(Y NF64@Ep&*DLZ}2QwFF61J literal 0 HcmV?d00001 diff --git a/tests/unittest/configmgr_fixtures/packages/repodata/filelists.xml.gz b/tests/unittest/configmgr_fixtures/packages/repodata/filelists.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4eec18c49640f687d51d9cd753a36103c04c8ad GIT binary patch literal 304 zcmV-00nh#)iwFn+00002|1W57ZDlWGXk~6^b!jhWX>>1bX=83@FKuaKFLY&dbYEj{ zZf0p`ZD(>XaA9L%YiDJ1FD@@Ga%FIDWMOn+FJ@_MWo&74baO6vZEOHNPf3o0Fc7@+ z3ajsfaflZpOm2C>%mW;|Ar@c|HlsX0PK45z-m1E*+Us+k$Ukn;FF^w+IK3s&t|(f1sQT1j?cEDOONs9u0RRB8 Cs)qRh literal 0 HcmV?d00001 diff --git a/tests/unittest/configmgr_fixtures/packages/repodata/other.sqlite.bz2 b/tests/unittest/configmgr_fixtures/packages/repodata/other.sqlite.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..2054a8c5cc0865d9f32a5c296708a45764840487 GIT binary patch literal 644 zcmV-~0(<>JT4*^jL0KkKSyhP6t^ffk|J(oCfQsa0|LXt${Ncav-)Nu!1OtFD0ssO4 z04P8L9XjR4mKq8TQG{gm18QVuC^Q;qF*IloNCQJn00z_&q{*WxKP1TpH2?qr13{o< zGynhrps4auqd;f?000000004?GyoDwH4Qx!^%^vfQzxJrCeVkJ+Gv;n08CF)(?HbG zq=Sf{-|=}ci~rI?0t6sAu~Tp3I~D#EdVL#<2a^@VKFX^MIn7Apq}7K$ki*Onlt4Q2DF2^ z#-KXb^g?H15bUVeAl$DBhfv(P3V_O3k2xjpHz51ow&Jm8eTt(pAS5 z>@B6IeJxK^y%IL*I?0<#0N#V3kgOzq);*{dl*bkl+c7MwV07}q zIlCkWfWj%Kf}RX03nSe@lA>5fL4{N1O;ZH;Pd9N@PmrWQ(IibOSKdJ*9B@k%Ey~RY5EAU!Y20M2Zj?(>1bX=83@FKuaKFLY&dbYEj{ zZf0p`ZD(>XaA9L%YiDJ1FD@@Ga%FIDWMOn+FK={cWpXZfZEOHNk4cV$Fc3xeoWiPo zV>`qHElhSfLH7Y1yBGu*1SZPy+aT1nsp+Ze|LXCXM)JmW>*rvA=L`r2H~T)c27Z5@ zUm6~DR?V@))!S%E;=^X3i*fm;bnL_a$^AZHj((>TMte~7K4YtL^b4XXNmMlZt zdjogP3(c64SSYlGYV1wll@LNVg%bWHyf0*_tP+i5nzNU7TsS9nsc%?%4kXwK4Mf}` x5WBk0KrgjSuSkmOvPE#2k5#gkCTCu8JS5RN%PM-QI_rO*^&h}{ytWzv001jjg^U0I literal 0 HcmV?d00001 diff --git a/tests/unittest/configmgr_fixtures/packages/repodata/primary.sqlite.bz2 b/tests/unittest/configmgr_fixtures/packages/repodata/primary.sqlite.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..fe8e476a7580c8b0701b02628ef9ffb016a82f86 GIT binary patch literal 1616 zcmV-W2Cw--T4*^jL0KkKS<}ez8vq1&fB*mg{_f6i|N4Lb{_4N)|9n2c03ZYjfH499 z5HLfGg}Pt{e<1b&l7IjJ03{RxWN2kggp7m9GzOlaWZ6$BJwqm%Xa}Uo4Fg7+4=Ioj zQ`7@P)Iop(U;rZk0E_?;qZ3R4FaQL?FpLDrh{OyazyUA-5r6}6G5hpG}BB#(TRjKVq^wQ0iz=(Mg%m(!~uXtj0i9QOaKI601sUZ*(On|1)hov+C27nqKpa4BjNN8j<0009+AZWzNu5ndL zdLEt;;b+tO*v2iCaHx@A)B5?|hok9oBe%i9ROaGE)amlCc;P}PnNn+{l53-)jt(3+ zf7hnEA&{kY3CfAZ?y%3IY8P%}IosP{Gj&3Gqbi7ql;ooeNLnh$X7)}GBCWkFMzvPl z6!FsaP%9ZFjDzP~c%t*drs-1tjt&nuXuw5cVMgz;z4osoB>d@&$*glWI7E2vx~qF( zwv}q%WU|w%Nl-=>Wb~=GgsGHf$%~=DbspbBNU}I{$*xe$rImpxM^T18 zAMfS4UQ%6Y1@u*IRsAw2T!~k}I?$jZ1xkoNID&MsEIf!Yws;JYk_DL%$OhsBt%Sax;YIey$vSj(k%WwW^(_SJ36E$I#Pci>cdE7E+2R zqLmRw%~%gfR9zTQ)M=b-D@4BF<-zpvsQCE=O3?V|eO(@H$Pe4C?%qp{3j}z4YI4nJ zNDY}Jh}M-HQsZ%{r28*IKGjR^;@z>K%_*Z{=eV40o&610VZp)rS4%M0hWF=nI8wLG z?C{X}IkMT;;zw#eXLh}gM91}d=e1G@!HUYbR|bPgY6GPPCa&S>g38n;1_ku?@H_CpynZ!0;q>6RXobY(__v z;%sjJ)yU{>8{w)=t*CH&pADLANj+jiooRh83DEWtM(I3Gg%>JHl3;7z&^et&F~WkB z>TSUqiW_rLp1CEcrxQ{=f?ahcn3Tv_D$6z)XF2k&GgO(fjK+x;DBdfdvd(iiw74uy z?ncA5r7X^GYh@*#NoOjORCeOpYO1QLxNIXtp5G?5>~mI&-=CGeggUUYlxg7UIGnAc zc4mvF+Ty&w5*+;vt}L5L!%J9N$lO#lQ7Ve0D!OWDO1(;{;aO%CVvcBZE@i)zD{)Ol-uXDv*N(^&9NGossG$2%BtM(q0o4h-D~sD`NLFz#8# z(9p_E6TQ~qB6K@TB9Du$H@)w=v&Ql1Yu@#FdY7`+Rh0S5Em=iUp9yJ;%OzDvs*shB O{x0N-aG@cmk>WO085GO_ literal 0 HcmV?d00001 diff --git a/tests/unittest/configmgr_fixtures/packages/repodata/primary.xml.gz b/tests/unittest/configmgr_fixtures/packages/repodata/primary.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..51555e431de4b74b3e5a704e1ecd17d9b91e3008 GIT binary patch literal 654 zcmV;90&)ExiwFn+00002|1W57ZDlWGXk~6^b!jhWX>>1bX=83@FKuaKFLY&dbYEj{ zZf0p`ZD(>XaA9L%YiDJ1FD@@Ga%FIDWMOn+FK}{cZDDeGE_iKh0F_fqkJB&^zVENF zd;+1?c{Gn!Nmd*dE*wA$2ac{iZLB6vu$^kluVkkd!A8?#+=#kTX`U8r zG(C1zMWF9QT~btr$oMzV_!4ZSi5kSo4(+v!t$CEB*vsjtWJ!NMJ=1EFhjAVRSqgCm zJkAb0$~Re(B>5rE61h*LjMHt#v*aLxJPh`^2ooXFe49tGm0`i=B4b7Tx7=JRXnS{= zMUz8k$fRoad#(g4jOrZ&+8q^%dQ5;8`%{HWD zKd447P`0^_$*SKl*GBgyz&R>y9d8dca0LDEmWVsemO@U3U-eztTSlY8Fq&pO*iz_$G%7MSlF`Xi*?XW zDJJ(qAC=afb=48qqvK$OgFLyepXiHw39;Q^1fW&j#8@M|mMLcOFEKT631(%u#--uB zj4NrBkMGRS8E+E37tx#Utgw*@x`Lpcxe$Nbr!i7;X!sG|$ + + 1323324513 + + + a764872097928532f9ff374d36ce56393c05ddc631f0b6d5c953fdc382db8b24 + 1323324514.06 + 644 + 6144 + 70b849fade981be795f148b2144dde802bf13b9c97e80d42ddf43008480f4a51 + 10 + + + d2f760614fc731dcefb65067a92e39d81d77de809f95059635a5455f18af36ac + 1323324513 + 299 + 282 + 0fc2b7f25d345a3720af2c1ac5b5624442af094ec1b27d572f3afef6c00bf49b + + + + + a6a2911beef45b8872f16f90b86384f29c586850edc34842ba86e3bff83fa8d2 + 1323324514.36 + 679 + 7168 + 0248529164242123addf80e0d1e5aea55ae8682d7e43df7dcfd16f7c7508f937 + 10 + + + 44a10b7c93db9ab466c02ce2afb5328376f63436c484147183f76475b45aca1e + 1323324513 + 304 + 286 + 1b4abfd7b5dcb0e9d323a3dbde9ceff48246c5bdb28619dea34bcd8a1919b0b8 + + + + + 8708d817534323eb42163ce48a390468fbc051c18902ea280938481bfd9ec95d + 1323324515.01 + 1616 + 21504 + 1d475a2af9b29cda28eaace008cd130301e6a2e175735b0119e6e5bdbc16cd21 + 10 + + + 6b8bd0db22f5cc42d5ab5ee8abdbee5c46b17342ecb04539f243e8820fa1459f + 1323324513 + 654 + 1161 + de9b99406dc81ac5a5c7891453215441905ddff36c471f9b4b01c4f2c94e0983 + + + diff --git a/tests/unittest/configmgr_fixtures/packages/test-0-1.i686.rpm b/tests/unittest/configmgr_fixtures/packages/test-0-1.i686.rpm new file mode 100644 index 0000000000000000000000000000000000000000..76d728ec299b0252d60d49b1b6adcede6879985b GIT binary patch literal 1400 zcmbVLU2has7(TNd<)dIoAh9SWt0blkoMF4Wo!u&13$3L@Lswd23o&qZ=FE1&&IdEI zxVv&?xFaDXgh=#4P4I#cf=2iahC8k?8cfub%IA$539QdMdn5$HjVF2Lndg1qbKZ}c zbNj-bANv@VmdH5aIX+C{e=d!^@bu1;7nd|;Bi|e_2CM)kfpti{7W^VW3$cAmU>(@1 z^er&O=K#d_-360>9MDPyXIPlds9hW>m8_CwTK0%j6hfL-UW|@f=CH8s^2jJ+vGhaB zr&gam@yIP2FzyTf8F&V^7q*iLng8-T_cYW(}BPY+xlo>%Y3G zkBrhc!KA5n@-HjBN@?ng-usolt@Im8-vLvf+m)ui>AZ2J?}N!-Rr*gb`Dwy;h^BcHYn zjC%C>o?R=0>AVFn_G{xx*T57%4W@Wo>ED%>O8=p>qcqKl;u}ie>*@8U!Kf=kHEI)# z{%`z4!%TW%($0p$IxOlk>jY6Ybv?(7&3kUly;ZjsrC-Q#TgHczAcU2%UDfxG=C`mN zVc2jjk+^{$Z<}q$iS$^*^_wl`nq@Q1OZUo%Bg=?FuU81A9Bh?MUdRv8S!iJOlR#j@ ztqo4O4LRx75gZROWvhyIBM>&Z;%RYIRwL=St;g<(zzZW8$1;uBBRu)c*4^=ZXNVOI z)1doaOrHfKXB44EjC^V<8#$^Ai{`hI0ttL3pXK!|58Y5^`G=y>z%$&+Cl5}|?48>^ zwQz8DX5Ze4cPj{UWXqCaIv0pI!NhqO1&Op044v~(M8d1YamZ^;$B_|_-Hxmjv)n6S zwQFw^F-7z4Q7RIz*-%aPe;!qX)lU| zryqmYefrU<7a+aM-R`4tysvv$>df!Q{C|0{=Iac5U3&>ey*h2)V4twpK4JrFf6{A( z%-cJDtFB0n?7V#L{AX|e{KI!wjZIy;5{zxWwsXtO^59=bmZId<@56Tg_G_~zFI^U! f$3E>pex+kD?So@Ozn-~1@Wp$d;~OK>!v22&BNhsA literal 0 HcmV?d00001 diff --git a/tests/unittest/configmgr_fixtures/test.ks b/tests/unittest/configmgr_fixtures/test.ks new file mode 100644 index 0000000..6e15df8 --- /dev/null +++ b/tests/unittest/configmgr_fixtures/test.ks @@ -0,0 +1,28 @@ +# +# Do not Edit! Generated by: +# kickstarter.py +# + +lang en_US.UTF-8 +keyboard us +timezone --utc America/Los_Angeles +part / --size 3000 --ondisk sda --fstype=ext3 +rootpw meego +xconfig --startxonboot +bootloader --timeout=0 --append="quiet" +desktop --autologinuser=meego +user --name meego --groups audio,video --password meego + +repo --name=test --baseurl=$$$$$$ --save --debuginfo --source --gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-meego + +%packages + +%end + +%post + +%end + +%post --nochroot + +%end diff --git a/tests/unittest/pluginmgr_fixtures/backend/yumtest.py b/tests/unittest/pluginmgr_fixtures/backend/yumtest.py new file mode 100644 index 0000000..61ba220 --- /dev/null +++ b/tests/unittest/pluginmgr_fixtures/backend/yumtest.py @@ -0,0 +1,8 @@ +#!/usr/bin/python -tt + +from mic.pluginbase import BackendPlugin +class Yum(BackendPlugin): + name = 'yumtest' + + def __init__(self): + pass diff --git a/tests/unittest/pluginmgr_fixtures/backend/zypptest.py b/tests/unittest/pluginmgr_fixtures/backend/zypptest.py new file mode 100644 index 0000000..6ebe1f3 --- /dev/null +++ b/tests/unittest/pluginmgr_fixtures/backend/zypptest.py @@ -0,0 +1,9 @@ +#!/usr/bin/python -tt + +from mic.pluginbase import BackendPlugin +class Zypp(BackendPlugin): + name = 'zypptest' + + def __init__(self, root = None, cache = None, arch = None): + pass + diff --git a/tests/unittest/pluginmgr_fixtures/imager/fs_test.py b/tests/unittest/pluginmgr_fixtures/imager/fs_test.py new file mode 100644 index 0000000..ced1ce2 --- /dev/null +++ b/tests/unittest/pluginmgr_fixtures/imager/fs_test.py @@ -0,0 +1,6 @@ +#!/usr/bin/python -tt + +from mic.pluginbase import ImagerPlugin +class FsPlugin(ImagerPlugin): + name = 'fstest' + diff --git a/tests/unittest/pluginmgr_fixtures/imager/loop_test.py b/tests/unittest/pluginmgr_fixtures/imager/loop_test.py new file mode 100644 index 0000000..5fb515c --- /dev/null +++ b/tests/unittest/pluginmgr_fixtures/imager/loop_test.py @@ -0,0 +1,6 @@ +#!/usr/bin/python -tt + +from mic.pluginbase import ImagerPlugin +class LoopPlugin(ImagerPlugin): + name = 'looptest' + diff --git a/tests/unittest/suite.py b/tests/unittest/suite.py new file mode 100644 index 0000000..d738d00 --- /dev/null +++ b/tests/unittest/suite.py @@ -0,0 +1,16 @@ +import os +import sys +import unittest +import test_configmgr +import test_pluginmgr +import test_baseimager + +if os.getuid() != 0: + raise SystemExit("Root permission is needed") + +suite = unittest.TestSuite() +suite.addTests(test_pluginmgr.suite()) +suite.addTests(test_configmgr.suite()) +suite.addTests(test_baseimager.suite()) +result = unittest.TextTestRunner(verbosity=2).run(suite) +sys.exit(not result.wasSuccessful()) diff --git a/tests/unittest/test_baseimager.py b/tests/unittest/test_baseimager.py new file mode 100644 index 0000000..6ea6c9a --- /dev/null +++ b/tests/unittest/test_baseimager.py @@ -0,0 +1,140 @@ +#!/usr/bin/python + +import os +import sys +import rpm +import glob +import shutil +import StringIO +import subprocess +import unittest +from mic import plugin as pluginmgr +from mic import conf as configmgr +from mic import msger +from mic.imager import fs + +TEST_BASEIMGR_LOC = os.path.join(os.getcwd(), 'baseimgr_fixtures') +KSCONF = os.path.join(os.getcwd(), 'baseimgr_fixtures', 'test.ks') +KSBAK = os.path.join(os.getcwd(), 'baseimgr_fixtures', 'test.ks.bak') +REPOURI = os.path.join(os.getcwd(), 'baseimgr_fixtures') +CACHEDIR = os.path.join(os.getcwd(), 'baseimgr_fixtures', 'cache') +RPMLOCK_PATH = None + +def suite(): + return unittest.makeSuite(BaseImgrTest) + +class BaseImgrTest(unittest.TestCase): + + arch = 'i686' + rootdir = "%s/rootdir" % os.getcwd() + expect_pkglist = ['A', 'ABC', 'C', 'D', 'E', 'F', 'G', 'H'] + + def setUp(self): + self.stdout = sys.stdout + self.stream = sys.stdout + msger.STREAM = StringIO.StringIO() + shutil.copy2(KSCONF, KSBAK) + with open(KSCONF, 'r') as f: + content = f.read() + content = content.replace('$$$$$$', "file://" + REPOURI) + with open(KSCONF, 'w') as f: + f.write(content) + msger.set_loglevel('quiet') + + def tearDown(self): + sys.stdout = self.stdout + msger.STREAM = self.stream + shutil.copy2(KSBAK, KSCONF) + shutil.rmtree (self.rootdir, ignore_errors = True) + shutil.rmtree (CACHEDIR, ignore_errors = True) + os.unlink(KSBAK) + + def getMountList(self, pattern): + real_mount_list = [] + dev_null = os.open("/dev/null", os.O_WRONLY) + p = subprocess.Popen('mount', stdout=subprocess.PIPE, stderr=subprocess.PIPE) + + for entry in p.communicate()[0].split('\n'): + if entry.find(pattern) > 0: + real_mount_list.append(entry.split(' ')[0]) + real_mount_list.sort() + os.close(dev_null) + return real_mount_list + + def getInsPkgList(self, rootdir): + installed_pkgs = [] + ts = rpm.TransactionSet (rootdir) + hrs = ts.dbMatch() + for pkg in hrs: + installed_pkgs.append(pkg['name']) + installed_pkgs.sort() + ts.closeDB() + + return installed_pkgs + + def BaseImager(self, backend): + global RPMLOCK_PATH + + cfgmgr = configmgr.configmgr + creatoropts = cfgmgr.create + + creatoropts["cachedir"] = CACHEDIR + creatoropts["outdir"] = self.rootdir + creatoropts["arch"] = self.arch + creatoropts['pkgmgr'] = backend + cfgmgr._ksconf = KSCONF + pkgmgr = None + for (key, pcls) in pluginmgr.PluginMgr().get_plugins('backend').iteritems(): + if key == creatoropts['pkgmgr']: + pkgmgr = pcls + break + + creator = fs.FsImageCreator(creatoropts, pkgmgr) + creator._recording_pkgs.append('name') + + creator.check_depend_tools() + + # Test mount interface + creator.mount(None, creatoropts["cachedir"]) + if RPMLOCK_PATH: + os.makedirs(RPMLOCK_PATH) + else: + RPMLOCK_PATH = "%s/var/lib/rpm" % creator._instroot + exp_mount_list = ['/sys', '/proc', '/proc/sys/fs/binfmt_misc', '/dev/pts', CACHEDIR] + exp_mount_list.sort() + real_mount_list = self.getMountList(creator._instroot) + self.assertEqual(real_mount_list, exp_mount_list) + + # Test Install interface + creator.install() + installed_pkgs = self.getInsPkgList(creator._instroot) + self.assertEqual(installed_pkgs, self.expect_pkglist) + + # Test umount interface + creator.unmount() + real_mount_list = self.getMountList(creator._instroot) + self.assertEqual(real_mount_list, []) + # Test Packaging interface + creator.package(creatoropts["outdir"]) + installed_pkgs = self.getInsPkgList("%s/%s" % (self.rootdir, creator.name)) + self.assertEqual(installed_pkgs, self.expect_pkglist) + + creator.cleanup() + # Test recore_pkgs option + pkglist = ['A-0.1-1.i586.rpm', 'ABC-0.1-1.i586.rpm', 'C-0.2-1.i686.rpm', + 'D-0.1-1.i586.rpm', 'E-0.1-1.i586.rpm', 'F-0.1-1.noarch.rpm', + 'G-0.1-1.i586.rpm', 'H-0.1-1.noarch.rpm'] + f = open ("%s/%s.packages" % (self.rootdir, creator.name)) + real_pkglist = f.read() + self.assertEqual(real_pkglist, '\n'.join(pkglist)) + + def testBaseImagerZypp(self): + self.BaseImager('zypp') + + def testBaseImagerYum(self): + self.BaseImager('yum') + +if __name__ == "__main__": + if os.getuid() != 0: + raise SystemExit("Root permission is needed") + unittest.main() diff --git a/tests/unittest/test_configmgr.py b/tests/unittest/test_configmgr.py new file mode 100644 index 0000000..fcebc9f --- /dev/null +++ b/tests/unittest/test_configmgr.py @@ -0,0 +1,74 @@ +#!/usr/bin/python + +import os +import sys +import shutil +import StringIO + +from mic import conf, msger +from pykickstart.parser import KickstartParser +import unittest2 as unittest + +SITECONF = os.path.join(os.getcwd(), 'configmgr_fixtures', 'mic.conf') +KSCONF = os.path.join(os.getcwd(), 'configmgr_fixtures', 'test.ks') +KSBAK = os.path.join(os.getcwd(), 'configmgr_fixtures', 'test.ks.bak') +REPOURI = os.path.join(os.getcwd(), 'configmgr_fixtures', 'packages') +CACHEDIR = os.path.join(os.getcwd(), 'configmgr_fixtures', 'cache') + +def suite(): + return unittest.makeSuite(ConfigMgrTest) + +class ConfigMgrTest(unittest.TestCase): + + def setUp(self): + self.configmgr = conf.ConfigMgr(siteconf=SITECONF) + shutil.copy2(KSCONF, KSBAK) + with open(KSCONF, 'r') as f: + content = f.read() + content = content.replace('$$$$$$', "file://" + REPOURI) + with open(KSCONF, 'w') as f: + f.write(content) + if not os.path.exists(CACHEDIR): + os.makedirs(CACHEDIR) + self.configmgr.create['cachedir'] = CACHEDIR + self.level = msger.get_loglevel() + msger.set_loglevel('quiet') + + def tearDown(self): + msger.set_loglevel(self.level) + shutil.copy2(KSBAK, KSCONF) + os.unlink(KSBAK) + shutil.rmtree(CACHEDIR, ignore_errors = True) + +# def testCommonSection(self): +# self.assertEqual(self.configmgr.common['test'], 'test') + + def testCreateSection(self): + #self.assertEqual(self.configmgr.create['local_pkgs_path'], '/opt/cache') + self.assertEqual(self.configmgr.create['pkgmgr'], 'yum') + +# def testChrootSection(self): +# self.assertEqual(self.configmgr.chroot['test2'], 'test2') + +# def testConvertSection(self): +# self.assertEqual(self.configmgr.convert['test3'], 'test3') + + def testKickstartConfig(self): + cachedir = self.configmgr.create['cachedir'] + repomd = [{'baseurl': 'file://%s' % REPOURI , + 'cachedir': '%s' % cachedir, + 'comps': None, + 'name': 'test', + 'patterns': None, + 'primary': '%s/test/primary.sqlite' % cachedir, + 'proxies': None, + 'repokey': None, + 'repomd': '%s/test/repomd.xml' % cachedir}] + self.configmgr._ksconf = KSCONF + self.assertTrue(isinstance(self.configmgr.create['ks'], KickstartParser)) + self.assertEqual(self.configmgr.create['name'], 'test') + self.assertDictEqual(repomd[0], self.configmgr.create['repomd'][0]) + self.assertEqual(self.configmgr.create['arch'], 'i686') + +if __name__ == "__main__": + unittest.main() diff --git a/tests/unittest/test_pluginmgr.py b/tests/unittest/test_pluginmgr.py new file mode 100644 index 0000000..5c207b6 --- /dev/null +++ b/tests/unittest/test_pluginmgr.py @@ -0,0 +1,77 @@ +#!/usr/bin/python + +import os +import sys +import glob +import StringIO +from mic import plugin +from mic import pluginbase +from mic import msger +import unittest + +TEST_PLUGINS_LOC = os.path.join(os.getcwd(), 'pluginmgr_fixtures') + +def suite(): + return unittest.makeSuite(PluginMgrTest) + +class PluginMgrTest(unittest.TestCase): + + def setUp(self): + self.defploc = plugin.DEFAULT_PLUGIN_LOCATION + plugin.DEFAULT_PLUGIN_LOCATION = TEST_PLUGINS_LOC + self.plugin = plugin.PluginMgr() + self.stdout = sys.stdout + self.stderr = sys.stderr + sys.stdout = StringIO.StringIO() + sys.stderr = StringIO.StringIO() + + def tearDown(self): + sys.stdout = self.stdout + sys.stderr = self.stderr + #dirs = map(lambda pt: os.path.join(TEST_PLUGINS_LOC, pt), \ + # plugin.PLUGIN_TYPES) + #pys = reduce(lambda p, q: p+q, map(lambda d: filter( + # lambda x: x.endswith(".py"), os.listdir(d)), dirs)) + #for mod in pys: + # if mod.strip('.py') in sys.modules: + # del sys.modules[mod.strip('.py')] + #self.plugin._intance = None + #self.plugin.plugin_dirs = {} + plugin.DEFAULT_PLUGIN_LOCATION = self.defploc + + def testPluginDir(self): + plugindir = {} + for pt in plugin.PLUGIN_TYPES: + plugindir[os.path.join(TEST_PLUGINS_LOC, pt)] = True + #self.assertEqual(self.plugin.plugin_dirs.keys(), plugindir.keys()) + self.assertTrue(any([x in plugindir.keys() for x in self.plugin.plugin_dirs.keys()])) + + def testNoExistedPluginDir(self): + noexistdir = "/xxxx/xxxx/xxxx/xxxx" + self.plugin._add_plugindir(noexistdir) + warn = "Warning: Plugin dir is not a directory or does not exist: " \ + "%s\n" % noexistdir + self.assertEqual(sys.stderr.getvalue(), warn) + + def testBackendPlugins(self): + expect = ['zypptest', 'yumtest'] + expect.sort() + lst = [] + for name, cls in self.plugin.get_plugins('backend').items(): + lst.append(name) + lst.sort() + #self.assertEqual(lst, expect) + self.assertTrue(any([x in expect for x in lst])) + + def testImagerPlugins(self): + expect = ['fstest', 'looptest'] + expect.sort() + lst = [] + for name, cls in self.plugin.get_plugins('imager').items(): + lst.append(name) + lst.sort() + #self.assertEqual(lst, expect) + self.assertTrue(any([x in expect for x in lst])) + +if __name__ == "__main__": + unittest.main() -- 2.7.4