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
|
#!/usr/bin/env python
import UpdateManager.Common.aptsources as aptsources
import unittest
import apt_pkg
import os
import copy
class TestAptSources(unittest.TestCase):
def __init__(self, methodName):
unittest.TestCase.__init__(self, methodName)
apt_pkg.init()
apt_pkg.Config.Set("Dir::Etc", os.getcwd())
apt_pkg.Config.Set("Dir::Etc::sourceparts", ".")
def testIsMirror(self):
self.assertTrue(aptsources.is_mirror("http://archive.ubuntu.com",
"http://de.archive.ubuntu.com"))
self.assertFalse(aptsources.is_mirror("http://archive.ubuntu.com",
"http://ftp.debian.org"))
def testSourcesListReading(self):
apt_pkg.Config.Set("Dir::Etc::sourcelist", "data/sources.list")
sources = aptsources.SourcesList()
self.assertEqual(len(sources.list), 6)
# test load
sources.list = []
sources.load("data/sources.list")
self.assertEqual(len(sources.list), 6)
def testSourcesListAdding(self):
apt_pkg.Config.Set("Dir::Etc::sourcelist", "data/sources.list")
sources = aptsources.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):
apt_pkg.Config.Set("Dir::Etc::sourcelist", "data/sources.list.testDistribution")
sources = aptsources.SourcesList()
distro = aptsources.Distribution()
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", "breezy", "breezy-backports"]:
self.assertTrue(d in dist_templates)
# test enable
comp = "restricted"
distro.enable_component(sources, 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 not found.has_key(entry.dist):
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(sources, 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 not found.has_key(entry.dist):
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()
|