1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
#!/usr/bin/python3
import aptsources.distro
import aptsources.sourceslist
import unittest
import apt_pkg
import os
import copy
class TestAptSources(unittest.TestCase):
@classmethod
def setUpClass(cls):
for k in apt_pkg.config.keys():
apt_pkg.config.clear(k)
apt_pkg.init()
def setUp(self):
self.testdir = os.path.abspath(os.path.dirname(__file__))
apt_pkg.init()
apt_pkg.config.set("Dir::Etc", self.testdir)
apt_pkg.config.set("Dir::Etc::sourceparts",".")
self.sources_list = os.path.join(self.testdir, "data", "sources.list")
apt_pkg.config.set("Dir::Etc::sourcelist", self.sources_list)
def testIsMirror(self):
self.assertTrue(aptsources.sourceslist.is_mirror("http://archive.ubuntu.com",
"http://de.archive.ubuntu.com"))
self.assertFalse(aptsources.sourceslist.is_mirror("http://archive.ubuntu.com",
"http://ftp.debian.org"))
def testSourcesListReading(self):
apt_pkg.config.set("Dir::Etc::sourcelist", self.sources_list)
sources = aptsources.sourceslist.SourcesList()
self.assertEqual(len(sources.list), 6)
# test load
sources.list = []
sources.load(self.sources_list)
self.assertEqual(len(sources.list), 6)
def testSourcesListAdding(self):
apt_pkg.config.set("Dir::Etc::sourcelist", self.sources_list)
sources = aptsources.sourceslist.SourcesList()
# test to add something that is already there (main)
before = copy.deepcopy(sources)
sources.add("deb","http://de.archive.ubuntu.com/ubuntu/",
"edgy",
["main"])
self.assertTrue(sources.list == before.list)
# test to add something that is already there (restricted)
before = copy.deepcopy(sources)
sources.add("deb","http://de.archive.ubuntu.com/ubuntu/",
"edgy",
["restricted"])
self.assertTrue(sources.list == before.list)
# test to add something new: multiverse
sources.add("deb","http://de.archive.ubuntu.com/ubuntu/",
"edgy",
["multiverse"])
found = False
for entry in sources:
if (entry.type == "deb" and
entry.uri == "http://de.archive.ubuntu.com/ubuntu/" and
entry.dist == "edgy" and
"multiverse" in entry.comps):
found = True
self.assertTrue(found)
# test to add something new: multiverse *and*
# something that is already there
before = copy.deepcopy(sources)
sources.add("deb","http://de.archive.ubuntu.com/ubuntu/",
"edgy",
["universe", "something"])
found_universe = 0
found_something = 0
for entry in sources:
if (entry.type == "deb" and
entry.uri == "http://de.archive.ubuntu.com/ubuntu/" and
entry.dist == "edgy"):
for c in entry.comps:
if c == "universe":
found_universe += 1
if c == "something":
found_something += 1
#print("\n".join([s.str() for s in sources]))
self.assertEqual(found_something, 1)
self.assertEqual(found_universe, 1)
def testDistribution(self):
# Pretend to be amd64, so we don't get tripped up by ubuntu-ports architectures
apt_pkg.config.set("APT::Architecture", "amd64")
apt_pkg.config.set("Dir::Etc::sourcelist",
self.sources_list+".testDistribution")
sources = aptsources.sourceslist.SourcesList()
distro = aptsources.distro.get_distro(codename="edgy", id="Ubuntu", description="Ubuntu Edgy", release="edgy")
distro.get_sources(sources)
# test if all suits of the current distro were detected correctly
dist_templates = set()
for s in sources:
if s.template:
dist_templates.add(s.template.name)
#print(dist_templates)
for d in ["edgy","edgy-security","edgy-updates","hoary"]:
self.assertTrue(d in dist_templates)
# test enable
comp = "restricted"
distro.enable_component(comp)
found = {}
for entry in sources:
if (entry.type == "deb" and
entry.uri == "http://de.archive.ubuntu.com/ubuntu/" and
"edgy" in entry.dist):
for c in entry.comps:
if c == comp:
if entry.dist not in found:
found[entry.dist] = 0
found[entry.dist] += 1
#print("".join([s.str() for s in sources]))
for key in found:
self.assertEqual(found[key], 1)
# add a not-already available component
comp = "multiverse"
distro.enable_component(comp)
found = {}
for entry in sources:
if (entry.type == "deb" and
entry.template and
entry.template.name == "edgy"):
for c in entry.comps:
if c == comp:
if entry.dist not in found:
found[entry.dist] = 0
found[entry.dist] += 1
#print("".join([s.str() for s in sources]))
for key in found:
self.assertEqual(found[key], 1)
if __name__ == "__main__":
unittest.main()
|