deps: Look up deps in pkg_resources
This commit is contained in:
parent
5de80228ea
commit
609b6ace85
@ -1,5 +1,6 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import functools
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
@ -8,6 +9,7 @@ import pygst
|
||||
pygst.require('0.10')
|
||||
import gst
|
||||
|
||||
import pkg_resources
|
||||
import pykka
|
||||
|
||||
from . import formatting
|
||||
@ -37,8 +39,17 @@ def format_dependency_list(adapters=None):
|
||||
serial_info,
|
||||
cherrypy_info,
|
||||
ws4py_info,
|
||||
functools.partial(pkg_info, 'Mopidy', True),
|
||||
]
|
||||
|
||||
dist_names = set([
|
||||
ep.dist.project_name for ep in
|
||||
pkg_resources.iter_entry_points('mopidy.ext')
|
||||
if ep.dist.project_name != 'Mopidy'])
|
||||
for dist_name in dist_names:
|
||||
adapters.append(
|
||||
functools.partial(pkg_info, dist_name))
|
||||
|
||||
return '\n'.join([_format_dependency(a()) for a in adapters])
|
||||
|
||||
|
||||
@ -83,6 +94,21 @@ def python_info():
|
||||
}
|
||||
|
||||
|
||||
def pkg_info(project_name=None, include_extras=False):
|
||||
if project_name is None:
|
||||
project_name = 'Mopidy'
|
||||
distribution = pkg_resources.get_distribution(project_name)
|
||||
extras = include_extras and distribution.extras or []
|
||||
dependencies = [
|
||||
pkg_info(d) for d in distribution.requires(extras)]
|
||||
return {
|
||||
'name': distribution.project_name,
|
||||
'version': distribution.version,
|
||||
'path': distribution.location,
|
||||
'dependencies': dependencies,
|
||||
}
|
||||
|
||||
|
||||
def gstreamer_info():
|
||||
other = []
|
||||
other.append('Python wrapper: gst-python %s' % (
|
||||
|
||||
@ -5,6 +5,8 @@ import platform
|
||||
import pygst
|
||||
pygst.require('0.10')
|
||||
import gst
|
||||
|
||||
import mock
|
||||
import pykka
|
||||
|
||||
try:
|
||||
@ -156,3 +158,40 @@ class DepsTest(unittest.TestCase):
|
||||
self.assertEquals('ws4py', result['name'])
|
||||
self.assertEquals(ws4py.__version__, result['version'])
|
||||
self.assertIn('ws4py', result['path'])
|
||||
|
||||
@mock.patch('pkg_resources.get_distribution')
|
||||
def test_pkg_info(self, get_distribution_mock):
|
||||
dist_mopidy = mock.Mock()
|
||||
dist_mopidy.project_name = 'Mopidy'
|
||||
dist_mopidy.version = '0.13'
|
||||
dist_mopidy.location = '/tmp/example/mopidy'
|
||||
dist_mopidy.requires.return_value = ['Pykka']
|
||||
|
||||
dist_pykka = mock.Mock()
|
||||
dist_pykka.project_name = 'Pykka'
|
||||
dist_pykka.version = '1.1'
|
||||
dist_pykka.location = '/tmp/example/pykka'
|
||||
dist_pykka.requires.return_value = ['setuptools']
|
||||
|
||||
dist_setuptools = mock.Mock()
|
||||
dist_setuptools.project_name = 'setuptools'
|
||||
dist_setuptools.version = '0.6'
|
||||
dist_setuptools.location = '/tmp/example/setuptools'
|
||||
dist_setuptools.requires.return_value = []
|
||||
|
||||
get_distribution_mock.side_effect = [
|
||||
dist_mopidy, dist_pykka, dist_setuptools]
|
||||
|
||||
result = deps.pkg_info()
|
||||
|
||||
self.assertEquals('Mopidy', result['name'])
|
||||
self.assertEquals('0.13', result['version'])
|
||||
self.assertIn('mopidy', result['path'])
|
||||
|
||||
dep_info_pykka = result['dependencies'][0]
|
||||
self.assertEquals('Pykka', dep_info_pykka['name'])
|
||||
self.assertEquals('1.1', dep_info_pykka['version'])
|
||||
|
||||
dep_info_setuptools = dep_info_pykka['dependencies'][0]
|
||||
self.assertEquals('setuptools', dep_info_setuptools['name'])
|
||||
self.assertEquals('0.6', dep_info_setuptools['version'])
|
||||
|
||||
Loading…
Reference in New Issue
Block a user