Home | History | Annotate | Download | only in tests
      1 """Tests for distutils.command.clean."""
      2 import sys
      3 import os
      4 import unittest
      5 import getpass
      6 
      7 from distutils.command.clean import clean
      8 from distutils.tests import support
      9 from test.test_support import run_unittest
     10 
     11 class cleanTestCase(support.TempdirManager,
     12                     support.LoggingSilencer,
     13                     unittest.TestCase):
     14 
     15     def test_simple_run(self):
     16         pkg_dir, dist = self.create_dist()
     17         cmd = clean(dist)
     18 
     19         # let's add some elements clean should remove
     20         dirs = [(d, os.path.join(pkg_dir, d))
     21                 for d in ('build_temp', 'build_lib', 'bdist_base',
     22                 'build_scripts', 'build_base')]
     23 
     24         for name, path in dirs:
     25             os.mkdir(path)
     26             setattr(cmd, name, path)
     27             if name == 'build_base':
     28                 continue
     29             for f in ('one', 'two', 'three'):
     30                 self.write_file(os.path.join(path, f))
     31 
     32         # let's run the command
     33         cmd.all = 1
     34         cmd.ensure_finalized()
     35         cmd.run()
     36 
     37         # make sure the files where removed
     38         for name, path in dirs:
     39             self.assertTrue(not os.path.exists(path),
     40                          '%s was not removed' % path)
     41 
     42         # let's run the command again (should spit warnings but succeed)
     43         cmd.all = 1
     44         cmd.ensure_finalized()
     45         cmd.run()
     46 
     47 def test_suite():
     48     return unittest.makeSuite(cleanTestCase)
     49 
     50 if __name__ == "__main__":
     51     run_unittest(test_suite())
     52