"""Tests for distutils.command.install.""" import os import sys import unittest import shutil from distutils.command.install_lib import install_lib from distutils.core import Extension, Distribution from distutils import sysconfig from distutils.tests import support class InstallLibTestCase(support.TempdirManager, unittest.TestCase): def setUp(self): super(InstallLibTestCase, self).setUp() self.builddir = self.mkdtemp() self.sys_path = sys.path[:] sys.path.append(self.builddir) def testClibAintLeftBehind(self): """ See also http://bugs.python.org/issue5243 """ destination = os.path.join(self.builddir, "installation") build = os.path.join(self.builddir, 'tmp') for path in ("tmp", "installation"): os.mkdir(os.path.join(self.builddir, path)) min_c = os.path.join(self.builddir, 'min.c') file(min_c, 'w').write('int main(void){return 0;}') min_lib = ('min', {'sources' : [min_c]}) dist = Distribution({'name': 'min', 'libraries': [min_lib], 'options' : {'build' : {'build_temp' : self.builddir}}}) # script_name need not exist, it just need to be initialized dist.script_name = os.path.join(self.builddir, "setup.py") cmd = install_lib(dist) cmd.build_dir = build cmd.install_dir = destination cmd.ensure_finalized() cmd.run() self.assertEquals(len(os.listdir(destination)), 1) def tearDown(self): super(InstallLibTestCase, self).tearDown() sys.path = self.sys_path def test_suite(): return unittest.makeSuite(InstallLibTestCase) if __name__ == "__main__": unittest.main(defaultTest="test_suite")