def test_find_package_desktopfile(self): '''find_package_desktopfile().''' # package without any .desktop file nodesktop = 'bash' assert len([f for f in packaging.get_files(nodesktop) if f.endswith('.desktop')]) == 0 # find a package with one and a package with multiple .desktop files onedesktop = None multidesktop = None for d in os.listdir('/usr/share/applications/'): if not d.endswith('.desktop'): continue pkg = packaging.get_file_package( os.path.join('/usr/share/applications/', d)) num = len([f for f in packaging.get_files(pkg) if f.endswith('.desktop')]) if not onedesktop and num == 1: onedesktop = pkg elif not multidesktop and num > 1: multidesktop = pkg if onedesktop and multidesktop: break if nodesktop: self.assertEqual(find_package_desktopfile(nodesktop), None, 'no-desktop package %s' % nodesktop) if multidesktop: self.assertEqual(find_package_desktopfile(multidesktop), None, 'multi-desktop package %s' % multidesktop) if onedesktop: d = find_package_desktopfile(onedesktop) self.assertNotEqual(d, None, 'one-desktop package %s' % onedesktop) self.assertTrue(os.path.exists(d)) self.assertTrue(d.endswith('.desktop'))
def find_package_desktopfile(package): '''Return a package's .desktop file. If given package is installed and has a single .desktop file, return the path to it, otherwise return None. ''' if package is None: return None desktopfile = None for line in packaging.get_files(package): if line.endswith('.desktop'): # restrict to autostart and applications, see LP#1147528 if not line.startswith( '/etc/xdg/autostart') and not line.startswith( '/usr/share/applications/'): continue if desktopfile: return None # more than one else: # only consider visible ones with open(line, 'rb') as f: if b'NoDisplay=true' not in f.read(): desktopfile = line return desktopfile
def find_package_desktopfile(package): '''Return a package's .desktop file. If given package is installed and has a single .desktop file, return the path to it, otherwise return None. ''' if package is None: return None desktopfile = None for line in packaging.get_files(package): if line.endswith('.desktop'): # restrict to autostart and applications, see LP#1147528 if not line.startswith('/etc/xdg/autostart') and not line.startswith('/usr/share/applications/'): continue if desktopfile: return None # more than one else: # only consider visible ones with open(line, 'rb') as f: if b'NoDisplay=true' not in f.read(): desktopfile = line return desktopfile
def files_in_package(package, globpat=None): '''Retrieve a list of files owned by package, optionally matching globpat''' files = packaging.get_files(package) if globpat: result = [f for f in files if glob.fnmatch.fnmatch(f, globpat)] else: result = files return result
def files_in_package(package, globpat=None): """Retrieve a list of files owned by package, optionally matching globpat""" files = packaging.get_files(package) if globpat: result = [f for f in files if glob.fnmatch.fnmatch(f, globpat)] else: result = files return result
def find_package_desktopfile(package): '''Return a package's .desktop file. If given package is installed and has a single .desktop file, return the path to it, otherwise return None. ''' if package is None: return None desktopfile = None for line in packaging.get_files(package): if line.endswith('.desktop'): if desktopfile: return None # more than one else: desktopfile = line return desktopfile
def test_get_files(self): '''get_files().''' self.assertRaises(ValueError, impl.get_files, 'nonexisting') self.assertTrue('/bin/bash' in impl.get_files('bash'))