17db96d56Sopenharmony_ci"""Tests for distutils.command.build."""
27db96d56Sopenharmony_ciimport unittest
37db96d56Sopenharmony_ciimport os
47db96d56Sopenharmony_ciimport sys
57db96d56Sopenharmony_cifrom test.support import run_unittest
67db96d56Sopenharmony_ci
77db96d56Sopenharmony_cifrom distutils.command.build import build
87db96d56Sopenharmony_cifrom distutils.tests import support
97db96d56Sopenharmony_cifrom sysconfig import get_platform
107db96d56Sopenharmony_ci
117db96d56Sopenharmony_ciclass BuildTestCase(support.TempdirManager,
127db96d56Sopenharmony_ci                    support.LoggingSilencer,
137db96d56Sopenharmony_ci                    unittest.TestCase):
147db96d56Sopenharmony_ci
157db96d56Sopenharmony_ci    @unittest.skipUnless(sys.executable, "test requires sys.executable")
167db96d56Sopenharmony_ci    def test_finalize_options(self):
177db96d56Sopenharmony_ci        pkg_dir, dist = self.create_dist()
187db96d56Sopenharmony_ci        cmd = build(dist)
197db96d56Sopenharmony_ci        cmd.finalize_options()
207db96d56Sopenharmony_ci
217db96d56Sopenharmony_ci        # if not specified, plat_name gets the current platform
227db96d56Sopenharmony_ci        self.assertEqual(cmd.plat_name, get_platform())
237db96d56Sopenharmony_ci
247db96d56Sopenharmony_ci        # build_purelib is build + lib
257db96d56Sopenharmony_ci        wanted = os.path.join(cmd.build_base, 'lib')
267db96d56Sopenharmony_ci        self.assertEqual(cmd.build_purelib, wanted)
277db96d56Sopenharmony_ci
287db96d56Sopenharmony_ci        # build_platlib is 'build/lib.platform-x.x[-pydebug]'
297db96d56Sopenharmony_ci        # examples:
307db96d56Sopenharmony_ci        #   build/lib.macosx-10.3-i386-2.7
317db96d56Sopenharmony_ci        plat_spec = '.%s-%d.%d' % (cmd.plat_name, *sys.version_info[:2])
327db96d56Sopenharmony_ci        if hasattr(sys, 'gettotalrefcount'):
337db96d56Sopenharmony_ci            self.assertTrue(cmd.build_platlib.endswith('-pydebug'))
347db96d56Sopenharmony_ci            plat_spec += '-pydebug'
357db96d56Sopenharmony_ci        wanted = os.path.join(cmd.build_base, 'lib' + plat_spec)
367db96d56Sopenharmony_ci        self.assertEqual(cmd.build_platlib, wanted)
377db96d56Sopenharmony_ci
387db96d56Sopenharmony_ci        # by default, build_lib = build_purelib
397db96d56Sopenharmony_ci        self.assertEqual(cmd.build_lib, cmd.build_purelib)
407db96d56Sopenharmony_ci
417db96d56Sopenharmony_ci        # build_temp is build/temp.<plat>
427db96d56Sopenharmony_ci        wanted = os.path.join(cmd.build_base, 'temp' + plat_spec)
437db96d56Sopenharmony_ci        self.assertEqual(cmd.build_temp, wanted)
447db96d56Sopenharmony_ci
457db96d56Sopenharmony_ci        # build_scripts is build/scripts-x.x
467db96d56Sopenharmony_ci        wanted = os.path.join(cmd.build_base,
477db96d56Sopenharmony_ci                              'scripts-%d.%d' % sys.version_info[:2])
487db96d56Sopenharmony_ci        self.assertEqual(cmd.build_scripts, wanted)
497db96d56Sopenharmony_ci
507db96d56Sopenharmony_ci        # executable is os.path.normpath(sys.executable)
517db96d56Sopenharmony_ci        self.assertEqual(cmd.executable, os.path.normpath(sys.executable))
527db96d56Sopenharmony_ci
537db96d56Sopenharmony_cidef test_suite():
547db96d56Sopenharmony_ci    return unittest.TestLoader().loadTestsFromTestCase(BuildTestCase)
557db96d56Sopenharmony_ci
567db96d56Sopenharmony_ciif __name__ == "__main__":
577db96d56Sopenharmony_ci    run_unittest(test_suite())
58