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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
|
import unittest
class InstalledTests(unittest.TestCase):
def _getTargetClass(self):
from pkginfo.installed import Installed
return Installed
def _makeOne(self, filename=None, metadata_version=None):
if metadata_version is not None:
return self._getTargetClass()(filename, metadata_version)
return self._getTargetClass()(filename)
def test_ctor_w_package_no___file__(self):
import sys
import warnings
old_filters = warnings.filters[:]
warnings.filterwarnings('ignore')
try:
installed = self._makeOne(sys)
self.assertEqual(installed.package, sys)
self.assertEqual(installed.package_name, 'sys')
self.assertEqual(installed.metadata_version, None)
finally:
warnings.filters[:] = old_filters
def test_ctor_w_package(self):
import pkginfo
from pkginfo.tests import _checkSample
from pkginfo.tests import _defaultMetadataVersion
EXPECTED = _defaultMetadataVersion()
installed = self._makeOne(pkginfo)
self.assertEqual(installed.package, pkginfo)
self.assertEqual(installed.package_name, 'pkginfo')
self.assertEqual(installed.metadata_version, EXPECTED)
_checkSample(self, installed)
def test_ctor_w_no___package___falls_back_to___name__(self):
import sys
import wsgiref
installed = self._makeOne(wsgiref)
self.assertEqual(installed.package, wsgiref)
self.assertEqual(installed.package_name, 'wsgiref')
if sys.version_info[:2] >= (3, 3):
self.assertEqual(installed.metadata_version, None)
else:
self.assertEqual(installed.metadata_version, '1.0')
def test_ctor_w_package_no_PKG_INFO(self):
import sys
import types
import warnings
old_filters = warnings.filters[:]
warnings.filterwarnings('ignore')
try:
installed = self._makeOne(types)
self.assertEqual(installed.package, types)
self.assertEqual(installed.package_name, 'types')
if sys.version_info[:2] == (3, 3):
self.assertEqual(installed.metadata_version, '1.1')
else:
self.assertEqual(installed.metadata_version, None)
finally:
warnings.filters[:] = old_filters
def test_ctor_w_package_and_metadata_version(self):
import pkginfo
from pkginfo.tests import _checkSample
installed = self._makeOne(pkginfo, metadata_version='1.2')
self.assertEqual(installed.metadata_version, '1.2')
self.assertEqual(installed.package.__name__, 'pkginfo')
_checkSample(self, installed)
def test_ctor_w_name(self):
import pkginfo
from pkginfo.tests import _checkSample
from pkginfo.tests import _defaultMetadataVersion
EXPECTED = _defaultMetadataVersion()
installed = self._makeOne('pkginfo')
self.assertEqual(installed.metadata_version, EXPECTED)
self.assertEqual(installed.package, pkginfo)
self.assertEqual(installed.package_name, 'pkginfo')
_checkSample(self, installed)
def test_ctor_w_name_and_metadata_version(self):
import pkginfo
from pkginfo.tests import _checkSample
installed = self._makeOne('pkginfo', metadata_version='1.2')
self.assertEqual(installed.metadata_version, '1.2')
self.assertEqual(installed.package, pkginfo)
self.assertEqual(installed.package_name, 'pkginfo')
_checkSample(self, installed)
def test_ctor_w_invalid_name(self):
import warnings
old_filters = warnings.filters[:]
warnings.filterwarnings('ignore')
try:
installed = self._makeOne('nonesuch')
self.assertEqual(installed.package, None)
self.assertEqual(installed.package_name, 'nonesuch')
self.assertEqual(installed.metadata_version, None)
finally:
warnings.filters[:] = old_filters
def test_ctor_w_egg_info_as_file(self):
import pkginfo.tests.funny
installed = self._makeOne('pkginfo.tests.funny')
self.assertEqual(installed.metadata_version, '1.0')
self.assertEqual(installed.package, pkginfo.tests.funny)
self.assertEqual(installed.package_name, 'pkginfo.tests.funny')
def test_namespaced_pkg_installed_via_setuptools(self):
import os
import sys
where, _ = os.path.split(__file__)
wonky = os.path.join(where, 'wonky')
oldpath = sys.path[:]
try:
sys.path.append(wonky)
import namespaced.wonky
installed = self._makeOne('namespaced.wonky')
self.assertEqual(installed.metadata_version, '1.0')
self.assertEqual(installed.package, namespaced.wonky)
self.assertEqual(installed.package_name, 'namespaced.wonky')
finally:
sys.path[:] = oldpath
sys.modules.pop('namespaced.wonky', None)
sys.modules.pop('namespaced', None)
def test_namespaced_pkg_installed_via_pth(self):
# E.g., installed by a Linux distro
import os
import sys
where, _ = os.path.split(__file__)
manky = os.path.join(where, 'manky')
oldpath = sys.path[:]
try:
sys.path.append(manky)
import namespaced.manky
installed = self._makeOne('namespaced.manky')
self.assertEqual(installed.metadata_version, '1.0')
self.assertEqual(installed.package, namespaced.manky)
self.assertEqual(installed.package_name, 'namespaced.manky')
finally:
sys.path[:] = oldpath
sys.modules.pop('namespaced.manky', None)
sys.modules.pop('namespaced', None)
|