diff --git a/qubesappmenus/__init__.py b/qubesappmenus/__init__.py index a8bf14e..2e89ae3 100644 --- a/qubesappmenus/__init__.py +++ b/qubesappmenus/__init__.py @@ -30,7 +30,7 @@ import logging import itertools -import importlib.resources +import pkg_resources import xdg.BaseDirectory import qubesadmin @@ -345,11 +345,11 @@ def _appmenus_create_onedir(self, vm, force=False, refresh_cache=True, anything_changed = False directory_changed = False directory_file = self._directory_path(vm, dispvm=dispvm) - data = importlib.resources.files(__name__).joinpath( - self.directory_template_name(vm, dispvm)).read_text() if self.write_desktop_file( vm, - data, + pkg_resources.resource_string( + __name__, + self.directory_template_name(vm, dispvm)).decode(), directory_file, dispvm): anything_changed = True @@ -384,11 +384,12 @@ def _appmenus_create_onedir(self, vm, force=False, refresh_cache=True, if not dispvm: vm_settings_fname = os.path.join( appmenus_dir, self.settings_name(vm)) - data = importlib.resources.files(__name__).joinpath( - 'qubes-vm-settings.desktop.template').read_text() if self.write_desktop_file( vm, - data, + pkg_resources.resource_string( + __name__, + 'qubes-vm-settings.desktop.template' + ).decode(), vm_settings_fname): changed_appmenus.append(vm_settings_fname) target_appmenus.append(os.path.basename(vm_settings_fname)) @@ -597,9 +598,9 @@ def appmenus_init(self, vm, src=None): with open( os.path.join(own_templates_dir, 'qubes-start.desktop'), 'wb') as qubes_start_f: - data = importlib.resources.files(__name__).joinpath( - 'qubes-start.desktop.template').read_bytes() - qubes_start_f.write(data) + qubes_start_f.write(pkg_resources.resource_string( + __name__, + 'qubes-start.desktop.template')) source_whitelist_filename = 'vm-' + AppmenusSubdirs.whitelist if src and ('default-menu-items' in src.features or os.path.exists( diff --git a/qubesappmenus/receive.py b/qubesappmenus/receive.py index 98be373..e7ef4ef 100755 --- a/qubesappmenus/receive.py +++ b/qubesappmenus/receive.py @@ -27,7 +27,7 @@ import os import sys import shlex -import importlib.resources +import pkg_resources import qubesimgconverter import qubesadmin.exc @@ -305,10 +305,9 @@ def process_appmenus_templates(appmenusext, vm, appmenus): if not os.path.exists(qubes_start_fname): with open(qubes_start_fname, 'wb') as qubes_start_f: vm.log.info("Creating Start") - template_data = importlib.resources.files( - __name__).joinpath( - 'qubes-start.desktop.template').read_bytes() - qubes_start_f.write(template_data) + qubes_start_f.write(pkg_resources.resource_string( + __name__, + 'qubes-start.desktop.template')) # Do not create reserved Start entry appmenus.pop('qubes-start', None) diff --git a/qubesappmenus/tests.py b/qubesappmenus/tests.py index 0035c26..945b23a 100644 --- a/qubesappmenus/tests.py +++ b/qubesappmenus/tests.py @@ -31,7 +31,7 @@ import unittest.mock import logging -import importlib.resources +import pkg_resources import qubesappmenus import qubesappmenus.receive @@ -247,19 +247,16 @@ def test_005_created_appvm(self): self.ext.appmenus_init(appvm) with open(os.path.join(self.ext.templates_dirs(tpl)[0], 'evince.desktop'), 'wb') as f: - f.write(importlib.resources.files( - anchor=__name__).joinpath( - 'test-data/evince.desktop.template').read_bytes()) + f.write(pkg_resources.resource_string(__name__, + 'test-data/evince.desktop.template')) self.ext.appmenus_create(appvm, refresh_cache=False) self.ext.appicons_create(appvm) evince_path = self._make_desktop_name(appvm, 'evince.desktop') self.assertPathExists(evince_path) with open(evince_path, 'rb') as f: - new_file_bytes = importlib.resources.files( - anchor=__name__).joinpath( - 'test-data/evince.desktop').read_bytes() self.assertEqual( - new_file_bytes.replace(b'%BASEDIR%', + pkg_resources.resource_string(__name__, + 'test-data/evince.desktop').replace(b'%BASEDIR%', qubesappmenus.basedir.encode()), f.read() ) @@ -282,34 +279,27 @@ def test_006_created_appvm_custom(self): self.ext.appmenus_init(appvm) with open(os.path.join(self.ext.templates_dirs(tpl)[0], 'evince.desktop'), 'wb') as f: - evince_data = importlib.resources.files( - anchor=__name__).joinpath( - 'test-data/evince.desktop.template').read_bytes() - f.write(evince_data) + f.write(pkg_resources.resource_string(__name__, + 'test-data/evince.desktop.template')) self.ext.appmenus_create(appvm, refresh_cache=False) self.ext.appicons_create(appvm) with open(os.path.join(self.ext.templates_dirs(tpl)[0], 'xterm.desktop'), 'wb') as f: - xterm_data = importlib.resources.files( - anchor=__name__).joinpath( - 'test-data/xterm.desktop.template').read_bytes() - f.write(xterm_data) + f.write(pkg_resources.resource_string(__name__, + 'test-data/xterm.desktop.template')) with open(os.path.join(self.ext.templates_dirs(tpl)[0], 'evince.desktop'), 'wb') as f: - evince_data = importlib.resources.files( - anchor=__name__).joinpath( - 'test-data/evince.desktop.template').read_bytes() - f.write(evince_data.replace(b'Document Viewer', b'Random Viewer')) + f.write(pkg_resources.resource_string(__name__, + 'test-data/evince.desktop.template'). + replace(b'Document Viewer', b'Random Viewer')) self.ext.appmenus_update(appvm) evince_path = self._make_desktop_name(appvm, 'evince.desktop') self.assertPathExists(evince_path) with open(evince_path, 'rb') as f: - evince_data = importlib.resources.files( - anchor=__name__).joinpath( - 'test-data/evince.desktop').read_bytes() self.assertEqual( - evince_data + pkg_resources.resource_string(__name__, + 'test-data/evince.desktop') .replace(b'%BASEDIR%', qubesappmenus.basedir.encode()) .replace(b'Document Viewer', b'Random Viewer'), f.read() @@ -318,10 +308,9 @@ def test_006_created_appvm_custom(self): xterm_path = self._make_desktop_name(appvm, 'xterm.desktop') self.assertPathExists(xterm_path) with open(xterm_path, 'rb') as f: - xterm_data = importlib.resources.files( - anchor=__name__).joinpath( - 'test-data/xterm.desktop').read_bytes() - self.assertEqual(xterm_data + self.assertEqual( + pkg_resources.resource_string(__name__, + 'test-data/xterm.desktop') .replace(b'%BASEDIR%', qubesappmenus.basedir.encode()), f.read() ) @@ -346,10 +335,8 @@ def test_007_created_dispvm(self): self.ext.appmenus_init(appvm) with open(os.path.join(self.ext.templates_dirs(tpl)[0], 'evince.desktop'), 'wb') as f: - evince_data = importlib.resources.files( - anchor=__name__).joinpath( - 'test-data/evince.desktop.template').read_bytes() - f.write(evince_data) + f.write(pkg_resources.resource_string(__name__, + 'test-data/evince.desktop.template')) self.ext.appmenus_create(appvm, refresh_cache=False) self.ext.appicons_create(appvm) appmenus_dir = self.ext.appmenus_dir(appvm) @@ -399,8 +386,8 @@ class PopenMockup(object): pass self.assertEqual(service, 'qubes.GetAppmenus') p = PopenMockup() - p.stdout = importlib.resources.files( - anchor=__name__).joinpath('test-data/appmenus.input').open(mode='rb') + p.stdout = pkg_resources.resource_stream(__name__, + 'test-data/appmenus.input') p.wait = lambda: None p.returncode = 0 return p @@ -522,10 +509,8 @@ def test_120_create_appvm(self, mock_subprocess): old_path = os.path.join(self.ext.templates_dirs(tpl)[0], 'evince.desktop') with open(old_path, 'wb') as f: - evince_data = importlib.resources.files( - anchor=__name__).joinpath( - 'test-data/evince.desktop.template').read_bytes() - f.write(evince_data) + f.write(pkg_resources.resource_string(__name__, + 'test-data/evince.desktop.template')) appvm = TestVM('test-inst-app', klass='AppVM', template=tpl, @@ -551,12 +536,10 @@ def test_120_create_appvm(self, mock_subprocess): evince_path = self._make_desktop_name(appvm, 'evince.desktop') self.assertPathExists(evince_path) with open(evince_path, 'rb') as f: - evince_data = importlib.resources.files( - anchor=__name__).joinpath( - 'test-data/evince.desktop').read_bytes() self.assertEqual( - evince_data.replace(b'%BASEDIR%', - qubesappmenus.basedir.encode()), + pkg_resources.resource_string(__name__, + 'test-data/evince.desktop').replace(b'%BASEDIR%', + qubesappmenus.basedir.encode()), f.read() ) @@ -600,10 +583,8 @@ def test_121_create_appvm_with_whitelist(self, mock_subprocess): self.ext.appmenus_init(tpl) with open(os.path.join(self.ext.templates_dirs(tpl)[0], 'evince.desktop'), 'wb') as f: - evince_data = importlib.resources.files( - anchor=__name__).joinpath( - 'test-data/evince.desktop.template').read_bytes() - f.write(evince_data) + f.write(pkg_resources.resource_string(__name__, + 'test-data/evince.desktop.template')) with open(os.path.join(self.basedir, tpl.name, 'vm-whitelisted-appmenus.list'), 'wb') as f: @@ -620,12 +601,10 @@ def test_121_create_appvm_with_whitelist(self, mock_subprocess): evince_path = self._make_desktop_name(appvm, 'evince.desktop') self.assertPathExists(evince_path) with open(evince_path, 'rb') as f: - evince_data = importlib.resources.files( - anchor=__name__).joinpath( - 'test-data/evince.desktop').read_bytes() self.assertEqual( - evince_data.replace(b'%BASEDIR%', - qubesappmenus.basedir.encode()), + pkg_resources.resource_string(__name__, + 'test-data/evince.desktop').replace(b'%BASEDIR%', + qubesappmenus.basedir.encode()), f.read() ) @@ -687,11 +666,9 @@ class PopenMockup(object): 'evince.desktop') self.assertPathExists(evince_path) with open(evince_path, 'rb') as f: - evince_data = importlib.resources.files( - anchor=__name__).joinpath( - 'test-data/evince.desktop.template').read_bytes() self.assertEqual( - evince_data, + pkg_resources.resource_string(__name__, + 'test-data/evince.desktop.template'), f.read() ) self.assertCountEqual(self.appvm.log.mock_calls, [