17db96d56Sopenharmony_ci"""Tests for distutils.command.bdist_dumb.""" 27db96d56Sopenharmony_ci 37db96d56Sopenharmony_ciimport os 47db96d56Sopenharmony_ciimport sys 57db96d56Sopenharmony_ciimport zipfile 67db96d56Sopenharmony_ciimport unittest 77db96d56Sopenharmony_cifrom test.support import run_unittest 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_cifrom distutils.core import Distribution 107db96d56Sopenharmony_cifrom distutils.command.bdist_dumb import bdist_dumb 117db96d56Sopenharmony_cifrom distutils.tests import support 127db96d56Sopenharmony_ci 137db96d56Sopenharmony_ciSETUP_PY = """\ 147db96d56Sopenharmony_cifrom distutils.core import setup 157db96d56Sopenharmony_ciimport foo 167db96d56Sopenharmony_ci 177db96d56Sopenharmony_cisetup(name='foo', version='0.1', py_modules=['foo'], 187db96d56Sopenharmony_ci url='xxx', author='xxx', author_email='xxx') 197db96d56Sopenharmony_ci 207db96d56Sopenharmony_ci""" 217db96d56Sopenharmony_ci 227db96d56Sopenharmony_citry: 237db96d56Sopenharmony_ci import zlib 247db96d56Sopenharmony_ci ZLIB_SUPPORT = True 257db96d56Sopenharmony_ciexcept ImportError: 267db96d56Sopenharmony_ci ZLIB_SUPPORT = False 277db96d56Sopenharmony_ci 287db96d56Sopenharmony_ci 297db96d56Sopenharmony_ciclass BuildDumbTestCase(support.TempdirManager, 307db96d56Sopenharmony_ci support.LoggingSilencer, 317db96d56Sopenharmony_ci support.EnvironGuard, 327db96d56Sopenharmony_ci unittest.TestCase): 337db96d56Sopenharmony_ci 347db96d56Sopenharmony_ci def setUp(self): 357db96d56Sopenharmony_ci super(BuildDumbTestCase, self).setUp() 367db96d56Sopenharmony_ci self.old_location = os.getcwd() 377db96d56Sopenharmony_ci self.old_sys_argv = sys.argv, sys.argv[:] 387db96d56Sopenharmony_ci 397db96d56Sopenharmony_ci def tearDown(self): 407db96d56Sopenharmony_ci os.chdir(self.old_location) 417db96d56Sopenharmony_ci sys.argv = self.old_sys_argv[0] 427db96d56Sopenharmony_ci sys.argv[:] = self.old_sys_argv[1] 437db96d56Sopenharmony_ci super(BuildDumbTestCase, self).tearDown() 447db96d56Sopenharmony_ci 457db96d56Sopenharmony_ci @unittest.skipUnless(ZLIB_SUPPORT, 'Need zlib support to run') 467db96d56Sopenharmony_ci def test_simple_built(self): 477db96d56Sopenharmony_ci 487db96d56Sopenharmony_ci # let's create a simple package 497db96d56Sopenharmony_ci tmp_dir = self.mkdtemp() 507db96d56Sopenharmony_ci pkg_dir = os.path.join(tmp_dir, 'foo') 517db96d56Sopenharmony_ci os.mkdir(pkg_dir) 527db96d56Sopenharmony_ci self.write_file((pkg_dir, 'setup.py'), SETUP_PY) 537db96d56Sopenharmony_ci self.write_file((pkg_dir, 'foo.py'), '#') 547db96d56Sopenharmony_ci self.write_file((pkg_dir, 'MANIFEST.in'), 'include foo.py') 557db96d56Sopenharmony_ci self.write_file((pkg_dir, 'README'), '') 567db96d56Sopenharmony_ci 577db96d56Sopenharmony_ci dist = Distribution({'name': 'foo', 'version': '0.1', 587db96d56Sopenharmony_ci 'py_modules': ['foo'], 597db96d56Sopenharmony_ci 'url': 'xxx', 'author': 'xxx', 607db96d56Sopenharmony_ci 'author_email': 'xxx'}) 617db96d56Sopenharmony_ci dist.script_name = 'setup.py' 627db96d56Sopenharmony_ci os.chdir(pkg_dir) 637db96d56Sopenharmony_ci 647db96d56Sopenharmony_ci sys.argv = ['setup.py'] 657db96d56Sopenharmony_ci cmd = bdist_dumb(dist) 667db96d56Sopenharmony_ci 677db96d56Sopenharmony_ci # so the output is the same no matter 687db96d56Sopenharmony_ci # what is the platform 697db96d56Sopenharmony_ci cmd.format = 'zip' 707db96d56Sopenharmony_ci 717db96d56Sopenharmony_ci cmd.ensure_finalized() 727db96d56Sopenharmony_ci cmd.run() 737db96d56Sopenharmony_ci 747db96d56Sopenharmony_ci # see what we have 757db96d56Sopenharmony_ci dist_created = os.listdir(os.path.join(pkg_dir, 'dist')) 767db96d56Sopenharmony_ci base = "%s.%s.zip" % (dist.get_fullname(), cmd.plat_name) 777db96d56Sopenharmony_ci 787db96d56Sopenharmony_ci self.assertEqual(dist_created, [base]) 797db96d56Sopenharmony_ci 807db96d56Sopenharmony_ci # now let's check what we have in the zip file 817db96d56Sopenharmony_ci fp = zipfile.ZipFile(os.path.join('dist', base)) 827db96d56Sopenharmony_ci try: 837db96d56Sopenharmony_ci contents = fp.namelist() 847db96d56Sopenharmony_ci finally: 857db96d56Sopenharmony_ci fp.close() 867db96d56Sopenharmony_ci 877db96d56Sopenharmony_ci contents = sorted(filter(None, map(os.path.basename, contents))) 887db96d56Sopenharmony_ci wanted = ['foo-0.1-py%s.%s.egg-info' % sys.version_info[:2], 'foo.py'] 897db96d56Sopenharmony_ci if not sys.dont_write_bytecode: 907db96d56Sopenharmony_ci wanted.append('foo.%s.pyc' % sys.implementation.cache_tag) 917db96d56Sopenharmony_ci self.assertEqual(contents, sorted(wanted)) 927db96d56Sopenharmony_ci 937db96d56Sopenharmony_cidef test_suite(): 947db96d56Sopenharmony_ci return unittest.TestLoader().loadTestsFromTestCase(BuildDumbTestCase) 957db96d56Sopenharmony_ci 967db96d56Sopenharmony_ciif __name__ == '__main__': 977db96d56Sopenharmony_ci run_unittest(test_suite()) 98