164408fb4c5b58b3fa07a492436dfa5e119c189e0Tarek Ziadé"""Tests for distutils.command.bdist."""
264408fb4c5b58b3fa07a492436dfa5e119c189e0Tarek Ziadéimport os
3429b890561fcab04898707ef412c4d21632488a3Éric Araujoimport unittest
464408fb4c5b58b3fa07a492436dfa5e119c189e0Tarek Ziadé
528aeb0d0ab01fc4a78c4934b778fbf2f2954c023Georg Brandlfrom test.test_support import run_unittest
628aeb0d0ab01fc4a78c4934b778fbf2f2954c023Georg Brandl
764408fb4c5b58b3fa07a492436dfa5e119c189e0Tarek Ziadéfrom distutils.command.bdist import bdist
864408fb4c5b58b3fa07a492436dfa5e119c189e0Tarek Ziadéfrom distutils.tests import support
9429b890561fcab04898707ef412c4d21632488a3Éric Araujo
1064408fb4c5b58b3fa07a492436dfa5e119c189e0Tarek Ziadé
1164408fb4c5b58b3fa07a492436dfa5e119c189e0Tarek Ziadéclass BuildTestCase(support.TempdirManager,
1264408fb4c5b58b3fa07a492436dfa5e119c189e0Tarek Ziadé                    unittest.TestCase):
1364408fb4c5b58b3fa07a492436dfa5e119c189e0Tarek Ziadé
1464408fb4c5b58b3fa07a492436dfa5e119c189e0Tarek Ziadé    def test_formats(self):
1564408fb4c5b58b3fa07a492436dfa5e119c189e0Tarek Ziadé        # let's create a command and make sure
16429b890561fcab04898707ef412c4d21632488a3Éric Araujo        # we can set the format
17429b890561fcab04898707ef412c4d21632488a3Éric Araujo        dist = self.create_dist()[1]
1864408fb4c5b58b3fa07a492436dfa5e119c189e0Tarek Ziadé        cmd = bdist(dist)
1964408fb4c5b58b3fa07a492436dfa5e119c189e0Tarek Ziadé        cmd.formats = ['msi']
2064408fb4c5b58b3fa07a492436dfa5e119c189e0Tarek Ziadé        cmd.ensure_finalized()
212623a37852153363335956afab010cb0beb7e74eEzio Melotti        self.assertEqual(cmd.formats, ['msi'])
2264408fb4c5b58b3fa07a492436dfa5e119c189e0Tarek Ziadé
23429b890561fcab04898707ef412c4d21632488a3Éric Araujo        # what formats does bdist offer?
24429b890561fcab04898707ef412c4d21632488a3Éric Araujo        formats = ['bztar', 'gztar', 'msi', 'rpm', 'tar',
25429b890561fcab04898707ef412c4d21632488a3Éric Araujo                   'wininst', 'zip', 'ztar']
26429b890561fcab04898707ef412c4d21632488a3Éric Araujo        found = sorted(cmd.format_command)
27429b890561fcab04898707ef412c4d21632488a3Éric Araujo        self.assertEqual(found, formats)
28429b890561fcab04898707ef412c4d21632488a3Éric Araujo
29429b890561fcab04898707ef412c4d21632488a3Éric Araujo    def test_skip_build(self):
30429b890561fcab04898707ef412c4d21632488a3Éric Araujo        # bug #10946: bdist --skip-build should trickle down to subcommands
31429b890561fcab04898707ef412c4d21632488a3Éric Araujo        dist = self.create_dist()[1]
32429b890561fcab04898707ef412c4d21632488a3Éric Araujo        cmd = bdist(dist)
33429b890561fcab04898707ef412c4d21632488a3Éric Araujo        cmd.skip_build = 1
34429b890561fcab04898707ef412c4d21632488a3Éric Araujo        cmd.ensure_finalized()
35429b890561fcab04898707ef412c4d21632488a3Éric Araujo        dist.command_obj['bdist'] = cmd
36429b890561fcab04898707ef412c4d21632488a3Éric Araujo
37429b890561fcab04898707ef412c4d21632488a3Éric Araujo        names = ['bdist_dumb', 'bdist_wininst']
38429b890561fcab04898707ef412c4d21632488a3Éric Araujo        # bdist_rpm does not support --skip-build
39429b890561fcab04898707ef412c4d21632488a3Éric Araujo        if os.name == 'nt':
40429b890561fcab04898707ef412c4d21632488a3Éric Araujo            names.append('bdist_msi')
41429b890561fcab04898707ef412c4d21632488a3Éric Araujo
42429b890561fcab04898707ef412c4d21632488a3Éric Araujo        for name in names:
43429b890561fcab04898707ef412c4d21632488a3Éric Araujo            subcmd = cmd.get_finalized_command(name)
44429b890561fcab04898707ef412c4d21632488a3Éric Araujo            self.assertTrue(subcmd.skip_build,
45429b890561fcab04898707ef412c4d21632488a3Éric Araujo                            '%s should take --skip-build from bdist' % name)
46429b890561fcab04898707ef412c4d21632488a3Éric Araujo
4764408fb4c5b58b3fa07a492436dfa5e119c189e0Tarek Ziadé
4864408fb4c5b58b3fa07a492436dfa5e119c189e0Tarek Ziadédef test_suite():
4964408fb4c5b58b3fa07a492436dfa5e119c189e0Tarek Ziadé    return unittest.makeSuite(BuildTestCase)
5064408fb4c5b58b3fa07a492436dfa5e119c189e0Tarek Ziadé
5164408fb4c5b58b3fa07a492436dfa5e119c189e0Tarek Ziadéif __name__ == '__main__':
5228aeb0d0ab01fc4a78c4934b778fbf2f2954c023Georg Brandl    run_unittest(test_suite())
53