~fluendo-elisa/moovida/elisa-pancake

« back to all changes in this revision

Viewing changes to elisa-core/elisa/core/tests/test_plugin.py

  • Committer: pancake
  • Date: 2009-03-27 12:16:38 UTC
  • mfrom: (1115.2.37 elisa)
  • Revision ID: pancake@flubox-20090327121638-2da0c1a0zu3byufd
* Merge against the head

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# -*- coding: utf-8 -*-
 
2
# Elisa - Home multimedia server
 
3
# Copyright (C) 2009 Fluendo Embedded S.L. (www.fluendo.com).
 
4
# All rights reserved.
 
5
#
 
6
# This file is available under one of two license agreements.
 
7
#
 
8
# This file is licensed under the GPL version 3.
 
9
# See "LICENSE.GPL" in the root of this distribution including a special
 
10
# exception to use Elisa with Fluendo's plugins.
 
11
#
 
12
# The GPL part of Elisa is also available under a commercial licensing
 
13
# agreement from Fluendo.
 
14
# See "LICENSE.Elisa" in the root directory of this distribution package
 
15
# for details on that license.
 
16
#
 
17
# Author: Olivier Tilloy <olivier@fluendo.com>
 
18
 
 
19
from twisted.trial.unittest import TestCase
 
20
 
 
21
from elisa.core.plugin import Plugin
 
22
 
 
23
from distutils.version import LooseVersion
 
24
import pkg_resources
 
25
 
 
26
 
 
27
class TestPlugin(TestCase):
 
28
 
 
29
    def test_runs_on_current_platform(self):
 
30
        # Monkey patch
 
31
        self._orig_get_platform = pkg_resources.get_platform
 
32
        pkg_resources.get_platform = lambda: 'linux-i686'
 
33
 
 
34
        plugin = Plugin()
 
35
        self.failUnless(plugin.runs_on_current_platform())
 
36
        plugin.platforms = ['linux']
 
37
        self.failUnless(plugin.runs_on_current_platform())
 
38
        plugin.platforms = ['win32']
 
39
        self.failIf(plugin.runs_on_current_platform())
 
40
        plugin.platforms = ['win32', 'linux']
 
41
        self.failUnless(plugin.runs_on_current_platform())
 
42
 
 
43
        # Unpatch
 
44
        pkg_resources.get_platform = self._orig_get_platform
 
45
 
 
46
    def test_from_distribution(self):
 
47
        distribution = \
 
48
            pkg_resources.Distribution(project_name='elisa-plugin-test',
 
49
                                       version='0.1.4')
 
50
        distribution.author = 'Elisa Developers'
 
51
        distribution.license = 'GPLv3'
 
52
        distribution.summary = 'A test plugin'
 
53
        distribution.description = 'A test plugin that does nothing.'
 
54
        plugin = Plugin.from_distribution(distribution)
 
55
        self.failUnlessEqual(plugin.name, 'elisa-plugin-test')
 
56
        self.failUnlessEqual(plugin.version, LooseVersion('0.1.4'))
 
57
        self.failUnlessEqual(plugin.author_name, 'Elisa Developers')
 
58
        self.failUnlessEqual(plugin.platforms, [])
 
59
        self.failUnlessEqual(plugin.license, 'GPLv3')
 
60
        self.failUnlessEqual(plugin.title, 'A test plugin')
 
61
        self.failUnlessEqual(plugin.description,
 
62
                             'A test plugin that does nothing.')
 
63
 
 
64
        # Now with a platform specified
 
65
        distribution.platform = 'linux'
 
66
        plugin = Plugin.from_distribution(distribution)
 
67
        self.failUnlessEqual(plugin.platforms, ['linux'])
 
68
 
 
69
    def test_from_dict(self):
 
70
        dictionary = {}
 
71
        dictionary['name'] = 'elisa-plugin-test'
 
72
        dictionary['tags'] = ['test', 'plugin', 'elisa']
 
73
        dictionary['uri'] = 'http://elisa-plugins.com/elisa-plugin-test'
 
74
        dictionary['summary'] = 'Test plugin'
 
75
        dictionary['description'] = 'A test plugin that does nothing.'
 
76
        dictionary['version'] = '0.1.4'
 
77
        dictionary['platforms'] = 'linux ,  win32'
 
78
        dictionary['ignored'] = 'skipped'
 
79
        plugin = Plugin.from_dict(dictionary)
 
80
        self.failUnlessEqual(plugin.name, 'elisa-plugin-test')
 
81
        self.failUnlessEqual(plugin.tags, ['test', 'plugin', 'elisa'])
 
82
        self.failUnlessEqual(plugin.uri,
 
83
                             'http://elisa-plugins.com/elisa-plugin-test')
 
84
        self.failUnlessEqual(plugin.title, 'Test plugin')
 
85
        self.failUnlessEqual(plugin.description,
 
86
                             'A test plugin that does nothing.')
 
87
        self.failUnlessEqual(plugin.version, LooseVersion('0.1.4'))
 
88
        self.failUnlessEqual(plugin.platforms, ['linux', 'win32'])
 
89
        self.failIf(hasattr(plugin, 'ignored'))