1
# -*- coding: utf-8 -*-
2
# Elisa - Home multimedia server
3
# Copyright (C) 2009 Fluendo Embedded S.L. (www.fluendo.com).
6
# This file is available under one of two license agreements.
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.
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.
17
# Author: Olivier Tilloy <olivier@fluendo.com>
19
from twisted.trial.unittest import TestCase
21
from elisa.core.plugin import Plugin
23
from distutils.version import LooseVersion
27
class TestPlugin(TestCase):
29
def test_runs_on_current_platform(self):
31
self._orig_get_platform = pkg_resources.get_platform
32
pkg_resources.get_platform = lambda: 'linux-i686'
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())
44
pkg_resources.get_platform = self._orig_get_platform
46
def test_from_distribution(self):
48
pkg_resources.Distribution(project_name='elisa-plugin-test',
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.')
64
# Now with a platform specified
65
distribution.platform = 'linux'
66
plugin = Plugin.from_distribution(distribution)
67
self.failUnlessEqual(plugin.platforms, ['linux'])
69
def test_from_dict(self):
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'))