summaryrefslogtreecommitdiff
path: root/test/test-menu.py
blob: d31fe1ac63ca06be1fa9b71fddd5f4ded8420476 (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
#!/usr/bin/python

import os.path
import shutil
import sys
import tempfile
import unittest

import xdg.Menu
import xdg.DesktopEntry
import resources

def show_menu(menu, depth = 0):
#    print depth*"-" + "\x1b[01m" + menu.getName().encode("ascii", 'ignore') + "\x1b[0m"
#    depth += 1
    for entry in menu.getEntries():
        if isinstance(entry, xdg.Menu.Menu):
            show_menu(entry, depth)
        elif isinstance(entry, xdg.Menu.MenuEntry):
#            print depth*"-" + entry.DesktopEntry.getName().encode("ascii", 'ignore')
            print(menu.getPath() + "/\t" + entry.DesktopFileID + "\t" + entry.DesktopEntry.getFileName())
#        elif isinstance(entry, xdg.Menu.Separator):
#            print depth*"-" + "|||"
#        elif isinstance(entry, xdg.Menu.Header):
#            print depth*"-" + "\x1b[01m" + entry.Name + "\x1b[0m"
#    depth -= 1

class MenuTest(unittest.TestCase):
    def setUp(self):
        self.tmpdir = tempfile.mkdtemp()
        self.test_file = os.path.join(self.tmpdir, "applications.menu")
        with open(self.test_file, "w") as f:
            f.write(resources.applications_menu)
    
    def tearDown(self):
        shutil.rmtree(self.tmpdir)
    
    def test_parse_menu(self):
        menu = xdg.Menu.parse(self.test_file)
        show_menu(menu)
        
        # Check these don't throw an error
        menu.getName()
        menu.getGenericName()
        menu.getComment()
        menu.getIcon()