14710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm"""Tests for distutils.command.build."""
24710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport unittest
34710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport os
44710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport sys
54710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfrom test.test_support import run_unittest
64710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
74710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfrom distutils.command.build import build
84710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfrom distutils.tests import support
94710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfrom sysconfig import get_platform
104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmclass BuildTestCase(support.TempdirManager,
124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                    support.LoggingSilencer,
134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                    unittest.TestCase):
144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    def test_finalize_options(self):
164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        pkg_dir, dist = self.create_dist()
174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        cmd = build(dist)
184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        cmd.finalize_options()
194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        # if not specified, plat_name gets the current platform
214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        self.assertEqual(cmd.plat_name, get_platform())
224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        # build_purelib is build + lib
244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        wanted = os.path.join(cmd.build_base, 'lib')
254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        self.assertEqual(cmd.build_purelib, wanted)
264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        # build_platlib is 'build/lib.platform-x.x[-pydebug]'
284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        # examples:
294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        #   build/lib.macosx-10.3-i386-2.7
304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        plat_spec = '.%s-%s' % (cmd.plat_name, sys.version[0:3])
314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        if hasattr(sys, 'gettotalrefcount'):
324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            self.assertTrue(cmd.build_platlib.endswith('-pydebug'))
334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            plat_spec += '-pydebug'
344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        wanted = os.path.join(cmd.build_base, 'lib' + plat_spec)
354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        self.assertEqual(cmd.build_platlib, wanted)
364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        # by default, build_lib = build_purelib
384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        self.assertEqual(cmd.build_lib, cmd.build_purelib)
394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        # build_temp is build/temp.<plat>
414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        wanted = os.path.join(cmd.build_base, 'temp' + plat_spec)
424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        self.assertEqual(cmd.build_temp, wanted)
434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        # build_scripts is build/scripts-x.x
454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        wanted = os.path.join(cmd.build_base, 'scripts-' +  sys.version[0:3])
464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        self.assertEqual(cmd.build_scripts, wanted)
474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        # executable is os.path.normpath(sys.executable)
494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        self.assertEqual(cmd.executable, os.path.normpath(sys.executable))
504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmdef test_suite():
524710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    return unittest.makeSuite(BuildTestCase)
534710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
544710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmif __name__ == "__main__":
554710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    run_unittest(test_suite())
56