summaryrefslogtreecommitdiff
path: root/tests/test_aptsources.py
blob: d5b5ff9ffac2a10e36a4bcd64a6926cda1614277 (plain)
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
#!/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)
        comp = "restricted"
        distro.enable_component(sources, comp)
        found = 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 == comp:
                        found += 1
        print "".join([s.str() for s in sources])
        self.assertEqual(found, 1)
        

if __name__ == "__main__":
    unittest.main()