Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/tests/devbot/test_config.py
blob: f4d32608ea57c916f037adca0e237737cbf17435 (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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import os
import tempfile
import subprocess

from devbot import git
from devbot import config
from devbot import distro

import common

tests_dir = os.path.abspath(os.path.dirname(__file__))
base_dir = os.path.dirname(os.path.dirname(tests_dir))
config_dir = os.path.join(base_dir, "config")
data_dir = os.path.join(tests_dir, "data")


class TestConfig(common.DevbotTestCase):
    def setUp(self):
        self.setup_config({"config_dir": config_dir})

    def _set_distro(self, name, version):
        self._orig = distro._supported_distros
        for info_class in distro._supported_distros:
            if info_class.__module__.endswith("fedora"):
                info_class._FEDORA_RELEASE_PATH = \
                    os.path.join(data_dir, "fedora-release-%s" % version)

            if info_class.__module__.endswith("debian"):
                info_class._DEBIAN_VERSION_PATH = \
                    os.path.join(data_dir, "debian_version-wheezy")

            if info_class.__module__.endswith("ubuntu"):
                info_class._OS_RELEASE_PATH = \
                    os.path.join(data_dir, "os-release-ubuntu-12.10")

            def _get_architecture(self):
                return "x86_64"

            info_class._get_architecture = _get_architecture

        for info_class in distro._supported_distros:
            info = info_class()
            if info.name == name and info.version == version:
                distro._supported_distros = [info_class]
                distro._distro_info = None
                break

        self._check_distro_info()

    def _unset_distro(self):
        distro._supported_distros = self._orig

    def _find_module(self, modules, name):
        for module in modules:
            if module.name == name:
                return module

        return None

    def _assert_module(self, modules, name):
        self.assertIsNotNone(self._find_module(modules, name))

    def _assert_no_module(self, modules, name):
        self.assertIsNone(self._find_module(modules, name))

    def _check_distro_info(self):
        distro_info = distro.get_distro_info()
        self.assertTrue(distro_info.supported)
        self.assertTrue(distro_info.valid)

    def test_fedora_17_modules(self):
        self._set_distro("fedora", "17")

        modules = config.load_modules()
        self._assert_module(modules, "gnome-keyring")
        self._assert_module(modules, "glib")
        self._assert_module(modules, "gtk+")
        self._assert_module(modules, "gstreamer")
        self._assert_module(modules, "sugar")

        self._unset_distro()

    def test_fedora_18_modules(self):
        self._set_distro("fedora", "18")

        self.assertEquals("fedora", distro.get_distro_info().name)
        self.assertEquals("18", distro.get_distro_info().version)
        modules = config.load_modules()
        self._assert_no_module(modules, "glib")
        self._assert_no_module(modules, "gtk+")
        self._assert_no_module(modules, "gnome-keyring")
        self._assert_no_module(modules, "gstreamer")
        self._assert_module(modules, "sugar")

        self._unset_distro()

    def test_ubuntu_12_10_modules(self):
        self._set_distro("ubuntu", "12.10")

        modules = config.load_modules()
        self._assert_module(modules, "glib")
        self._assert_no_module(modules, "gtk+")
        self._assert_no_module(modules, "gnome-keyring")
        self._assert_no_module(modules, "gstreamer")
        self._assert_module(modules, "sugar")

        self._unset_distro()

    def test_debian_wheezy_modules(self):
        self._set_distro("debian", "7.0")

        modules = config.load_modules()
        self._assert_module(modules, "gnome-keyring")
        self._assert_module(modules, "glib")
        self._assert_module(modules, "gtk+")
        self._assert_module(modules, "gstreamer")
        self._assert_module(modules, "sugar")

        self._unset_distro()