usse/funda-scraper/venv/lib/python3.10/site-packages/pkginfo/tests/test_sdist.py

157 lines
5.4 KiB
Python

import shutil
import tempfile
import unittest
class SDistTests(unittest.TestCase):
def _getTargetClass(self):
from pkginfo.sdist import SDist
return SDist
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 _checkSample(self, sdist, filename):
self.assertEqual(sdist.filename, filename)
self.assertEqual(sdist.name, 'mypackage')
self.assertEqual(sdist.version, '0.1')
self.assertEqual(sdist.keywords, None)
self.assertEqual(list(sdist.supported_platforms), [])
def _checkClassifiers(self, sdist):
self.assertEqual(list(sdist.classifiers),
['Development Status :: 4 - Beta',
'Environment :: Console (Text Based)',
])
def test_ctor_w_invalid_filename(self):
import os
d, _ = os.path.split(__file__)
filename = '%s/../../docs/examples/nonesuch-0.1.tar.gz' % d
self.assertRaises(ValueError, self._makeOne, filename)
def test_ctor_wo_PKG_INFO(self):
import os
d, _ = os.path.split(__file__)
filename = '%s/../../docs/examples/nopkginfo-0.1.zip' % d
self.assertRaises(ValueError, self._makeOne, filename)
def test_ctor_w_tar(self):
import os
d, _ = os.path.split(__file__)
filename = '%s/../../docs/examples/mypackage-0.1.tar' % d
sdist = self._makeOne(filename)
self.assertEqual(sdist.metadata_version, '1.0')
self._checkSample(sdist, filename)
def test_ctor_w_gztar(self):
import os
d, _ = os.path.split(__file__)
filename = '%s/../../docs/examples/mypackage-0.1.tar.gz' % d
sdist = self._makeOne(filename)
self.assertEqual(sdist.metadata_version, '1.0')
self._checkSample(sdist, filename)
def test_ctor_w_gztar_and_metadata_version(self):
import os
d, _ = os.path.split(__file__)
filename = '%s/../../docs/examples/mypackage-0.1.tar.gz' % d
sdist = self._makeOne(filename, metadata_version='1.1')
self._checkSample(sdist, filename)
self.assertEqual(sdist.metadata_version, '1.1')
self._checkClassifiers(sdist)
def test_ctor_w_bztar(self):
import os
d, _ = os.path.split(__file__)
filename = '%s/../../docs/examples/mypackage-0.1.tar.bz2' % d
sdist = self._makeOne(filename)
self.assertEqual(sdist.metadata_version, '1.0')
self._checkSample(sdist, filename)
def test_ctor_w_bztar_and_metadata_version(self):
import os
d, _ = os.path.split(__file__)
filename = '%s/../../docs/examples/mypackage-0.1.tar.bz2' % d
sdist = self._makeOne(filename, metadata_version='1.1')
self.assertEqual(sdist.metadata_version, '1.1')
self._checkSample(sdist, filename)
self._checkClassifiers(sdist)
def test_ctor_w_zip(self):
import os
d, _ = os.path.split(__file__)
filename = '%s/../../docs/examples/mypackage-0.1.zip' % d
sdist = self._makeOne(filename)
self.assertEqual(sdist.metadata_version, '1.0')
self._checkSample(sdist, filename)
def test_ctor_w_zip_and_metadata_version(self):
import os
d, _ = os.path.split(__file__)
filename = '%s/../../docs/examples/mypackage-0.1.zip' % d
sdist = self._makeOne(filename, metadata_version='1.1')
self.assertEqual(sdist.metadata_version, '1.1')
self._checkSample(sdist, filename)
self._checkClassifiers(sdist)
def test_ctor_w_bogus(self):
import os
d, _ = os.path.split(__file__)
filename = '%s/../../docs/examples/mypackage-0.1.bogus' % d
with self.assertRaises(ValueError):
self._makeOne(filename, metadata_version='1.1')
class UnpackedMixin(object):
def setUp(self):
super(UnpackedMixin, self).setUp()
self.__tmpdir = tempfile.mkdtemp()
def tearDown(self):
shutil.rmtree(self.__tmpdir)
super(UnpackedMixin, self).tearDown()
def _getTargetClass(self):
from pkginfo.sdist import UnpackedSDist
return UnpackedSDist
def _getTopDirectory(self):
import os
topnames = os.listdir(self.__tmpdir)
assert len(topnames) == 1
return os.path.join(self.__tmpdir, topnames[0])
def _getLoadFilename(self):
return self._getTopDirectory()
def _makeOne(self, filename=None, metadata_version=None):
archive, _, _ = self._getTargetClass()._get_archive(filename)
try:
archive.extractall(self.__tmpdir)
finally:
archive.close()
load_filename = self._getLoadFilename()
if metadata_version is not None:
return self._getTargetClass()(load_filename, metadata_version)
return self._getTargetClass()(load_filename)
def _checkSample(self, sdist, filename):
filename = self._getTopDirectory()
super(UnpackedMixin, self)._checkSample(sdist, filename)
class UnpackedSDistGivenDirectoryTests(UnpackedMixin, SDistTests):
pass
class UnpackedSDistGivenFileSDistTests(UnpackedMixin, SDistTests):
def _getLoadFilename(self):
import os
return os.path.join(self._getTopDirectory(), 'setup.py')