14710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm"""Tests for distutils.command.clean."""
24710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport sys
34710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport os
44710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport unittest
54710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmimport getpass
64710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
74710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfrom distutils.command.clean import clean
84710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfrom distutils.tests import support
94710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmfrom test.test_support import run_unittest
104710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
114710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmclass cleanTestCase(support.TempdirManager,
124710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                    support.LoggingSilencer,
134710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                    unittest.TestCase):
144710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
154710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    def test_simple_run(self):
164710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        pkg_dir, dist = self.create_dist()
174710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        cmd = clean(dist)
184710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
194710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        # let's add some elements clean should remove
204710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        dirs = [(d, os.path.join(pkg_dir, d))
214710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                for d in ('build_temp', 'build_lib', 'bdist_base',
224710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                'build_scripts', 'build_base')]
234710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
244710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        for name, path in dirs:
254710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            os.mkdir(path)
264710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            setattr(cmd, name, path)
274710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            if name == 'build_base':
284710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                continue
294710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            for f in ('one', 'two', 'three'):
304710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                self.write_file(os.path.join(path, f))
314710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
324710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        # let's run the command
334710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        cmd.all = 1
344710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        cmd.ensure_finalized()
354710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        cmd.run()
364710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
374710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        # make sure the files where removed
384710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        for name, path in dirs:
394710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm            self.assertTrue(not os.path.exists(path),
404710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm                         '%s was not removed' % path)
414710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
424710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        # let's run the command again (should spit warnings but succeed)
434710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        cmd.all = 1
444710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        cmd.ensure_finalized()
454710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm        cmd.run()
464710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
474710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmdef test_suite():
484710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    return unittest.makeSuite(cleanTestCase)
494710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm
504710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylmif __name__ == "__main__":
514710c53dcad1ebf3755f3efb9e80ac24bd72a9b2darylm    run_unittest(test_suite())
52