summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2012-08-14 14:58:25 +0200
committerMichael Vogt <michael.vogt@ubuntu.com>2012-08-14 14:58:25 +0200
commitc1ad8a0fbc0adfebdb847f28da92b3d5a1f90582 (patch)
tree80225148a1c1d0d4283fb76e827c6ccc9ca206bf /tests
parentc736d5c9290a2ffdb8802a4ac62e521cf1218b54 (diff)
parentdfd6bacface878eecf3fec4876bdae2f0491a646 (diff)
downloadpython-apt-c1ad8a0fbc0adfebdb847f28da92b3d5a1f90582.tar.gz
merged from the debian-sid tree
Diffstat (limited to 'tests')
-rw-r--r--tests/data/misc/foo_Release492
-rw-r--r--tests/data/tagfile/history.1.log.gzbin0 -> 270 bytes
-rw-r--r--tests/data/tagfile/history.log15
-rw-r--r--tests/data/test-provides/etc/apt/sources.list1
-rw-r--r--tests/data/test-provides/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_oneiric_main_binary-i386_Packages75
-rw-r--r--tests/data/test-provides/var/lib/dpkg/status0
-rw-r--r--tests/data/test_debs/data-tar-broken.debbin0 -> 626 bytes
-rw-r--r--tests/data/test_debs/multiarch-test1_i386.debbin0 -> 978 bytes
-rwxr-xr-xtests/fakeroot-apt-key2
-rw-r--r--tests/test_all.py5
-rw-r--r--tests/test_apt_cache.py80
-rw-r--r--tests/test_aptsources.py26
-rw-r--r--tests/test_aptsources_ports.py4
-rw-r--r--tests/test_auth.py235
-rw-r--r--tests/test_debfile.py28
-rw-r--r--tests/test_debfile_multiarch.py55
-rw-r--r--tests/test_lp659438.py74
-rw-r--r--tests/test_policy.py39
-rw-r--r--tests/test_progress.py2
-rw-r--r--tests/test_tagfile.py133
-rw-r--r--tests/test_utils.py67
21 files changed, 1301 insertions, 32 deletions
diff --git a/tests/data/misc/foo_Release b/tests/data/misc/foo_Release
new file mode 100644
index 00000000..0f42220c
--- /dev/null
+++ b/tests/data/misc/foo_Release
@@ -0,0 +1,492 @@
+Origin: Ubuntu
+Label: Ubuntu
+Suite: precise
+Version: 12.04
+Codename: precise
+Date: Wed, 25 Apr 2012 22:49:23 UTC
+Architectures: amd64 armel armhf i386 powerpc
+Components: main restricted universe multiverse
+Description: Ubuntu Precise 12.04
+MD5Sum:
+ 6a815674c5b3178152d449a9396cb2e5 1640344 main/binary-amd64/Packages.gz
+ 98140fa3444c9e945f6944acbb9ddcff 7818931 main/binary-amd64/Packages
+ 846e0e856bcbf9b64d9119c8727cda8c 97 main/binary-amd64/Release
+ cfd5f57de107941bbe661ffada4dce88 1272844 main/binary-amd64/Packages.bz2
+ 5b220aea8056a900c8eaf28e79cdd64a 97 main/binary-armel/Release
+ 92e3160bbb664f8b5d7d4f2d161dd81c 1619078 main/binary-armel/Packages.gz
+ 28fbf69ee965639c92c8a54256cd6ba1 1257389 main/binary-armel/Packages.bz2
+ 4e3ba67129f73f8afe28186b31eb3112 7743353 main/binary-armel/Packages
+ 81cfd32bf54d2b007542e14e09953bae 97 main/binary-armhf/Release
+ ed404b1123d1497cb09aceae8850fc06 7620333 main/binary-armhf/Packages
+ 64156d29df19fdaa36fa4eafd4c17dc1 1257653 main/binary-armhf/Packages.bz2
+ 3d3238bd89cb1e8e23a1a4a5bf574739 1617483 main/binary-armhf/Packages.gz
+ dc2fe62f05e29f36ffe4e58499796ae6 1273857 main/binary-i386/Packages.bz2
+ 7c678c50ce682e9f5cc5ba8f8eb2d6ad 1641082 main/binary-i386/Packages.gz
+ b6aa9a96c765bbd4202dae7dbaf18cc2 96 main/binary-i386/Release
+ eb3b4870b877863fecf1d3307c3beb54 7816415 main/binary-i386/Packages
+ 54658d89b612a38592431fe6b8a780a1 1627734 main/binary-powerpc/Packages.gz
+ 4185aca6984f00fd65aa0c0de12367d4 99 main/binary-powerpc/Release
+ fc9bf1959082733fc42c682285bf46e7 1263942 main/binary-powerpc/Packages.bz2
+ c32afd79c9163cffe013f98669deb727 7661552 main/binary-powerpc/Packages
+ ff5434612595a569236f7ba4990a3b63 62166 main/debian-installer/binary-amd64/Packages.gz
+ 7dd470290bacbacc7bec24830100aade 234592 main/debian-installer/binary-amd64/Packages
+ 013d9839e9c8f8c102daf6eb77841bf7 48784 main/debian-installer/binary-amd64/Packages.bz2
+ 08608ef832f2410970d07fdd802fc4e4 47964 main/debian-installer/binary-armel/Packages.bz2
+ 0a0a559023aac4096a38e2fb51870ddf 230310 main/debian-installer/binary-armel/Packages
+ f79f29b841a05b971ac318a9e0a396e0 61118 main/debian-installer/binary-armel/Packages.gz
+ 20a72276b6607fa58f52fcc5b7742ff4 62777 main/debian-installer/binary-armhf/Packages.gz
+ 8da4a15400cec4b06e2aa1bba6cfc2c3 49051 main/debian-installer/binary-armhf/Packages.bz2
+ 49f9f82a7c7e9e13c399d15df43148f1 238862 main/debian-installer/binary-armhf/Packages
+ 3dd181be504206f7abb41039dc508ed9 52279 main/debian-installer/binary-i386/Packages.bz2
+ 5c2c6ca586bb6ffb2de414e2cd063c70 259996 main/debian-installer/binary-i386/Packages
+ ca1b7db323ebef593617ef0a7c833dfb 67180 main/debian-installer/binary-i386/Packages.gz
+ 876f115ee26518319458fc26ec785485 246636 main/debian-installer/binary-powerpc/Packages
+ 49402b5b12b10804abfae14629d23f1c 50309 main/debian-installer/binary-powerpc/Packages.bz2
+ 29010a7ba3ac1e60a0efaef04f6f2e42 64468 main/debian-installer/binary-powerpc/Packages.gz
+ adf74189a01512a8f68d4bfc411dc692 3706 main/i18n/Index
+ 2f2ddab9be4ecc2c9e190bb639304943 4356187 main/source/Sources
+ 5c2893c352ebbf3ee380ebdab6b5e487 933770 main/source/Sources.bz2
+ 323e5ca1ba86c7a503c4c7b0772749b1 1174967 main/source/Sources.gz
+ 3c3104465b2c7e54f4b8f566ac825339 98 main/source/Release
+ f75f8a98e9e952194046da388a11c42a 119109 multiverse/binary-amd64/Packages.bz2
+ c2df9a9ff319486e3d6f46d9c35a8530 151924 multiverse/binary-amd64/Packages.gz
+ ece719c6a770134150f158cdb65ca6fc 581550 multiverse/binary-amd64/Packages
+ d3f34ec2fc86c95e4d3bc4606d751c66 103 multiverse/binary-amd64/Release
+ f296954282382f88b12dd8c64d813f5c 136295 multiverse/binary-armel/Packages.gz
+ d0da88f8a408fba12d44d5b6e107cfc0 519605 multiverse/binary-armel/Packages
+ 6d0c32b1cae4bdcfd6f18fd2d6fbf31f 103 multiverse/binary-armel/Release
+ 6744aaa8a3457d139348ea18379781ce 106873 multiverse/binary-armel/Packages.bz2
+ 1cc2613becf46fd578aa6d52ab12db94 104529 multiverse/binary-armhf/Packages.bz2
+ b0f8df0c9d700a1f7d295be4d4c03788 505901 multiverse/binary-armhf/Packages
+ 73cb5bc3d0c5021e5a4a413a73bcefce 103 multiverse/binary-armhf/Release
+ 00c07f1601226b8387fe4c9afaf2b044 133117 multiverse/binary-armhf/Packages.gz
+ bf0237c8c5d06a6df172db28710b8a36 121196 multiverse/binary-i386/Packages.bz2
+ cf110f58668bf5731e593ed78af54c27 591662 multiverse/binary-i386/Packages
+ 8a915986a504c0f3eb95b61ae909c9a4 102 multiverse/binary-i386/Release
+ c6d89a2752d1154a219c295e6d70b697 154762 multiverse/binary-i386/Packages.gz
+ ae93681c6b316c95207091b3c91042a7 105 multiverse/binary-powerpc/Release
+ ec463c2070c515de099f8baa3a4b5993 107209 multiverse/binary-powerpc/Packages.bz2
+ 675204a2b4aabeb9e99e406070b2af9b 520882 multiverse/binary-powerpc/Packages
+ c806ea7584c782d57363df12ddb28839 136930 multiverse/binary-powerpc/Packages.gz
+ d41d8cd98f00b204e9800998ecf8427e 0 multiverse/debian-installer/binary-amd64/Packages
+ 4a4dd3598707603b3f76a2378a4504aa 20 multiverse/debian-installer/binary-amd64/Packages.gz
+ 4059d198768f9f8dc9372dc1c54bc3c3 14 multiverse/debian-installer/binary-amd64/Packages.bz2
+ 4059d198768f9f8dc9372dc1c54bc3c3 14 multiverse/debian-installer/binary-armel/Packages.bz2
+ d41d8cd98f00b204e9800998ecf8427e 0 multiverse/debian-installer/binary-armel/Packages
+ 4a4dd3598707603b3f76a2378a4504aa 20 multiverse/debian-installer/binary-armel/Packages.gz
+ 4a4dd3598707603b3f76a2378a4504aa 20 multiverse/debian-installer/binary-armhf/Packages.gz
+ d41d8cd98f00b204e9800998ecf8427e 0 multiverse/debian-installer/binary-armhf/Packages
+ 4059d198768f9f8dc9372dc1c54bc3c3 14 multiverse/debian-installer/binary-armhf/Packages.bz2
+ 4059d198768f9f8dc9372dc1c54bc3c3 14 multiverse/debian-installer/binary-i386/Packages.bz2
+ 4a4dd3598707603b3f76a2378a4504aa 20 multiverse/debian-installer/binary-i386/Packages.gz
+ d41d8cd98f00b204e9800998ecf8427e 0 multiverse/debian-installer/binary-i386/Packages
+ 4a4dd3598707603b3f76a2378a4504aa 20 multiverse/debian-installer/binary-powerpc/Packages.gz
+ d41d8cd98f00b204e9800998ecf8427e 0 multiverse/debian-installer/binary-powerpc/Packages
+ 4059d198768f9f8dc9372dc1c54bc3c3 14 multiverse/debian-installer/binary-powerpc/Packages.bz2
+ a2bcfa86da39328db94629011506a877 2676 multiverse/i18n/Index
+ c2ffda2a848000b71573dbc3dc7d4402 154990 multiverse/source/Sources.bz2
+ f1d64bb88933686a71108de73b1f2262 628753 multiverse/source/Sources
+ 3d35747578528fa13640b98184120e51 188325 multiverse/source/Sources.gz
+ c9828946b46ac900fec682369c52bfa7 104 multiverse/source/Release
+ 5644835af0d1ed82cc7c14e34c2a543f 9098 restricted/binary-amd64/Packages.gz
+ d3058923c862e74c2c08b9a4ad7ec51e 134705 restricted/binary-amd64/Packages
+ 97ecff09a695f1460177843ff5d2b3e6 103 restricted/binary-amd64/Release
+ f8ed966e5400930411a32a7183357810 8452 restricted/binary-amd64/Packages.bz2
+ 60e74c701a6e40b7f869dd83b335ec5c 103 restricted/binary-armel/Release
+ 4a4dd3598707603b3f76a2378a4504aa 20 restricted/binary-armel/Packages.gz
+ 4059d198768f9f8dc9372dc1c54bc3c3 14 restricted/binary-armel/Packages.bz2
+ d41d8cd98f00b204e9800998ecf8427e 0 restricted/binary-armel/Packages
+ 55c08a48fc4b3370acc95a391bde1189 103 restricted/binary-armhf/Release
+ ce2da4621bbbaf55d858ae4243e17715 1103 restricted/binary-armhf/Packages.bz2
+ b26814493282faf0c5b269c44b799653 2477 restricted/binary-armhf/Packages
+ 784050b4fd16ea71e10cf130e47132d9 941 restricted/binary-armhf/Packages.gz
+ c4280a67444afbb8e2564d6f2249d397 9108 restricted/binary-i386/Packages.gz
+ 6dfd90555b37a912f82894b4ec3b63a0 8431 restricted/binary-i386/Packages.bz2
+ 48d3e36bf54be9b3fc7576cfcd0aac79 134582 restricted/binary-i386/Packages
+ e49b38cbf4dc409e8c25f6ab4b32fbe4 102 restricted/binary-i386/Release
+ 4a4dd3598707603b3f76a2378a4504aa 20 restricted/binary-powerpc/Packages.gz
+ 4059d198768f9f8dc9372dc1c54bc3c3 14 restricted/binary-powerpc/Packages.bz2
+ d41d8cd98f00b204e9800998ecf8427e 0 restricted/binary-powerpc/Packages
+ edb68a453747a9faa9e98389787fb79d 105 restricted/binary-powerpc/Release
+ d41d8cd98f00b204e9800998ecf8427e 0 restricted/debian-installer/binary-amd64/Packages
+ 4059d198768f9f8dc9372dc1c54bc3c3 14 restricted/debian-installer/binary-amd64/Packages.bz2
+ 4a4dd3598707603b3f76a2378a4504aa 20 restricted/debian-installer/binary-amd64/Packages.gz
+ 4a4dd3598707603b3f76a2378a4504aa 20 restricted/debian-installer/binary-armel/Packages.gz
+ 4059d198768f9f8dc9372dc1c54bc3c3 14 restricted/debian-installer/binary-armel/Packages.bz2
+ d41d8cd98f00b204e9800998ecf8427e 0 restricted/debian-installer/binary-armel/Packages
+ 4059d198768f9f8dc9372dc1c54bc3c3 14 restricted/debian-installer/binary-armhf/Packages.bz2
+ 4a4dd3598707603b3f76a2378a4504aa 20 restricted/debian-installer/binary-armhf/Packages.gz
+ d41d8cd98f00b204e9800998ecf8427e 0 restricted/debian-installer/binary-armhf/Packages
+ 4a4dd3598707603b3f76a2378a4504aa 20 restricted/debian-installer/binary-i386/Packages.gz
+ 4059d198768f9f8dc9372dc1c54bc3c3 14 restricted/debian-installer/binary-i386/Packages.bz2
+ d41d8cd98f00b204e9800998ecf8427e 0 restricted/debian-installer/binary-i386/Packages
+ 4a4dd3598707603b3f76a2378a4504aa 20 restricted/debian-installer/binary-powerpc/Packages.gz
+ 4059d198768f9f8dc9372dc1c54bc3c3 14 restricted/debian-installer/binary-powerpc/Packages.bz2
+ d41d8cd98f00b204e9800998ecf8427e 0 restricted/debian-installer/binary-powerpc/Packages
+ 39ef6c1d54f83252b07406f9cc3e9204 2596 restricted/i18n/Index
+ a76089a7a653d4f2196c38093058d1aa 19001 restricted/source/Sources
+ 3990b36e6ef2846251b58a58cde3768d 5470 restricted/source/Sources.bz2
+ f0a32107aaf12daf3e64b4dc3ee11321 5306 restricted/source/Sources.gz
+ 7871a3f6f83e033ab93c06bf886e305d 104 restricted/source/Release
+ 3464b1b15950e714151f8bb43982951e 25546870 universe/binary-amd64/Packages
+ 9340d5c4051da92820bb5bd5ba05f7a7 4785960 universe/binary-amd64/Packages.bz2
+ 1f6974aea9904921afdb4d1c5d0e8578 6166988 universe/binary-amd64/Packages.gz
+ 75ea366982b4862a41d9640687778dd2 101 universe/binary-amd64/Release
+ 5492f7f7183461d52f8d58871026c3e8 101 universe/binary-armel/Release
+ 420abe7ca02b5cb2abcd1b273efcfea9 4667308 universe/binary-armel/Packages.bz2
+ 4da3448f54e710222b26646b0bee14e8 6009219 universe/binary-armel/Packages.gz
+ e99405db74ba425a3f898fdda0a42113 24901082 universe/binary-armel/Packages
+ d0545845bbcff572a5c852b80582b269 5948128 universe/binary-armhf/Packages.gz
+ 8f0d262f1eb03fc3523cd80b3112a7e0 101 universe/binary-armhf/Release
+ a10169d0cc23f526bcee5769d27778b0 4618508 universe/binary-armhf/Packages.bz2
+ 952259d2cdb2c85df177702ac92075a0 24642528 universe/binary-armhf/Packages
+ df43c3b4ec37e79a00023475a09e2bfa 6179579 universe/binary-i386/Packages.gz
+ cc44a3e2ad759febb38ef2bec15ab29e 25568759 universe/binary-i386/Packages
+ 826b1d8609f0944a6d2ae95617e4d05a 100 universe/binary-i386/Release
+ 50690005918dd03ad9b71ffffa678d6f 4795820 universe/binary-i386/Packages.bz2
+ 8a1f21204f4178574251a2238c00f317 25188905 universe/binary-powerpc/Packages
+ 7409876b9e1238d5a147720b41233a26 6080488 universe/binary-powerpc/Packages.gz
+ 9bcc15c59aa3fbbd15f0d187fe90b353 4716652 universe/binary-powerpc/Packages.bz2
+ c3bdb05d2be1efa2dca9d2bac4e85b13 103 universe/binary-powerpc/Release
+ f8259410f0e1ad66324dbce895fdde2d 15255 universe/debian-installer/binary-amd64/Packages.bz2
+ ce60affbf23a069735c29951bfb0b818 17243 universe/debian-installer/binary-amd64/Packages.gz
+ 13ce59ecd4540ddef3670dbbed73cdbc 61801 universe/debian-installer/binary-amd64/Packages
+ 988da583db40ce21d400926641fe6ed8 113584 universe/debian-installer/binary-armel/Packages
+ 75381e3ed15a3a2fa1480fdea72cfd24 23193 universe/debian-installer/binary-armel/Packages.bz2
+ 4a8e6a98277f254660e8690fd050b232 27397 universe/debian-installer/binary-armel/Packages.gz
+ 02e7128ef42cd61e66c768520961fb11 20065 universe/debian-installer/binary-armhf/Packages.gz
+ 851afb686177a6819b291a714fa15813 17619 universe/debian-installer/binary-armhf/Packages.bz2
+ ce3b6645e37226c4047546a40675ecdd 76034 universe/debian-installer/binary-armhf/Packages
+ 229235ad9979a343e3bea9aedb5af8da 17260 universe/debian-installer/binary-i386/Packages.gz
+ 8065c9994844e578af00ef8794709b18 15272 universe/debian-installer/binary-i386/Packages.bz2
+ f28d6328611ab1e382fb0d0e798aca97 61718 universe/debian-installer/binary-i386/Packages
+ 60f54adbd38213dbbfe5d638f98a17e9 61121 universe/debian-installer/binary-powerpc/Packages
+ 1d48a07b3f4214200ff3eb1c5894e4a1 15024 universe/debian-installer/binary-powerpc/Packages.bz2
+ 51eb13c4b9baf089e4e8b0e85556b90e 16860 universe/debian-installer/binary-powerpc/Packages.gz
+ 155e0b646671f37a7fe235c4579e59f2 2922 universe/i18n/Index
+ 2ef7ccbe106edb394dc69d8511775122 21256524 universe/source/Sources
+ e52b7cb491cc6a950cd11fa6263d7330 5019105 universe/source/Sources.bz2
+ c722166709cfe9c398643b9c1a443610 102 universe/source/Release
+ 5ddd8bd0dda063b203d1a1da150983a0 6238766 universe/source/Sources.gz
+SHA1:
+ 0b326daa3b2ac8748ca10942aaec15ebdcc78b36 1640344 main/binary-amd64/Packages.gz
+ 8a6068a75feb86e12b088dad2478600f6670f2d7 7818931 main/binary-amd64/Packages
+ 19655f20d48d9819ad95f2c9ecc59e5b1d94c3d0 97 main/binary-amd64/Release
+ f9761ecf8536859ef38b670a7f17d83febec4a37 1272844 main/binary-amd64/Packages.bz2
+ a3a5faadbdf0a49d1587f07181b9eca870cb24ce 97 main/binary-armel/Release
+ 3c5d8f3a401427110adfd7f7d65513bfa47b933a 1619078 main/binary-armel/Packages.gz
+ 4d54e387978fdf829b4ff7336ed4d02e61c54d6a 1257389 main/binary-armel/Packages.bz2
+ 969dfd243cc3f514eea9914de571db28621cd9bd 7743353 main/binary-armel/Packages
+ f8f33265eab2ff9fd8a6353e014e36a9d318a54d 97 main/binary-armhf/Release
+ 1d210f8ad3547b771bc8c8d2a9eb5ee99d437d81 7620333 main/binary-armhf/Packages
+ 5057a8b2d11d2325bb2546ad6613517b208fff18 1257653 main/binary-armhf/Packages.bz2
+ 25fc010c2789028727308fbf6132a8da387423b8 1617483 main/binary-armhf/Packages.gz
+ 79369a31bc481f7f9f71f666906c3bdb356c44d8 1273857 main/binary-i386/Packages.bz2
+ aaadaa6eaf0b7e73b0d371cdebae573f28833a43 1641082 main/binary-i386/Packages.gz
+ 6f8e5e9dd04a2379a7c6d8dc23b4ff8df5584741 96 main/binary-i386/Release
+ 8509eead0c5e9410e23d4226ee5d190220db1275 7816415 main/binary-i386/Packages
+ 7da3fd8ad7102912a4cc9882c66fbb1b65edd4c0 1627734 main/binary-powerpc/Packages.gz
+ 8a0c3b7757b738a89644e8c5a3b9afed806d2f83 99 main/binary-powerpc/Release
+ 4063338a28f6504f7bc2f9c00fc34ac26fc5a1fa 1263942 main/binary-powerpc/Packages.bz2
+ 81844e44aaf0ed255ca200e7316bc9279ef238b6 7661552 main/binary-powerpc/Packages
+ d17439034551742aaa4762b4c174c1d72881f49f 62166 main/debian-installer/binary-amd64/Packages.gz
+ 05e024776b06a40253b9e252caad6dc4a13a90b9 234592 main/debian-installer/binary-amd64/Packages
+ fa692a307ecab69c106a5253107f980527cf58a9 48784 main/debian-installer/binary-amd64/Packages.bz2
+ fb8be98ef08265d2f101cf265b9bf37654d750ac 47964 main/debian-installer/binary-armel/Packages.bz2
+ 8953964fd2b54539e8276237cd5e4e2d4f9dc2ab 230310 main/debian-installer/binary-armel/Packages
+ cfdde60bbcbfb25c66fa474d28217e03a4c06789 61118 main/debian-installer/binary-armel/Packages.gz
+ 468306dc06acc828c50196427ba324c8ce225c79 62777 main/debian-installer/binary-armhf/Packages.gz
+ 17e7331a837675de31c365529ea9454cc48baf98 49051 main/debian-installer/binary-armhf/Packages.bz2
+ 3404140163a5acece9a054912abf72d11a5591d0 238862 main/debian-installer/binary-armhf/Packages
+ 2bb7e052999eadc333a9f6481bdc20acb238d4c1 52279 main/debian-installer/binary-i386/Packages.bz2
+ b2ad69cd6759724461c3566d91c1c5ec209eba07 259996 main/debian-installer/binary-i386/Packages
+ ebd0ab3923b3df4eca53eb863773bf0a9a4c3a67 67180 main/debian-installer/binary-i386/Packages.gz
+ eff551b62b72a1c0b183d4903a1452f2be08f3da 246636 main/debian-installer/binary-powerpc/Packages
+ 5c8aa09d48d7a792d555e7b16f4c89733e8441af 50309 main/debian-installer/binary-powerpc/Packages.bz2
+ 582a86208e89e77a7f284e10a50b9cceaf4358ee 64468 main/debian-installer/binary-powerpc/Packages.gz
+ f426621b1015147e766dc003d1d2f140dc9c062d 3706 main/i18n/Index
+ b22a946cdae39d29535a63b020c0f2ad74c3c992 4356187 main/source/Sources
+ 711225fd252e77d85c7bb992aeb5aa5e45414ae1 933770 main/source/Sources.bz2
+ a8807bf20dbaceb9d408f959840951131fd7d9f9 1174967 main/source/Sources.gz
+ cc2d2f6ce53597666df1a5ab216a08f08995f43f 98 main/source/Release
+ 06b070fc1ae771806c65e791742832320cc588e7 119109 multiverse/binary-amd64/Packages.bz2
+ ae591617f4b6f988d6534270d4c32e3f0876166b 151924 multiverse/binary-amd64/Packages.gz
+ a28786a87a6136fb74a005c480c78a152123b9c0 581550 multiverse/binary-amd64/Packages
+ 3860a3ce6d87bb8a43803a1048cc96d4de3ae8a7 103 multiverse/binary-amd64/Release
+ 4bae80c3f5270e45f825141bcadb94d7dd82cd0e 136295 multiverse/binary-armel/Packages.gz
+ 9534dfc2e4a40386f48eff79062ee1742212b7d3 519605 multiverse/binary-armel/Packages
+ 92d1536ae99c958afd74299ffe30bdc6800cd8d0 103 multiverse/binary-armel/Release
+ 8e3ec557dc8f750e82e8ed5cbb0c509182feba79 106873 multiverse/binary-armel/Packages.bz2
+ 009531e7cfb08701883a9e7a5f50235325e109cd 104529 multiverse/binary-armhf/Packages.bz2
+ 596a666233560852574d9bca0109f4933a12c949 505901 multiverse/binary-armhf/Packages
+ eca4ab620c41d76c00a9615d8530db5a9c918fe8 103 multiverse/binary-armhf/Release
+ 53916a24cff0523e218bfee2c5464866d2099042 133117 multiverse/binary-armhf/Packages.gz
+ a7518b6b3e693d840a49b125020785d2049e75b9 121196 multiverse/binary-i386/Packages.bz2
+ 84069f1643bd0092f4ec1b24eb921310532d72b2 591662 multiverse/binary-i386/Packages
+ 1d42b054d297b33cf69af011fa91f601c6b1a1b9 102 multiverse/binary-i386/Release
+ 8eae892b29234e9aac4c58a7098b097fe5ebde16 154762 multiverse/binary-i386/Packages.gz
+ 873bc8f864de428a4a47a3afaf53bc3a3a6e81c0 105 multiverse/binary-powerpc/Release
+ 665942774934afa56721d082a398735a067afe91 107209 multiverse/binary-powerpc/Packages.bz2
+ c965416be0f7bf88c78394becf4a72aee342b829 520882 multiverse/binary-powerpc/Packages
+ e304951d28df0b75065fd3ef8166c65415a3cad2 136930 multiverse/binary-powerpc/Packages.gz
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 multiverse/debian-installer/binary-amd64/Packages
+ a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 multiverse/debian-installer/binary-amd64/Packages.gz
+ 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2 14 multiverse/debian-installer/binary-amd64/Packages.bz2
+ 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2 14 multiverse/debian-installer/binary-armel/Packages.bz2
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 multiverse/debian-installer/binary-armel/Packages
+ a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 multiverse/debian-installer/binary-armel/Packages.gz
+ a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 multiverse/debian-installer/binary-armhf/Packages.gz
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 multiverse/debian-installer/binary-armhf/Packages
+ 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2 14 multiverse/debian-installer/binary-armhf/Packages.bz2
+ 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2 14 multiverse/debian-installer/binary-i386/Packages.bz2
+ a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 multiverse/debian-installer/binary-i386/Packages.gz
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 multiverse/debian-installer/binary-i386/Packages
+ a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 multiverse/debian-installer/binary-powerpc/Packages.gz
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 multiverse/debian-installer/binary-powerpc/Packages
+ 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2 14 multiverse/debian-installer/binary-powerpc/Packages.bz2
+ 09a8aff01c419e0eae19749acf3b223e1f95eccc 2676 multiverse/i18n/Index
+ a088c61bca210afebf4c53904049e2a969d8ece3 154990 multiverse/source/Sources.bz2
+ df4078a91645024ce93b1ee363003c83ffa2aa84 628753 multiverse/source/Sources
+ e6ec0430d594fa7fa2c98cb9a5fa8ac7ed0d506d 188325 multiverse/source/Sources.gz
+ 0750588f28b1c2cf6a005501c7d027cfa663cce1 104 multiverse/source/Release
+ 200fdeee1984ac78b6fdabfad34d2b485512ca2d 9098 restricted/binary-amd64/Packages.gz
+ 0e7ebd3d2690c7f89d19f8b337cf292cac913c18 134705 restricted/binary-amd64/Packages
+ c968d68baa554ffc7009688ee7d0d3e70663243c 103 restricted/binary-amd64/Release
+ 4185a5b6c2e702ea4754437ebfef23d828ec67a0 8452 restricted/binary-amd64/Packages.bz2
+ 27886dcc6c7d08369cc65d4c35f26b806f57be56 103 restricted/binary-armel/Release
+ a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 restricted/binary-armel/Packages.gz
+ 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2 14 restricted/binary-armel/Packages.bz2
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 restricted/binary-armel/Packages
+ d83803a5f6c2f5c7321d68d126733b6015c8e2a9 103 restricted/binary-armhf/Release
+ 6607111b78dcd3de05cb88692c1e2142abf9a4c1 1103 restricted/binary-armhf/Packages.bz2
+ b9f55d161632f89b5125a638ca6ad4fe5e9d11fe 2477 restricted/binary-armhf/Packages
+ d0c0a616aeac580d13256693cfbd507ae7c9b280 941 restricted/binary-armhf/Packages.gz
+ f3e483bbe77cbf0f64accbd0291df19b4e4d694b 9108 restricted/binary-i386/Packages.gz
+ 48d76b03a19e4d66d6f7a20339dab91acebaba99 8431 restricted/binary-i386/Packages.bz2
+ 3ca46ea8f32b7cbc49ce76dd1c1ab91589900fd7 134582 restricted/binary-i386/Packages
+ 2aad61f5084ecdd64ff520520d77e980e8b21f81 102 restricted/binary-i386/Release
+ a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 restricted/binary-powerpc/Packages.gz
+ 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2 14 restricted/binary-powerpc/Packages.bz2
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 restricted/binary-powerpc/Packages
+ 6b0a230bbf47463e3d7e88f535e210aaa96a1251 105 restricted/binary-powerpc/Release
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 restricted/debian-installer/binary-amd64/Packages
+ 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2 14 restricted/debian-installer/binary-amd64/Packages.bz2
+ a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 restricted/debian-installer/binary-amd64/Packages.gz
+ a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 restricted/debian-installer/binary-armel/Packages.gz
+ 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2 14 restricted/debian-installer/binary-armel/Packages.bz2
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 restricted/debian-installer/binary-armel/Packages
+ 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2 14 restricted/debian-installer/binary-armhf/Packages.bz2
+ a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 restricted/debian-installer/binary-armhf/Packages.gz
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 restricted/debian-installer/binary-armhf/Packages
+ a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 restricted/debian-installer/binary-i386/Packages.gz
+ 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2 14 restricted/debian-installer/binary-i386/Packages.bz2
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 restricted/debian-installer/binary-i386/Packages
+ a0fddd5458378c1bf3c10dd2f5c060d1347741ed 20 restricted/debian-installer/binary-powerpc/Packages.gz
+ 64a543afbb5f4bf728636bdcbbe7a2ed0804adc2 14 restricted/debian-installer/binary-powerpc/Packages.bz2
+ da39a3ee5e6b4b0d3255bfef95601890afd80709 0 restricted/debian-installer/binary-powerpc/Packages
+ d59f5ac2532dcc7cb2f1e5b788c700bf8ab13b66 2596 restricted/i18n/Index
+ 8a80cdcf50cdcabcf4f47c772d7b252587cc9dc1 19001 restricted/source/Sources
+ ff7d82cf1d965953c745d224a1d4adc67b586528 5470 restricted/source/Sources.bz2
+ f64da9da2038712c5d73ce3337e91d92ee39cd30 5306 restricted/source/Sources.gz
+ 5c963f5f4d4720afa5fbb914375d0033bcd50078 104 restricted/source/Release
+ 10c6989f4a241aabe00146905e776391fc4d9ac0 25546870 universe/binary-amd64/Packages
+ f6900616102430e0eafa8ac89795efff7edc0710 4785960 universe/binary-amd64/Packages.bz2
+ 4f938bde9dff32a49bccd917613666017185882d 6166988 universe/binary-amd64/Packages.gz
+ 9d6cba1ed46b5eee1f6c065934e5f4854b3efee5 101 universe/binary-amd64/Release
+ 3573e863c714c0a083f9c962ea9136916f796e92 101 universe/binary-armel/Release
+ bb8f53ead3723737c13950e5343327884f737da9 4667308 universe/binary-armel/Packages.bz2
+ 43d9a98706b6e50c21092ce35313b5b034f30d01 6009219 universe/binary-armel/Packages.gz
+ 7f97dcbe710882d281efcfd2f8d70ca7d4e47265 24901082 universe/binary-armel/Packages
+ 8f6d42d7f8178a51a7065d7bf3234eecbca12810 5948128 universe/binary-armhf/Packages.gz
+ ea648f433d0edd47de820582fa6a1cd89ef66681 101 universe/binary-armhf/Release
+ e6ad9bdb18ce9e09e262b9e6f85b0b307a3456f1 4618508 universe/binary-armhf/Packages.bz2
+ ba55530da6c3a9604977ea4a37b4b4d8943ff994 24642528 universe/binary-armhf/Packages
+ 05de59263866a33c104787943347164e7b124aba 6179579 universe/binary-i386/Packages.gz
+ 286a3dd2fda0d98d2ff14eafee0bba5c912d6df2 25568759 universe/binary-i386/Packages
+ 839529b6f6e2a64465e4a825fa5ad46a36f1c73d 100 universe/binary-i386/Release
+ 70c27be4d8bc87dc26bbe6f21fbb7328dc1c4d01 4795820 universe/binary-i386/Packages.bz2
+ 06af7fdef1a54920a7667728a7b810553d00a9c8 25188905 universe/binary-powerpc/Packages
+ 4df1b07075b25ccae6e60d26d5a5761444ece689 6080488 universe/binary-powerpc/Packages.gz
+ 15d041ad1284527b07f75218cf6eb32322092f84 4716652 universe/binary-powerpc/Packages.bz2
+ 42d6a46ed2e525b219f8f6dc076dadbd06fc7f1b 103 universe/binary-powerpc/Release
+ 92c3bef6ad40051021a4e9dadb16e5edc7410b57 15255 universe/debian-installer/binary-amd64/Packages.bz2
+ 31d8725b0d238c282d9b572bb56b7e45c0ff53f8 17243 universe/debian-installer/binary-amd64/Packages.gz
+ e334a7c80e14dae3055950d9e45213db65d4087b 61801 universe/debian-installer/binary-amd64/Packages
+ 1fd1ae2b87eb85525b173ea982d15f3c98e6e33d 113584 universe/debian-installer/binary-armel/Packages
+ c56579feb77b5aac2d261abbbb6c89a1458ca4d9 23193 universe/debian-installer/binary-armel/Packages.bz2
+ e4b08e57397f3ab0599e0bf6a2fbcba3aed438b5 27397 universe/debian-installer/binary-armel/Packages.gz
+ 5a9608213061eab983392258288e8aec36d006f0 20065 universe/debian-installer/binary-armhf/Packages.gz
+ dc558d56aef72991a3188909a14f752aabdee325 17619 universe/debian-installer/binary-armhf/Packages.bz2
+ c6afa0e14c706aceea60aad033b6a067320fc165 76034 universe/debian-installer/binary-armhf/Packages
+ f359cf916a19055133546a7b7f3e35c7c260488e 17260 universe/debian-installer/binary-i386/Packages.gz
+ 23920ee4974d88ba824b0e884f8df6e2711a20db 15272 universe/debian-installer/binary-i386/Packages.bz2
+ 21cfd020eefc848307fac14b8f0efe0d6cd9c6ea 61718 universe/debian-installer/binary-i386/Packages
+ f2ff72c8f1fe4ce40ccf44f8ccd6623cedf4e6f0 61121 universe/debian-installer/binary-powerpc/Packages
+ bd9c731941b261b22c022d97ca139bfeb1ad70ba 15024 universe/debian-installer/binary-powerpc/Packages.bz2
+ e173071bda799068783c9192bff6536db9790a27 16860 universe/debian-installer/binary-powerpc/Packages.gz
+ 59a86abaed7cab292600b6766b18752b7e7c3d49 2922 universe/i18n/Index
+ 4b0ed5f327b0fa9b3f9d9410933a3d2afe467a7e 21256524 universe/source/Sources
+ d0525203f9ad5ec9183996e6765d0ef9a024691f 5019105 universe/source/Sources.bz2
+ 00847d46051ba44d436000b0394b218503de125b 102 universe/source/Release
+ d9706a8ab2ffeadb51b50d042712536a95dc4343 6238766 universe/source/Sources.gz
+SHA256:
+ 0d61aacd269015c0abfe01fe7f90a4f534c368e9c513f7e90d3111af82656b3d 1640344 main/binary-amd64/Packages.gz
+ a1bc8d839ca9966a0b924e4a4c60f1c23b4d431deb81e1bc529edf95f30fc29d 7818931 main/binary-amd64/Packages
+ a55d3b2e6e2a175529d73e6ca92989018cf57745e705f7ff675b05f80e5141f7 97 main/binary-amd64/Release
+ cc0d3a19c51188b4b4acb80e3013264462c6e0f60759bfd46206c60681bd4ba9 1272844 main/binary-amd64/Packages.bz2
+ a841750f49bd11f99b9dae6941d2fa6ec1fd87906139d0ceeacf0d4df57a87cf 97 main/binary-armel/Release
+ e80eaf12c1aa520b353de8ad97e79364779e82ef011cb93db372edc900eb7be9 1619078 main/binary-armel/Packages.gz
+ 0ab0929c3c44837886e532f8ec4bee77f3664bdcc2cc3192a02b991c52b156ce 1257389 main/binary-armel/Packages.bz2
+ ea400cf67f84c12265e4bf419de442a38880fab37d76999985972fc6df3e13b3 7743353 main/binary-armel/Packages
+ f3c40f057bb085f28ef2ed950f62366483d2a418571435c355dc27c0912dccff 97 main/binary-armhf/Release
+ cde037224f43e4619213c5195f2ea5c2f91d078f449579652dbd4128793d5062 7620333 main/binary-armhf/Packages
+ 7c6ea67e609b96dec6f2185df4cd81160e37ba467f9132a9bfb101da3f9a0468 1257653 main/binary-armhf/Packages.bz2
+ 2b83bf5501ecae3347e5c96658edae7d48eef42108b4786471a3de241e75e7d3 1617483 main/binary-armhf/Packages.gz
+ 4d74c53917b84d37cb3277e2b755672a8733e2cfaf949f6e644e6e88094cdaa2 1273857 main/binary-i386/Packages.bz2
+ 07f33bddfefdb4a0c44ddee59fd3eca497df2ad0456e0eeade136e4f0302ee3c 1641082 main/binary-i386/Packages.gz
+ 5182e22f799fe66c8db6dfb073fb040e9e583d88bb9d4d77e058b2afb87e9479 96 main/binary-i386/Release
+ 4cecfc8c0d2113d51b03afa8fdcdcc963d9ad74474696472ec1cdbdb38b856e2 7816415 main/binary-i386/Packages
+ 2795904625f466b4a2fb96d41c00b000ab7f2bdc7f288b0c9ef1283d7e110f87 1627734 main/binary-powerpc/Packages.gz
+ a9247e6d8b0c5977bc1e72be09b1f42a83b5f5a6a70b17f4fef35a0657e3c206 99 main/binary-powerpc/Release
+ 6e745b7edcd67755fa09f54cc3afdd0ffbd0475302a74293472e97e46ba75ddc 1263942 main/binary-powerpc/Packages.bz2
+ 8b953dbae4a14e7ab47151044a47c7b0f0e1dd2a6480170b8172e00d9dad7a2a 7661552 main/binary-powerpc/Packages
+ a5bdf4116ecfeda052d5b3751138c6153e814ac58b2f551503f3ed90e6c3510c 62166 main/debian-installer/binary-amd64/Packages.gz
+ 6a9a4837a4a7df3e7e0566b354b7f1dd2dcf46254335ae3d06a72538f85e410a 234592 main/debian-installer/binary-amd64/Packages
+ 0da4f8190eebfef22103f1f6f7051adbe9489d454ab7224f09d05646407881e8 48784 main/debian-installer/binary-amd64/Packages.bz2
+ ea01244357deb22c2a4bd7eaa34a1635c0915b89ce174f312c0e0a4b081eaf30 47964 main/debian-installer/binary-armel/Packages.bz2
+ 4177b0519c75f7f950e5a0f0d72d40cc0c4ccf29ebe89fbb9bc1f11a80874526 230310 main/debian-installer/binary-armel/Packages
+ 2b6f81ef9fa687bfb2eb56bb3e90faef0c012351d096b141caa710fd50846043 61118 main/debian-installer/binary-armel/Packages.gz
+ 52c834247ff3a5475466e647802f6eff393f85589e5da5fd3e5b497669b8b49c 62777 main/debian-installer/binary-armhf/Packages.gz
+ 7090f1ad1307a012fbfff883885f16099ed66ebffdeece356f837e632b177a4f 49051 main/debian-installer/binary-armhf/Packages.bz2
+ 4bae13f507993e977c279937406fc03e37fede7805a92508f6d3cba76f1aaf95 238862 main/debian-installer/binary-armhf/Packages
+ d1d23926ff15cfaa6160c5fd0327d181721093fbd2f2e8125be5559a991a81a8 52279 main/debian-installer/binary-i386/Packages.bz2
+ 30e0ec7a2c3d47d5501de8414b436482ff523e9c4983b536b2c9911a30618b98 259996 main/debian-installer/binary-i386/Packages
+ 7a4dcb001ed4bb5fa2458af901de312e11a745bc86a0f877e47567d0f911bc0d 67180 main/debian-installer/binary-i386/Packages.gz
+ 30c2f590c2dedc9f78dfc7f0026b51bc9baa712ac8c9310404d9d6577af77d90 246636 main/debian-installer/binary-powerpc/Packages
+ 6c53fab780cf774c5cabb1788eea1e3446c528cde4352d106907f4ec22449370 50309 main/debian-installer/binary-powerpc/Packages.bz2
+ b003f3fbf2fa6dbf7d47cf3fbd029ecd86b316ec497a9ac4eea3614cf4ec76af 64468 main/debian-installer/binary-powerpc/Packages.gz
+ fefed230e286d832ab6eb0fb7b72442165b50df23a68402ae6e9d265a31920a2 3706 main/i18n/Index
+ bb618cebb361a2a7148be0bad9af012c8d9de23dbc32d6d9ba035fa6ee0078ab 4356187 main/source/Sources
+ 0aeef2c2258136f9f774c36a158cf759389acf6a35a3153a03d3fa41d4f346d5 933770 main/source/Sources.bz2
+ 4a058ba65244e8eaf17d159b72edebe4e621d54c274a82d4a973b358b4af9a28 1174967 main/source/Sources.gz
+ 864ba9a26e348c6297c08c047d8c228e5ed031ec3d46ef7aad93c3fa550395a8 98 main/source/Release
+ 85477d2b2e7ea2f46b6a059f7526cf52d75fea1a5120aa3b256c576e904d40ff 119109 multiverse/binary-amd64/Packages.bz2
+ 2967ae6c1cc065bec03225d808b4511b138cc13b8de801a0562fec6e30710f36 151924 multiverse/binary-amd64/Packages.gz
+ 18fcf61bb74ef2a01c3d4a8d4646a75836f43244168b43d6ae202f368167b224 581550 multiverse/binary-amd64/Packages
+ fbc4931ef84d50a39da65d110f787aee274df8819a758a3c0aa1ff13f0ba6ee0 103 multiverse/binary-amd64/Release
+ 49f48a34696d08a13a0fdc19a0f6896af2cb477e72860a8880954926c7d45e60 136295 multiverse/binary-armel/Packages.gz
+ f20d7f0bc32b5b2fbcb442f7c128aaad7e18aece3781d53f560932bb191d6830 519605 multiverse/binary-armel/Packages
+ f7ea72b2c07af81f2e342414025dce7a658a6a9915c4d8adc13b992cb3b9fd2f 103 multiverse/binary-armel/Release
+ dd3d4e8a6ec9055d5b553af49822de74648f071ceb0fd314d6cd1aaf7ad6882b 106873 multiverse/binary-armel/Packages.bz2
+ 567c1f9d30a4d6650552d66c5fb43d2d8910d3fed69793daed622d2c699f4bc8 104529 multiverse/binary-armhf/Packages.bz2
+ a47ef2c0a68adeb70a0bc6b22c94b08402396ff6f5c77664e06c2fb7ee0e7ab0 505901 multiverse/binary-armhf/Packages
+ 6b95e8edaa2bb799f6e15a4a6aaf223da0faea670cd03340395bdcea90205afc 103 multiverse/binary-armhf/Release
+ 14721b333f19a6344addb185f161d1cd14e04ac284c8fa9d726064ec228269a8 133117 multiverse/binary-armhf/Packages.gz
+ 454436f374186007075445c1f206ba5c926f30609baa732c495f1ba456d71e59 121196 multiverse/binary-i386/Packages.bz2
+ 9fabd7bfdbfd216968f7a17265e5609cdd72f1ea7c8f50941e294694e76b180d 591662 multiverse/binary-i386/Packages
+ 7141881b898ac6a78f1ca6f3e81481ee6657f6762fa22768816ab39f6b17e695 102 multiverse/binary-i386/Release
+ 3f4cae31df741f55d523ecea758d05a7e012a205bb03974ee20eb09e3f4fa63b 154762 multiverse/binary-i386/Packages.gz
+ 332dde644a8467496eb5f45ffd2d735ca61ea781da21cd205b3267cd83fa0563 105 multiverse/binary-powerpc/Release
+ 99ef0a611aa32ffa4f16a006d641fbd8dd9e3e73bde3c93b831cd6583746e64b 107209 multiverse/binary-powerpc/Packages.bz2
+ 60f2431dab7bd02fe2c2428bf400c3535be49641cc9d5645a8f1b4fd44f5086f 520882 multiverse/binary-powerpc/Packages
+ cacfd10b40992a617ce32c479f9505531c8cc57e4cf964687d663a5f41f8dcbd 136930 multiverse/binary-powerpc/Packages.gz
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 multiverse/debian-installer/binary-amd64/Packages
+ f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 multiverse/debian-installer/binary-amd64/Packages.gz
+ d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058 14 multiverse/debian-installer/binary-amd64/Packages.bz2
+ d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058 14 multiverse/debian-installer/binary-armel/Packages.bz2
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 multiverse/debian-installer/binary-armel/Packages
+ f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 multiverse/debian-installer/binary-armel/Packages.gz
+ f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 multiverse/debian-installer/binary-armhf/Packages.gz
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 multiverse/debian-installer/binary-armhf/Packages
+ d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058 14 multiverse/debian-installer/binary-armhf/Packages.bz2
+ d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058 14 multiverse/debian-installer/binary-i386/Packages.bz2
+ f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 multiverse/debian-installer/binary-i386/Packages.gz
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 multiverse/debian-installer/binary-i386/Packages
+ f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 multiverse/debian-installer/binary-powerpc/Packages.gz
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 multiverse/debian-installer/binary-powerpc/Packages
+ d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058 14 multiverse/debian-installer/binary-powerpc/Packages.bz2
+ f0b16a5cfd2d633c9ddecfadfa6742544b18c23ed30023286e2b20ef29f33c73 2676 multiverse/i18n/Index
+ faa0360612fc00453dfdd55b6a1bb20e4f876e041ad6fca410d5da65608ab31e 154990 multiverse/source/Sources.bz2
+ 2f0deae62e2cf7e5257bbd858cb0bf2a94122c4eb82be13e13768d0b9ce84c9e 628753 multiverse/source/Sources
+ 28f6d95fcba03e442cf24dc547653d5ec60177a29d7cfea771efcc5501077747 188325 multiverse/source/Sources.gz
+ f35f721bf16691842cc916c3563fab535f6bb83329f40c33ac02f4ba637707d3 104 multiverse/source/Release
+ 3e872fa356cbce4dfd75a88caa4fc6b47616e1fc7d224f4fc2123650fd7f4be3 9098 restricted/binary-amd64/Packages.gz
+ 459a26c3ef3cb5db8c8355ea6abfa8cfe0a7a266a197929d86d37686daf8a337 134705 restricted/binary-amd64/Packages
+ ea47572182da041b46543e471cb7a6fcc4e001fbe19a27740085ebf5d77252a9 103 restricted/binary-amd64/Release
+ adb08d7f0fa444f2869e8d932db7adb1515839f11af6032284cf1e20060e2dd6 8452 restricted/binary-amd64/Packages.bz2
+ 65a5ac0820d61383f7dcf33699aa029b5965b7906bc8341f94f8f7f354cdcd83 103 restricted/binary-armel/Release
+ f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 restricted/binary-armel/Packages.gz
+ d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058 14 restricted/binary-armel/Packages.bz2
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 restricted/binary-armel/Packages
+ ee447ce81793bd3bc8c127d4e065c6ec24e5901573dffb7cc5abedfbcb86592c 103 restricted/binary-armhf/Release
+ d88ed7df97cd60cdce35c3ca81de66e2bedf0f22e67ec8922dbd5eca545b5e50 1103 restricted/binary-armhf/Packages.bz2
+ 9ade66f4a49598fb371705a79244e5f3abb74c04467f9f9954641ae5acec6766 2477 restricted/binary-armhf/Packages
+ 03d8b64c445f327ce9e369bca815652844bd6aafb344d0287fb4e71f321d0414 941 restricted/binary-armhf/Packages.gz
+ 07e344ed07234876c3fddd9aa763e04bfc2e013fc18428738be71abfb9e1ca77 9108 restricted/binary-i386/Packages.gz
+ 8061335b923c49e72a2b60b437d5bbad1b98a45ac178a68fd8359cec9fad27ec 8431 restricted/binary-i386/Packages.bz2
+ 122336146860047af3d5817dbc423f01d57a90cbf41db1ee0ad9235c0559a43e 134582 restricted/binary-i386/Packages
+ 58634ed42b6fadb280d48f419b960e28151320a62b4486e520ca327719db554a 102 restricted/binary-i386/Release
+ f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 restricted/binary-powerpc/Packages.gz
+ d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058 14 restricted/binary-powerpc/Packages.bz2
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 restricted/binary-powerpc/Packages
+ d9bce398e46f0eac57d1d33fd8a6caa0bd7ab6334508c0640956cb7adbe1eba1 105 restricted/binary-powerpc/Release
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 restricted/debian-installer/binary-amd64/Packages
+ d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058 14 restricted/debian-installer/binary-amd64/Packages.bz2
+ f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 restricted/debian-installer/binary-amd64/Packages.gz
+ f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 restricted/debian-installer/binary-armel/Packages.gz
+ d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058 14 restricted/debian-installer/binary-armel/Packages.bz2
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 restricted/debian-installer/binary-armel/Packages
+ d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058 14 restricted/debian-installer/binary-armhf/Packages.bz2
+ f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 restricted/debian-installer/binary-armhf/Packages.gz
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 restricted/debian-installer/binary-armhf/Packages
+ f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 restricted/debian-installer/binary-i386/Packages.gz
+ d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058 14 restricted/debian-installer/binary-i386/Packages.bz2
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 restricted/debian-installer/binary-i386/Packages
+ f61f27bd17de546264aa58f40f3aafaac7021e0ef69c17f6b1b4cd7664a037ec 20 restricted/debian-installer/binary-powerpc/Packages.gz
+ d3dda84eb03b9738d118eb2be78e246106900493c0ae07819ad60815134a8058 14 restricted/debian-installer/binary-powerpc/Packages.bz2
+ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 restricted/debian-installer/binary-powerpc/Packages
+ 17dde58abfdb4dfdad9c8a82db09c9dbc3d8a7cd84b51dd9167579d6899e9ff5 2596 restricted/i18n/Index
+ ee3655459e45778fdfa06fb649565e66b25d2dd0870c75890005fb3597bb71d7 19001 restricted/source/Sources
+ cff18d2ad74ead8712f1b77a23b32e84e54269b03ba2a409ae4227860d1181f5 5470 restricted/source/Sources.bz2
+ cf085bdcb323dd2c2a599ddb7a9b3ae7bd37121f42024d68b367a4f735df900f 5306 restricted/source/Sources.gz
+ 9137393fc24cf64808d55ca7665bc5a7bd46b48918e6720a95ba239a8fab092e 104 restricted/source/Release
+ 901469729d2354891be94c192dabd8c1d0bc31e1497ea8360b70d2e847c1f3c1 25546870 universe/binary-amd64/Packages
+ 799347395d4e011a215aa5ce0c9006449d8af884795ffbce7a35767a55f99074 4785960 universe/binary-amd64/Packages.bz2
+ 68b08847604c4efe7d6f56ba79f923ce0ab82127dfcc6e8cffaf12af25d7adba 6166988 universe/binary-amd64/Packages.gz
+ 52ffdd1777a886edc5e1e1ef430b03a72937920f9722fd453ee8243cb0aac860 101 universe/binary-amd64/Release
+ a78a1304e105b2fe4c950c77c1794f715c1256d14d8541cca8f5cd13db48119e 101 universe/binary-armel/Release
+ d6d4bfa5d0891086f5a4f2aabfaecd7a1e0c0d8b46aef33b3470e349e7a9210e 4667308 universe/binary-armel/Packages.bz2
+ 374d50d0335c655da46f9cd54cd00d9a20058d2fe7c56989aa121b49883cfb88 6009219 universe/binary-armel/Packages.gz
+ ab5073e90417b729d1fe3b68052e6a8e66e48986c35470944f6a58676e967450 24901082 universe/binary-armel/Packages
+ af74034d1a3e1f90745dc48b996a98c471d997b12a1d810eb8754088540591d7 5948128 universe/binary-armhf/Packages.gz
+ 6697d196b35850817476e884fdc013d9670b4bac73310c54a4d62cd810f02c70 101 universe/binary-armhf/Release
+ 1ca17d3aecec2325cba53e1c299aeb6a1fed01d7acbc40163595de9e651abdeb 4618508 universe/binary-armhf/Packages.bz2
+ 2b422ffa77d4374650d4cc543c5a1123b2535effb2c8cdaf25fd77d1dde632c4 24642528 universe/binary-armhf/Packages
+ cd6b5cb8165553482abee1bf85e5cd3288abadccb6acf34239ec45f79a090784 6179579 universe/binary-i386/Packages.gz
+ 8ef7db20ba08cf1b4d98a618189c615c69865f4da025ac654e3e6b8a4382a3ae 25568759 universe/binary-i386/Packages
+ 06af492500145bd64762d885417d167269db6ea03022c6968f1a5d0515ac55dd 100 universe/binary-i386/Release
+ 530a2efb8051a63ed17431ae0c7243df79ecb418acf1dadc2487cd6fd79fb420 4795820 universe/binary-i386/Packages.bz2
+ 1e8fa52a64292d2c73cee0645d0eed5583ea7cc1138af4744838c6833716d638 25188905 universe/binary-powerpc/Packages
+ 5d2b8e23e0a16f13e25595b63807fb64afd9074aadf7a37b8e238b2011e894b8 6080488 universe/binary-powerpc/Packages.gz
+ eb482b008c8c882b349230abaa812ed6e545a2ef9132bb0d3d3bffa74da0c6c7 4716652 universe/binary-powerpc/Packages.bz2
+ 98d44cc7544f79c18b8e8ea697d476e9b85d91088385b643c82d4064b21f4657 103 universe/binary-powerpc/Release
+ 3da2d1e57aaca628148e2688a951cbb784a9a54b7f6b1f84d530add1b66fcceb 15255 universe/debian-installer/binary-amd64/Packages.bz2
+ 43f891ac590f44fde5854de9ba15222c088b70562f5dc4ff26064909e60cf62e 17243 universe/debian-installer/binary-amd64/Packages.gz
+ 3084a8a441e961eeb3865ff411557166ec105be86a55df268cdb6725f49e1f67 61801 universe/debian-installer/binary-amd64/Packages
+ a1ff01f18766744f36d0774a68d8a89355246c585c4b28ee18e5e139fafae530 113584 universe/debian-installer/binary-armel/Packages
+ e0713f86f5f5121deb60ce61d774951468625184a7ae9576f81d70202ef585b7 23193 universe/debian-installer/binary-armel/Packages.bz2
+ 5a8411e2b0648e553fa25ac82ea83fb17dd2d2a77bd10cec14cab12f5582d4c4 27397 universe/debian-installer/binary-armel/Packages.gz
+ b79c86d926c3129f5c27e50185157a78d85abde8ada90a9910338e660c4318be 20065 universe/debian-installer/binary-armhf/Packages.gz
+ b2113b25380423be8f6202a4860479e44a00072e46fa035f0da2f3a5a280de20 17619 universe/debian-installer/binary-armhf/Packages.bz2
+ 3f023d2cc55d6ebab883f6f2d7305a4e3564f918f63ca4f745d6fd1318e67ab7 76034 universe/debian-installer/binary-armhf/Packages
+ 5ea61a62a3e8fc755c22e23c9d87b20924707c0986a490458472a3d7e9cbe117 17260 universe/debian-installer/binary-i386/Packages.gz
+ 7a90b014c655311e92de1ea4cf24e100665c564a2ed699df63d17c82ad9e1349 15272 universe/debian-installer/binary-i386/Packages.bz2
+ 7e39417ce073e3a35d048847a29a0414af69c4e923c018dc22438319c79adea5 61718 universe/debian-installer/binary-i386/Packages
+ cdf17a791544d0c522fa853a23b317deffa76ac643e88bec0b84b0aa5afe957b 61121 universe/debian-installer/binary-powerpc/Packages
+ b470146da791dc4f4593d2bb00ea4e305d6f55f346a5f3ac6755d890a3318080 15024 universe/debian-installer/binary-powerpc/Packages.bz2
+ 810d1590d1cd7298e1fd5465f85ba49b6ae79780b42d8e8b68aebb42283785ea 16860 universe/debian-installer/binary-powerpc/Packages.gz
+ 563a55a892e1ec8bf565e3294c033b4e8dbbbe4651e73733eac7338db77282f7 2922 universe/i18n/Index
+ 7bc01d4f10bbcf882ce6931aa9371b2de6b35277efc2ae52e233280dcd12a18d 21256524 universe/source/Sources
+ 95135631873f4dce05ba657478475033d02462bbb8f7263832585d1decb5c9b8 5019105 universe/source/Sources.bz2
+ 0fd2ae580be352cb8ab4bb87e5504b78f78bcb7249b644719b3c2db3b5d3ca8c 102 universe/source/Release
+ d1dd96015e24dd369ea22413a2b876686a60c5d9d91958a5df3745a66289910f 6238766 universe/source/Sources.gz
diff --git a/tests/data/tagfile/history.1.log.gz b/tests/data/tagfile/history.1.log.gz
new file mode 100644
index 00000000..4174e02b
--- /dev/null
+++ b/tests/data/tagfile/history.1.log.gz
Binary files differ
diff --git a/tests/data/tagfile/history.log b/tests/data/tagfile/history.log
new file mode 100644
index 00000000..f1d72665
--- /dev/null
+++ b/tests/data/tagfile/history.log
@@ -0,0 +1,15 @@
+
+Start-Date: 2012-02-01 13:54:52
+Commandline: apt-get install chromium-browser
+Install: chromium-browser:amd64 (16.0.912.77~r118311-0ubuntu1), chromium-browser-l10n:amd64 (16.0.912.77~r118311-0ubuntu1, automatic), chromium-codecs-ffmpeg:amd64 (16.0.912.77~r118311-0ubuntu1, automatic)
+End-Date: 2012-02-01 13:55:01
+
+Start-Date: 2012-02-02 10:39:04
+Commandline: apt-get install python-geoclue
+Install: python-geoclue:amd64 (0.1.0-4build1)
+End-Date: 2012-02-02 10:39:08
+
+Start-Date: 2012-02-03 10:20:50
+Commandline: apt-get install python-qt4
+Install: python-qt4:amd64 (4.9-3ubuntu1)
+End-Date: 2012-02-03 10:20:55
diff --git a/tests/data/test-provides/etc/apt/sources.list b/tests/data/test-provides/etc/apt/sources.list
new file mode 100644
index 00000000..2955b5c3
--- /dev/null
+++ b/tests/data/test-provides/etc/apt/sources.list
@@ -0,0 +1 @@
+deb http://archive.ubuntu.com/ubuntu oneiric main
diff --git a/tests/data/test-provides/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_oneiric_main_binary-i386_Packages b/tests/data/test-provides/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_oneiric_main_binary-i386_Packages
new file mode 100644
index 00000000..f991cb96
--- /dev/null
+++ b/tests/data/test-provides/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_oneiric_main_binary-i386_Packages
@@ -0,0 +1,75 @@
+Package: exim4-daemon-light
+Priority: extra
+Section: mail
+Installed-Size: 1092
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: Exim4 Maintainers <pkg-exim4-maintainers@lists.alioth.debian.org>
+Architecture: all
+Source: exim4
+Version: 4.76-2ubuntu1
+Replaces: mail-transport-agent
+Provides: mail-transport-agent
+Conflicts: mail-transport-agent
+Filename: pool/main/e/exim4/exim4-daemon-light_4.76-2ubuntu1_i386.deb
+Size: 451088
+MD5sum: 81795887e233ecfb3471e8a3da4c4b8b
+SHA1: da0202f7da88b9e9c5ee326a24c3fdd640543a5d
+SHA256: 5ffa03674b5198d1c0e9e0d9e3442cdd7fbe13226c7df91aa53def1f8b6c0d86
+Description: lightweight Exim MTA (v4) daemon
+ Exim (v4) is a mail transport agent. This package contains the exim4
+ daemon with only basic features enabled. It works well with the
+ standard setups that are provided by Debian and includes support for
+ TLS encryption and the dlopen patch to allow dynamic loading of a
+ local_scan function.
+ .
+ The Debian exim4 packages have their own web page,
+ http://pkg-exim4.alioth.debian.org/. There is also a Debian-specific
+ FAQ list. Information about the way the Debian packages are
+ configured can be found in
+ /usr/share/doc/exim4-base/README.Debian.gz, which additionally contains
+ information about the way the Debian binary packages are built. The
+ very extensive upstream documentation is shipped in
+ /usr/share/doc/exim4-base/spec.txt.gz. To repeat the debconf-driven
+ configuration process in a standard setup, invoke dpkg-reconfigure
+ exim4-config. There is a Debian-centered mailing list,
+ pkg-exim4-users@lists.alioth.debian.org. Please ask Debian-specific
+ questions there, and only write to the upstream exim-users mailing
+ list if you are sure that your question is not Debian-specific. You
+ can find the subscription web page on
+ http://lists.alioth.debian.org/mailman/listinfo/pkg-exim4-users
+Homepage: http://www.exim.org/
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+
+Package: postfix
+Priority: optional
+Section: mail
+Installed-Size: 3472
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+Original-Maintainer: LaMont Jones <lamont@debian.org>
+Architecture: all
+Version: 2.8.3-1ubuntu1
+Replaces: mail-transport-agent
+Provides: default-mta, mail-transport-agent
+Recommends: python
+Suggests: procmail, postfix-mysql, postfix-pgsql, postfix-ldap, postfix-pcre, sasl2-bin, libsasl2-modules, dovecot-common, resolvconf, postfix-cdb, mail-reader, ufw
+Conflicts: libnss-db (<< 2.2-3), mail-transport-agent, smail
+Filename: pool/main/p/postfix/postfix_2.8.3-1ubuntu1_i386.deb
+Size: 1221834
+MD5sum: c4575f03ef0711cc744d394ae36f4a8c
+SHA1: f0f636c942981782cf23cee3d8a95aee188081b9
+SHA256: 13a4bfaf10c8addfc7dce01c0ea65bfbd6a759c4a2aaaafbae5855d099925fe0
+Description: High-performance mail transport agent
+ Postfix is Wietse Venema's mail transport agent that started life as an
+ alternative to the widely-used Sendmail program. Postfix attempts to
+ be fast, easy to administer, and secure, while at the same time being
+ sendmail compatible enough to not upset existing users. Thus, the outside
+ has a sendmail-ish flavor, but the inside is completely different.
+Homepage: http://www.postfix.org
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Origin: Ubuntu
+Supported: 18m
+Task: mail-server
+
+
diff --git a/tests/data/test-provides/var/lib/dpkg/status b/tests/data/test-provides/var/lib/dpkg/status
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tests/data/test-provides/var/lib/dpkg/status
diff --git a/tests/data/test_debs/data-tar-broken.deb b/tests/data/test_debs/data-tar-broken.deb
new file mode 100644
index 00000000..4fd42e0f
--- /dev/null
+++ b/tests/data/test_debs/data-tar-broken.deb
Binary files differ
diff --git a/tests/data/test_debs/multiarch-test1_i386.deb b/tests/data/test_debs/multiarch-test1_i386.deb
new file mode 100644
index 00000000..439a9f46
--- /dev/null
+++ b/tests/data/test_debs/multiarch-test1_i386.deb
Binary files differ
diff --git a/tests/fakeroot-apt-key b/tests/fakeroot-apt-key
new file mode 100755
index 00000000..997161a1
--- /dev/null
+++ b/tests/fakeroot-apt-key
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec fakeroot /usr/bin/apt-key $*
diff --git a/tests/test_all.py b/tests/test_all.py
index 091581f8..0f548781 100644
--- a/tests/test_all.py
+++ b/tests/test_all.py
@@ -34,11 +34,16 @@ def get_library_dir():
return os.path.abspath(library_dir)
if __name__ == '__main__':
+ if not os.access("/etc/apt/sources.list", os.R_OK):
+ sys.stderr.write("[tests] Skipping because sources.list is not readable\n")
+ sys.exit(0)
+
sys.stderr.write("[tests] Running on %s\n" % sys.version.replace("\n", ""))
dirname = os.path.dirname(__file__)
if dirname:
os.chdir(dirname)
library_dir = get_library_dir()
+ sys.stderr.write("Using library_dir: '%s'" % library_dir)
if library_dir:
sys.path.insert(0, os.path.abspath(library_dir))
diff --git a/tests/test_apt_cache.py b/tests/test_apt_cache.py
index aaa9f601..448aed75 100644
--- a/tests/test_apt_cache.py
+++ b/tests/test_apt_cache.py
@@ -19,6 +19,15 @@ import apt
import apt_pkg
import shutil
import glob
+import logging
+
+def if_sources_list_is_readable(f):
+ def wrapper(*args, **kwargs):
+ if os.access("/etc/apt/sources.list", os.R_OK):
+ f(*args, **kwargs)
+ else:
+ logging.warn("skipping '%s' because sources.list is not readable" % f)
+ return wrapper
class TestAptCache(unittest.TestCase):
""" test the apt cache """
@@ -26,8 +35,17 @@ class TestAptCache(unittest.TestCase):
def setUp(self):
# reset any config manipulations done in the individual tests
apt_pkg.init_config()
+ # save/restore the apt config
+ self._cnf = {}
+ for item in apt_pkg.config.keys():
+ self._cnf[item] = apt_pkg.config.find(item)
- def testAptCache(self):
+ def tearDown(self):
+ for item in self._cnf:
+ apt_pkg.config.set(item, self._cnf[item])
+
+ @if_sources_list_is_readable
+ def test_apt_cache(self):
"""cache: iterate all packages and all dependencies """
cache = apt.Cache()
# number is not meaningful and just need to be "big enough",
@@ -37,8 +55,8 @@ class TestAptCache(unittest.TestCase):
# that is possible and does not crash
for pkg in cache:
if pkg.candidate:
- for or_dep in pkg.candidate.dependencies:
- for dep in or_dep.or_dependencies:
+ for or_deps in pkg.candidate.dependencies:
+ for dep in or_deps:
self.assertTrue(dep.name)
self.assertTrue(isinstance(dep.relation, str))
self.assertTrue(dep.pre_depend in (True, False))
@@ -53,27 +71,30 @@ class TestAptCache(unittest.TestCase):
self.assertTrue(str(r).startswith('Package: %s\n' % pkg.shortname))
def test_get_provided_packages(self):
- cache = apt.Cache()
+ apt.apt_pkg.config.set("Apt::architecture", "i386")
+ cache = apt.Cache(rootdir="./data/test-provides/")
+ cache.open()
+ if len(cache) == 0:
+ logging.warn("skipping test_get_provided_packages, cache empty?!?")
+ return
# a true virtual pkg
l = cache.get_providing_packages("mail-transport-agent")
self.assertTrue(len(l) > 0)
self.assertTrue("postfix" in [p.name for p in l])
- # this is a not virtual (transitional) package provided by another
- l = cache.get_providing_packages("git-core")
- self.assertEqual(l, [])
- # now inlcude nonvirtual packages in the search (rarian-compat
- # provides scrollkeeper)
- l = cache.get_providing_packages("git-core",
- include_nonvirtual=True)
- self.assertEqual([p.name for p in l], ["git"])
self.assertTrue("mail-transport-agent" in cache["postfix"].candidate.provides)
def test_low_level_pkg_provides(self):
+ apt.apt_pkg.config.set("Apt::architecture", "i386")
+ # create highlevel cache and get the lowlevel one from it
+ highlevel_cache = apt.Cache(rootdir="./data/test-provides")
+ if len(highlevel_cache) == 0:
+ logging.warn("skipping test_log_level_pkg_provides, cache empty?!?")
+ return
# low level cache provides list of the pkg
- cache = apt_pkg.Cache(progress=None)
+ cache = highlevel_cache._cache
l = cache["mail-transport-agent"].provides_list
# arbitrary number, just needs to be higher enough
- self.assertTrue(len(l), 5)
+ self.assertEqual(len(l), 2)
for (providesname, providesver, version) in l:
self.assertEqual(providesname, "mail-transport-agent")
if version.parent_pkg.name == "postfix":
@@ -81,10 +102,8 @@ class TestAptCache(unittest.TestCase):
else:
self.assertNotReached()
-
+ @if_sources_list_is_readable
def test_dpkg_journal_dirty(self):
- # backup old value
- old_status = apt_pkg.config.find_file("Dir::State::status")
# create tmp env
tmpdir = tempfile.mkdtemp()
dpkg_dir = os.path.join(tmpdir,"var","lib","dpkg")
@@ -101,9 +120,8 @@ class TestAptCache(unittest.TestCase):
# that is a dirty journal
open(os.path.join(dpkg_dir,"updates","000"), "w").close()
self.assertTrue(cache.dpkg_journal_dirty)
- # reset config value
- apt_pkg.config.set("Dir::State::status", old_status)
+ @if_sources_list_is_readable
def test_apt_update(self):
rootdir = "./data/tmp"
if os.path.exists(rootdir):
@@ -114,11 +132,14 @@ class TestAptCache(unittest.TestCase):
pass
state_dir = os.path.join(rootdir, "var/lib/apt")
lists_dir = os.path.join(rootdir, "var/lib/apt/lists")
+ old_state = apt_pkg.config.find("dir::state")
apt_pkg.config.set("dir::state", state_dir)
# set a local sources.list that does not need the network
base_sources = os.path.abspath(os.path.join(rootdir, "sources.list"))
+ old_source_list = apt_pkg.config.find("dir::etc::sourcelist")
+ old_source_parts = apt_pkg.config.find("dir::etc::sourceparts")
apt_pkg.config.set("dir::etc::sourcelist", base_sources)
- apt_pkg.config.set("dir::etc::sourceparts", "xxx")
+ apt_pkg.config.set("dir::etc::sourceparts", "/tmp")
# main sources.list
sources_list = base_sources
with open(sources_list, "w") as f:
@@ -162,6 +183,25 @@ class TestAptCache(unittest.TestCase):
cache.update(sources_list=sources_list)
all_packages = glob.glob(lists_dir+"/*_Packages*")
self.assertEqual(len(all_packages), 2)
+ apt_pkg.config.set("dir::state", old_state)
+ apt_pkg.config.set("dir::etc::sourcelist", old_source_list)
+ apt_pkg.config.set("dir::etc::sourceparts", old_source_parts)
+
+ def test_package_cmp(self):
+ cache = apt.Cache(rootdir="/")
+ l = []
+ l.append(cache["intltool"])
+ l.append(cache["python3"])
+ l.append(cache["apt"])
+ l.sort()
+ self.assertEqual([p.name for p in l],
+ ["apt", "intltool", "python3"])
+
+ def test_get_architectures(self):
+ main_arch = apt.apt_pkg.config.get("APT::Architecture")
+ arches = apt_pkg.get_architectures()
+ self.assertTrue(main_arch in arches)
+
if __name__ == "__main__":
unittest.main()
diff --git a/tests/test_aptsources.py b/tests/test_aptsources.py
index 1597674e..dcfb0682 100644
--- a/tests/test_aptsources.py
+++ b/tests/test_aptsources.py
@@ -3,6 +3,7 @@
import unittest
import os
import copy
+import tempfile
import apt_pkg
import aptsources.sourceslist
@@ -17,7 +18,7 @@ class TestAptSources(unittest.TestCase):
if apt_pkg.config["APT::Architecture"] not in ('i386', 'amd64'):
apt_pkg.config.set("APT::Architecture", "i386")
apt_pkg.config.set("Dir::Etc", os.getcwd())
- apt_pkg.config.set("Dir::Etc::sourceparts", "/xxx")
+ apt_pkg.config.set("Dir::Etc::sourceparts", tempfile.mkdtemp())
if os.path.exists("./build/data/templates"):
self.templates = os.path.abspath("./build/data/templates")
elif os.path.exists("../build/data/templates"):
@@ -159,6 +160,29 @@ class TestAptSources(unittest.TestCase):
assert sources.list[8].comps == ["main"]
assert sources.list[8].line.strip() == str(sources.list[8])
+ def test_enable_component(self):
+ from subprocess import Popen, PIPE
+ target = "./data/aptsources/sources.list.enable_comps"
+ line = "deb http://archive.ubuntu.com/ubuntu lucid main\n"
+ open(target, "w").write(line)
+ apt_pkg.config.set("Dir::Etc::sourcelist", target)
+ sources = aptsources.sourceslist.SourcesList(True, self.templates)
+ distro = aptsources.distro.get_distro(id="Ubuntu")
+ # make sure we are using the right distro
+ distro.codename = "lucid"
+ distro.id = "Ubuntu"
+ distro.release = "10.04"
+ # and get the sources
+ distro.get_sources(sources)
+ # test enable_component
+ comp = "multiverse"
+ distro.enable_component(comp)
+ comps = set()
+ for entry in sources:
+ comps = comps.union(set(entry.comps))
+ self.assertTrue("multiverse" in comps)
+ self.assertTrue("universe" in comps)
+
def testDistribution(self):
"""aptsources: Test distribution detection."""
apt_pkg.config.set("Dir::Etc::sourcelist", "data/aptsources/"
diff --git a/tests/test_aptsources_ports.py b/tests/test_aptsources_ports.py
index 991b532a..67c21b9c 100644
--- a/tests/test_aptsources_ports.py
+++ b/tests/test_aptsources_ports.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python
import os
import unittest
-
+import tempfile
import apt_pkg
import aptsources.sourceslist
@@ -17,7 +17,7 @@ class TestAptSourcesPorts(unittest.TestCase):
apt_pkg.config.set("APT::Architecture", "powerpc")
apt_pkg.config.set("Dir::Etc",
os.path.abspath("data/aptsources_ports"))
- apt_pkg.config.set("Dir::Etc::sourceparts", "/xxx")
+ apt_pkg.config.set("Dir::Etc::sourceparts", tempfile.mkdtemp())
if os.path.exists("../build/data/templates"):
self.templates = os.path.abspath("../build/data/templates")
else:
diff --git a/tests/test_auth.py b/tests/test_auth.py
new file mode 100644
index 00000000..99c40db5
--- /dev/null
+++ b/tests/test_auth.py
@@ -0,0 +1,235 @@
+#!/usr/bin/env python
+
+import os
+import shutil
+import sys
+import tempfile
+import time
+import unittest
+
+if sys.version_info[0] > 2:
+ from http.server import HTTPServer
+ from http.server import SimpleHTTPRequestHandler as HTTPRequestHandler
+else:
+ from BaseHTTPServer import HTTPServer
+ from SimpleHTTPServer import SimpleHTTPRequestHandler as HTTPRequestHandler
+
+import apt_pkg
+import apt.auth
+
+WHEEZY_KEY = """-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.12 (GNU/Linux)
+
+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
+DHcut3Yey8o=
+=id4q
+-----END PGP PUBLIC KEY BLOCK-----"""
+
+
+class TestAuthKeys(unittest.TestCase):
+
+ """Test handling of keys for signed repositories."""
+
+ if sys.version_info[0] == 2 and sys.version_info[1] < 7:
+ def addCleanup(self, function, *args, **kwds):
+ try:
+ self.cleanup.append(lambda: function(*args, **kwds))
+ except AttributeError:
+ self.cleanup = [lambda: function(*args, **kwds)]
+
+ def tearDown(self):
+ for f in self.cleanup:
+ f()
+ self.cleanup = []
+
+ def setUp(self):
+ # reset any config manipulations done in the individual tests
+ apt_pkg.init_config()
+ # save the apt config to restore later
+ cnf = {}
+ for item in apt_pkg.config.keys():
+ cnf[item] = apt_pkg.config.find(item)
+ self.addCleanup(self._restore_apt_config, cnf)
+
+ self.tmpdir = tempfile.mkdtemp()
+ self.addCleanup(shutil.rmtree, self.tmpdir)
+ apt_pkg.config.set("Dir", self.tmpdir)
+ apt_pkg.config.set("Dir::Bin::Apt-key", "fakeroot-apt-key")
+ apt_pkg.config.set("Dir::Etc", "etc/apt/")
+ trustedparts_dir = apt_pkg.config.find_dir("Dir::Etc::Trustedparts")
+ confparts_dir = apt_pkg.config.find_dir("Dir::Etc::parts")
+ self.assertTrue(trustedparts_dir.startswith(self.tmpdir))
+ os.makedirs(trustedparts_dir)
+ os.makedirs(confparts_dir)
+ shutil.copy("fakeroot-apt-key", self.tmpdir)
+
+ def _restore_apt_config(self, cnf):
+ """Restore previous apt configuration."""
+ for item in cnf:
+ apt_pkg.config.set(item, cnf[item])
+
+ def testAddAndExportKey(self):
+ """Add an example key."""
+ apt.auth.add_key(WHEEZY_KEY)
+ # Strip the headers from the keys to avoid test errors because
+ # the exported key used a differenct GnuPG version than the
+ # original example key
+ self.assertEqual(apt.auth.export_key("46925553").split("\n")[2:],
+ WHEEZY_KEY.split("\n")[2:])
+
+ def testAddAndListKey(self):
+ """Add an example key and test if it is correctly returned by
+ list_keys()
+ """
+ apt.auth.add_key(WHEEZY_KEY)
+ ret = apt.auth.list_keys()
+ self.assertEqual(len(ret), 1)
+ key = ret[0]
+ self.assertEqual(key.name,
+ "Debian Archive Automatic Signing Key (7.0/wheezy) "
+ "<ftpmaster@debian.org>")
+ self.assertEqual(key.keyid, "46925553")
+ self.assertEqual(key.date, "2012-04-27")
+
+ def testAddKeyFromFile(self):
+ """Test adding a key from file."""
+ keyfd, keyname = tempfile.mkstemp()
+ self.addCleanup(os.close, keyfd)
+ os.write(keyfd, WHEEZY_KEY.encode("UTF-8"))
+
+ apt.auth.add_key_from_file(keyname)
+
+ ret = apt.auth.list_keys()
+ self.assertEqual(len(ret), 1)
+ key = ret[0]
+ self.assertEqual(key.name,
+ "Debian Archive Automatic Signing Key (7.0/wheezy) "
+ "<ftpmaster@debian.org>")
+ self.assertEqual(key.keyid, "46925553")
+ self.assertEqual(key.date, "2012-04-27")
+
+ def testAddKeyFromServer(self):
+ """Install a GnuPG key from a remote server."""
+ self._start_keyserver()
+ self.addCleanup(self._stop_keyserver)
+
+ apt.auth.add_key_from_keyserver("46925553", "hkp://localhost:19191")
+
+ ret = apt.auth.list_keys()
+ self.assertEqual(len(ret), 1)
+ key = ret[0]
+ self.assertEqual(key.name,
+ "Debian Archive Automatic Signing Key (7.0/wheezy) "
+ "<ftpmaster@debian.org>")
+ self.assertEqual(key.keyid, "46925553")
+ self.assertEqual(key.date, "2012-04-27")
+
+ def _start_keyserver(self):
+ """Start a fake keyserver on http://localhost:19191
+ Thanks pitti.
+ """
+ dir = tempfile.mkdtemp()
+ self.addCleanup(shutil.rmtree, dir)
+ os.mkdir(os.path.join(dir, "pks"))
+ with open(os.path.join(dir, "pks", "lookup"), "w") as key_file:
+ key_file.write(WHEEZY_KEY)
+
+ self.keyserver_pid = os.fork()
+ if self.keyserver_pid == 0:
+ # quiesce server log
+ os.dup2(os.open('/dev/null', os.O_WRONLY), sys.stderr.fileno())
+ os.chdir(dir)
+ httpd = HTTPServer(('localhost', 19191), HTTPRequestHandler)
+ httpd.serve_forever()
+ os._exit(0)
+
+ # wait a bit until server is ready
+ time.sleep(0.5)
+
+ def _stop_keyserver(self):
+ '''Stop fake keyserver'''
+ assert self.keyserver_pid
+
+ os.kill(self.keyserver_pid, 15)
+ os.wait()
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/tests/test_debfile.py b/tests/test_debfile.py
index 5f6d1aa2..04a6b65a 100644
--- a/tests/test_debfile.py
+++ b/tests/test_debfile.py
@@ -17,8 +17,8 @@ sys.path.insert(0, get_library_dir())
import apt_pkg
import apt.debfile
-class TestDebfilee(unittest.TestCase):
- """ test the apt cache """
+class TestDebfile(unittest.TestCase):
+ """ test the debfile """
TEST_DEBS = [
# conflicts with apt
@@ -87,12 +87,7 @@ class TestDebfilee(unittest.TestCase):
self.assertEqual(deb["Maintainer"],
"Samuel Lidén Borell <samuel@slbdata.se>")
- def testContent(self):
- # no python-debian for python3 yet, so fail gracefully
- try:
- import debian
- except ImportError:
- return
+ def test_content(self):
# normal
deb = apt.debfile.DebPackage(cache=self.cache)
deb.open(os.path.join("data", "test_debs", "gdebi-test11.deb"))
@@ -119,6 +114,23 @@ Description: testpackage for gdebi - contains usr/bin/binary for file reading
deb = apt.debfile.DebPackage("./data/test_debs/data-tar-xz.deb")
self.assertEqual(deb.filelist, ["./", "usr/", "usr/bin/"])
+ def test_check_exception(self):
+ deb = apt.debfile.DebPackage("./data/test_debs/data-tar-xz.deb")
+ self.assertRaises(AttributeError, lambda: deb.missing_deps)
+ deb.check()
+ deb.missing_deps
+
+ def test_no_supported_data_tar(self):
+ # ensure that a unknown data.tar.xxx raises a exception
+ raised = False
+ try:
+ deb = apt.debfile.DebPackage("./data/test_debs/data-tar-broken.deb")
+ except SystemError:
+ raised = True
+ # with self.assertRaises(SystemError): is more elegant above, but
+ # we need to support python2.6
+ self.assertTrue(raised)
+
if __name__ == "__main__":
#logging.basicConfig(level=logging.DEBUG)
diff --git a/tests/test_debfile_multiarch.py b/tests/test_debfile_multiarch.py
new file mode 100644
index 00000000..7c02a32a
--- /dev/null
+++ b/tests/test_debfile_multiarch.py
@@ -0,0 +1,55 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2010 Michael Vogt <mvo@ubuntu.com>
+#
+# Copying and distribution of this file, with or without modification,
+# are permitted in any medium without royalty provided the copyright
+# notice and this notice are preserved.
+"""Unit tests for verifying the correctness of DebPackage in apt.debfile."""
+import os
+import logging
+import unittest
+
+from test_all import get_library_dir
+import sys
+sys.path.insert(0, get_library_dir())
+import apt
+import apt_pkg
+import apt.debfile
+
+class TestDebfileMultiarch(unittest.TestCase):
+ """ test the multiarch debfile """
+
+ def test_multiarch_deb_check(self):
+ if apt_pkg.get_architectures() != ["amd64", "i386"]:
+ logging.warn("skipping test because running on a non-multiarch system")
+ return
+ deb = apt.debfile.DebPackage(
+ "./data/test_debs/multiarch-test1_i386.deb")
+ missing = deb.missing_deps
+ #print missing
+ self.assertFalse("dpkg:i386" in missing)
+
+ def test_multiarch_conflicts(self):
+ cache = apt.Cache()
+ # WARNING: this assumes that lib3ds-1-3 is a non-multiarch lib
+ # use "lib3ds-1-3" as a test to see if non-multiach lib conflicts work
+ canary = "lib3ds-1-3"
+ if not canary in cache:
+ logging.warn("skipping test because %s is missing" % canary)
+ return
+ cache[canary].mark_install()
+ deb = apt.debfile.DebPackage(
+ "./data/test_debs/multiarch-test1_i386.deb", cache=cache)
+ # this deb should now not be installable
+ installable = deb.check()
+ #print deb._failure_string
+ self.assertFalse(installable)
+ self.assertEqual(deb._failure_string,
+ "Conflicts with the installed package 'lib3ds-1-3'")
+
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/tests/test_lp659438.py b/tests/test_lp659438.py
new file mode 100644
index 00000000..4564f0f6
--- /dev/null
+++ b/tests/test_lp659438.py
@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Regression test for LP: #981896, LP: #659438"""
+# Copyright (C) 2012 Sebastian Heinlein <devel@glatzor.de>
+#
+# Licensed under the GNU General Public License Version 2
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# Licensed under the GNU General Public License Version 2
+
+__author__ = "Sebastian Heinlein <devel@glatzor.de>"
+
+import os
+import shutil
+import tempfile
+import unittest
+
+import apt_pkg
+import apt
+
+
+class RegressionTestCase(unittest.TestCase):
+
+ """Test suite for LP: #981896, LP: #659438
+ 'Cannot locate a file for package X'
+ """
+
+ def setUp(self):
+ apt_pkg.init_config()
+ self.chroot_path = chroot_path = tempfile.mkdtemp()
+ # Create a damaged status file
+ self.cache = apt.cache.Cache(rootdir=chroot_path)
+ with open(apt_pkg.config.find_file("Dir::State::status"),
+ "a") as status:
+ status.write("""Package: abrowser
+Status: install reinstreq half-installed
+Priority: optional
+Section: admin
+Version: 3.6.9+build1+nobinonly-0ubuntu1""")
+ sources_list_path = apt_pkg.config.find_file("Dir::Etc::sourcelist")
+ repo_path = os.path.abspath("./data/test-repo")
+ with open(sources_list_path, "w") as sources_list:
+ sources_list.write("deb copy:%s /\n" % repo_path)
+ # os.makedirs(os.path.join(chroot_path, "etc/apt/sources.list.d/"))
+ self.cache.update(sources_list=sources_list_path)
+ self.cache.open()
+
+ def tearDown(self):
+ # this resets the rootdir apt_pkg.config to ensure it does not
+ # "pollute" the later tests
+ cache = apt.cache.Cache(rootdir="/")
+ shutil.rmtree(self.chroot_path)
+
+ def test_survive_reqreinst(self):
+ """Test that we survive a package in require reinstallation state"""
+ # this should be 82324L but python3.2 gets unhappy about the "L"
+ self.assertEqual(self.cache.required_download, 82324)
+
+if __name__ == "__main__":
+ unittest.main()
+
+# vim: ts=4 et sts=4
diff --git a/tests/test_policy.py b/tests/test_policy.py
new file mode 100644
index 00000000..f7d41152
--- /dev/null
+++ b/tests/test_policy.py
@@ -0,0 +1,39 @@
+#!/usr/bin/python
+#
+# Copyright (C) 2012 Michael Vogt <mvo@ubuntu.com>
+#
+# Copying and distribution of this file, with or without modification,
+# are permitted in any medium without royalty provided the copyright
+# notice and this notice are preserved.
+
+import apt
+import unittest
+
+class TestAptPolicy(unittest.TestCase):
+
+ def test_apt_policy_lowlevel(self):
+ # get a policy
+ cache = apt.Cache()
+ policy = cache._depcache.policy
+ self.assertNotEqual(policy, None)
+ # basic tests
+ pkg = cache["apt"]
+ self.assertEqual(policy.get_priority(pkg._pkg), 0)
+ # get priority for all pkgfiles
+ for ver in pkg.versions:
+ lowlevel_ver = ver._cand
+ for pkgfile, i in lowlevel_ver.file_list:
+ #print pkgfile, i, policy.get_priority(pkgfile)
+ self.assertTrue(policy.get_priority(pkgfile) >= 1)
+ self.assertTrue(policy.get_priority(pkgfile) < 1001)
+
+ def test_apt_policy_highlevel(self):
+ cache = apt.Cache()
+ pkg = cache["apt"]
+ self.assertTrue(pkg.candidate.policy_priority > 1 and
+ pkg.candidate.policy_priority < 1001)
+
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/tests/test_progress.py b/tests/test_progress.py
index 73853dfa..3b6285d6 100644
--- a/tests/test_progress.py
+++ b/tests/test_progress.py
@@ -27,7 +27,7 @@ class TestProgress(unittest.TestCase):
apt_pkg.init()
apt_pkg.config.set("APT::Architecture", "amd64")
apt_pkg.config.set("Dir::Etc", basedir)
- apt_pkg.config.set("Dir::Etc::sourceparts", "/xxx")
+ apt_pkg.config.set("Dir::Etc::sourceparts", "/tmp")
# setup lists dir
if not os.path.exists("./tmp/partial"):
os.makedirs("./tmp/partial")
diff --git a/tests/test_tagfile.py b/tests/test_tagfile.py
new file mode 100644
index 00000000..33197e6a
--- /dev/null
+++ b/tests/test_tagfile.py
@@ -0,0 +1,133 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2010 Michael Vogt <mvo@ubuntu.com>
+# Copyright (C) 2012 Canonical Ltd.
+# Author: Colin Watson <cjwatson@ubuntu.com>
+#
+# Copying and distribution of this file, with or without modification,
+# are permitted in any medium without royalty provided the copyright
+# notice and this notice are preserved.
+"""Unit tests for verifying the correctness of apt_pkg.TagFile"""
+
+from __future__ import print_function, unicode_literals
+
+import io
+import glob
+import os
+import shutil
+import sys
+import tempfile
+import unittest
+
+from test_all import get_library_dir
+sys.path.insert(0, get_library_dir())
+
+import apt_pkg
+
+class TestTagFile(unittest.TestCase):
+ """ test the apt_pkg.TagFile """
+
+ def setUp(self):
+ apt_pkg.init()
+ self.temp_dir = tempfile.mkdtemp()
+
+ def tearDown(self):
+ shutil.rmtree(self.temp_dir)
+
+ def test_tag_file(self):
+ basepath = os.path.dirname(__file__)
+ tagfilepath = os.path.join(basepath, "./data/tagfile/*")
+ # test once for compressed and uncompressed
+ for testfile in glob.glob(tagfilepath):
+ # test once using the open() method and once using the path
+ for f in [testfile, open(testfile)]:
+ tagfile = apt_pkg.TagFile(f)
+ for i, stanza in enumerate(tagfile):
+ pass
+ self.assertEqual(i, 2)
+
+ def test_errors(self):
+ # Raises SystemError via lbiapt
+ self.assertRaises(SystemError, apt_pkg.TagFile, "not-there-no-no")
+ # Raises Type error
+ self.assertRaises(TypeError, apt_pkg.TagFile, object())
+
+ def test_utf8(self):
+ value = "Tést Persön <test@example.org>"
+ packages = os.path.join(self.temp_dir, "Packages")
+ with io.open(packages, "w", encoding="UTF-8") as packages_file:
+ print("Maintainer: %s" % value, file=packages_file)
+ print("", file=packages_file)
+ if sys.version < '3':
+ # In Python 2, test the traditional file interface.
+ with open(packages) as packages_file:
+ tagfile = apt_pkg.TagFile(packages_file)
+ tagfile.step()
+ self.assertEqual(
+ value.encode("UTF-8"), tagfile.section["Maintainer"])
+ with io.open(packages, encoding="UTF-8") as packages_file:
+ tagfile = apt_pkg.TagFile(packages_file)
+ tagfile.step()
+ if sys.version < '3':
+ self.assertEqual(
+ value.encode("UTF-8"), tagfile.section["Maintainer"])
+ else:
+ self.assertEqual(value, tagfile.section["Maintainer"])
+
+ def test_latin1(self):
+ value = "Tést Persön <test@example.org>"
+ packages = os.path.join(self.temp_dir, "Packages")
+ with io.open(packages, "w", encoding="ISO-8859-1") as packages_file:
+ print("Maintainer: %s" % value, file=packages_file)
+ print("", file=packages_file)
+ if sys.version < '3':
+ # In Python 2, test the traditional file interface.
+ with open(packages) as packages_file:
+ tagfile = apt_pkg.TagFile(packages_file)
+ tagfile.step()
+ self.assertEqual(
+ value.encode("ISO-8859-1"), tagfile.section["Maintainer"])
+ with io.open(packages) as packages_file:
+ tagfile = apt_pkg.TagFile(packages_file, bytes=True)
+ tagfile.step()
+ self.assertEqual(
+ value.encode("ISO-8859-1"), tagfile.section["Maintainer"])
+ if sys.version >= '3':
+ # In Python 3, TagFile can pick up the encoding of the file
+ # object.
+ with io.open(packages, encoding="ISO-8859-1") as packages_file:
+ tagfile = apt_pkg.TagFile(packages_file)
+ tagfile.step()
+ self.assertEqual(value, tagfile.section["Maintainer"])
+
+ def test_mixed(self):
+ value = "Tést Persön <test@example.org>"
+ packages = os.path.join(self.temp_dir, "Packages")
+ with io.open(packages, "w", encoding="UTF-8") as packages_file:
+ print("Maintainer: %s" % value, file=packages_file)
+ print("", file=packages_file)
+ with io.open(packages, "a", encoding="ISO-8859-1") as packages_file:
+ print("Maintainer: %s" % value, file=packages_file)
+ print("", file=packages_file)
+ if sys.version < '3':
+ # In Python 2, test the traditional file interface.
+ with open(packages) as packages_file:
+ tagfile = apt_pkg.TagFile(packages_file)
+ tagfile.step()
+ self.assertEqual(
+ value.encode("UTF-8"), tagfile.section["Maintainer"])
+ tagfile.step()
+ self.assertEqual(
+ value.encode("ISO-8859-1"), tagfile.section["Maintainer"])
+ with io.open(packages) as packages_file:
+ tagfile = apt_pkg.TagFile(packages_file, bytes=True)
+ tagfile.step()
+ self.assertEqual(
+ value.encode("UTF-8"), tagfile.section["Maintainer"])
+ tagfile.step()
+ self.assertEqual(
+ value.encode("ISO-8859-1"), tagfile.section["Maintainer"])
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/tests/test_utils.py b/tests/test_utils.py
new file mode 100644
index 00000000..2676bb98
--- /dev/null
+++ b/tests/test_utils.py
@@ -0,0 +1,67 @@
+#!/usr/bin/python
+#
+# Copyright (C) 2010 Michael Vogt <michael.vogt@ubuntu.com>
+#
+# Copying and distribution of this file, with or without modification,
+# are permitted in any medium without royalty provided the copyright
+# notice and this notice are preserved.
+
+import datetime
+import os
+import sys
+import unittest
+
+import apt_pkg
+import apt.utils
+
+from apt.utils import (
+ get_maintenance_end_date,
+ get_release_date_from_release_file,
+ )
+
+class TestUtils(unittest.TestCase):
+
+ def test_get_release_date_from_release_file(self):
+ path = os.path.join(os.path.dirname(__file__),
+ "data", "misc", "foo_Release")
+ t = get_release_date_from_release_file(path)
+ self.assertEqual(str(datetime.datetime.utcfromtimestamp(t)),
+ "2012-04-25 22:49:23")
+
+ def test_maintenance_time(self):
+ months_of_support = 18
+ # test historic releases, jaunty
+ release_date = datetime.datetime(2009, 4, 23)
+ (end_year, end_month) = get_maintenance_end_date(release_date, months_of_support)
+ self.assertEqual(end_year, 2010)
+ self.assertEqual(end_month, 10)
+ # test historic releases, karmic
+ release_date = datetime.datetime(2009, 10, 29)
+ (end_year, end_month) = get_maintenance_end_date(release_date, months_of_support)
+ self.assertEqual(end_year, 2011)
+ self.assertEqual(end_month, 4)
+ # test maverick
+ release_date = datetime.datetime(2010, 10, 10)
+ (end_year, end_month) = get_maintenance_end_date(release_date, months_of_support)
+ self.assertEqual(end_year, 2012)
+ self.assertEqual(end_month, 4)
+
+ # test with modulo zero
+ release_date = datetime.datetime(2010, 6, 10)
+ (end_year, end_month) = get_maintenance_end_date(release_date, months_of_support)
+ self.assertEqual(end_year, 2011)
+ self.assertEqual(end_month, 12)
+
+ # test dapper
+ months_of_support = 60
+ release_date = datetime.datetime(2008, 4, 24)
+ (end_year, end_month) = get_maintenance_end_date(release_date, months_of_support)
+ self.assertEqual(end_year, 2013)
+ self.assertEqual(end_month, 4)
+
+ # what datetime says
+ #d = datetime.timedelta(18*30)
+ #print "end date: ", release_date + d
+
+if __name__ == "__main__":
+ unittest.main()