A new metadata version 2.1 has optional Description that is causing an TypeError when looking up the key in plugin_info since clients are assuming values are always strings but the default is None. Fixed TypeError by ensuring that the info dict has a default empty string set for all keys. Separated the parsing of the pkg_info into static method to make it easier to test. Changed the missing plugin info to only set the Name and Version as 'not available' since all other fields are optional. Ref: https://dev.deluge-torrent.org/ticket/3476 Ref: https://packaging.python.org/en/latest/specifications/core-metadata/#description
30 lines
1.1 KiB
Python
30 lines
1.1 KiB
Python
#
|
|
# Copyright (C) 2015 Calum Lind <calumlind@gmail.com>
|
|
#
|
|
# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
|
|
# the additional special exception to link portions of this program with the OpenSSL library.
|
|
# See LICENSE for more details.
|
|
#
|
|
|
|
from deluge.pluginmanagerbase import PluginManagerBase
|
|
|
|
from . import common
|
|
from .basetest import BaseTestCase
|
|
|
|
|
|
class PluginManagerBaseTestCase(BaseTestCase):
|
|
def set_up(self):
|
|
common.set_tmp_config_dir()
|
|
|
|
def test_get_plugin_info(self):
|
|
pm = PluginManagerBase('core.conf', 'deluge.plugin.core')
|
|
for p in pm.get_available_plugins():
|
|
for key, value in pm.get_plugin_info(p).items():
|
|
self.assertTrue(isinstance(f'{key}: {value}', str))
|
|
|
|
def test_get_plugin_info_invalid_name(self):
|
|
pm = PluginManagerBase('core.conf', 'deluge.plugin.core')
|
|
for key, value in pm.get_plugin_info('random').items():
|
|
result = 'not available' if key in ('Name', 'Version') else ''
|
|
self.assertEqual(value, result)
|