~ubuntu-branches/debian/wheezy/quodlibet/wheezy

« back to all changes in this revision

Viewing changes to tests/test_plugins_songsmenu.py

  • Committer: Bazaar Package Importer
  • Author(s): Luca Falavigna
  • Date: 2009-01-30 23:55:34 UTC
  • mto: (18.1.1 squeeze) (2.1.9 sid)
  • mto: This revision was merged to the branch mainline in revision 23.
  • Revision ID: james.westby@ubuntu.com-20090130235534-45857nfsgobw4apc
Tags: upstream-2.0
ImportĀ upstreamĀ versionĀ 2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
from tests import TestCase, add
 
2
 
 
3
import os
 
4
 
 
5
from tempfile import mkstemp, mkdtemp
 
6
 
 
7
from quodlibet.formats._audio import AudioFile
 
8
from quodlibet.plugins.songsmenu import SongsMenuPlugins
 
9
 
 
10
class TSongsMenuPlugins(TestCase):
 
11
 
 
12
    def setUp(self):
 
13
        self.tempdir = mkdtemp()
 
14
        self.pm = SongsMenuPlugins(folders=[self.tempdir])
 
15
        self.pm.rescan()
 
16
        self.assertEquals(self.pm.list(), [])
 
17
 
 
18
    def tearDown(self):
 
19
        for f in os.listdir(self.tempdir):
 
20
            os.remove(os.path.join(self.tempdir,f))
 
21
        os.rmdir(self.tempdir)
 
22
 
 
23
    def create_plugin(self, name='', desc='', icon='', funcs=None, mod=False):
 
24
        fd, fn = mkstemp(suffix='.py', text=True, dir=self.tempdir)
 
25
        file = os.fdopen(fd, 'w')
 
26
 
 
27
        if mod:
 
28
            indent = ''
 
29
        else:
 
30
            file.write("from quodlibet.plugins.songsmenu import SongsMenuPlugin\n")
 
31
            file.write("class %s(SongsMenuPlugin):\n" % name)
 
32
            indent = '    '
 
33
            file.write("%spass\n" % indent)
 
34
 
 
35
        if name: file.write("%sPLUGIN_NAME = %r\n" % (indent, name))
 
36
        if desc: file.write("%sPLUGIN_DESC = %r\n" % (indent, desc))
 
37
        if icon: file.write("%sPLUGIN_ICON = %r\n" % (indent, icon))
 
38
        for f in (funcs or []):
 
39
            if f in ["__init__"]:
 
40
                file.write("%sdef %s(*args): pass\n" % (indent, f))
 
41
            else:
 
42
                file.write("%sdef %s(*args): return args\n" % (indent, f))
 
43
        file.flush()
 
44
        file.close()
 
45
 
 
46
    def test_empty_has_no_plugins(self):
 
47
        dirname = self.create_plugin()
 
48
        self.pm.rescan()
 
49
        self.assertEquals(self.pm.list(), [])
 
50
 
 
51
    def test_name_and_desc_plus_func_is_one(self):
 
52
        self.create_plugin(name='Name', desc='Desc', funcs=['plugin_song'])
 
53
        self.pm.rescan()
 
54
        self.assertEquals(len(self.pm.list()), 1)
 
55
 
 
56
    def test_additional_functions_still_only_one(self):
 
57
        self.create_plugin(name='Name', desc='Desc',
 
58
                funcs=['plugin_song', 'plugin_songs'])
 
59
        self.pm.rescan()
 
60
        self.assertEquals(len(self.pm.list()), 1)
 
61
 
 
62
    def test_two_plugins_are_two(self):
 
63
        self.create_plugin(name='Name', desc='Desc', funcs=['plugin_song'])
 
64
        self.create_plugin(name='Name2', desc='Desc2',
 
65
                funcs=['plugin_albums'])
 
66
        self.pm.rescan()
 
67
        self.assertEquals(len(self.pm.list()), 2)
 
68
 
 
69
    def test_disables_plugin(self):
 
70
        self.create_plugin(name='Name', desc='Desc', funcs=['plugin_song'])
 
71
        self.pm.rescan()
 
72
        self.failIf(self.pm.enabled(self.pm.list()[0]))
 
73
 
 
74
    def test_enabledisable_plugin(self):
 
75
        self.create_plugin(name='Name', desc='Desc', funcs=['plugin_song'])
 
76
        self.pm.rescan()
 
77
        plug = self.pm.list()[0]
 
78
        self.pm.enable(plug, True)
 
79
        self.failUnless(self.pm.enabled(plug))
 
80
        self.pm.enable(plug, False)
 
81
        self.failIf(self.pm.enabled(plug))
 
82
 
 
83
    def test_ignores_broken_plugin(self):
 
84
        self.create_plugin(name="Name", desc="Desc",
 
85
                           funcs=["__init__", "plugin_song"])
 
86
        self.pm.rescan()
 
87
        plug = self.pm.list()[0]
 
88
        self.pm.enable(plug, True)
 
89
        menu = self.pm.Menu(None, None, [AudioFile()])
 
90
        self.failIf(menu.get_children())
 
91
 
 
92
    def test_Menu(self):
 
93
        self.create_plugin(name='Name', desc='Desc', funcs=['plugin_song'])
 
94
        menu = self.pm.Menu(None, None, [AudioFile()])
 
95
 
 
96
add(TSongsMenuPlugins)