added tests for the clean command

This commit is contained in:
Tarek Ziadé 2009-03-31 20:50:59 +00:00
parent c7cd138bc2
commit 023862890f
3 changed files with 69 additions and 3 deletions

View File

@ -11,7 +11,7 @@ from distutils.core import Command
from distutils.dir_util import remove_tree
from distutils import log
class clean (Command):
class clean(Command):
description = "clean up temporary files from 'build' command"
user_options = [

View File

@ -4,7 +4,7 @@ import shutil
import tempfile
from distutils import log
from distutils.core import Distribution
class LoggingSilencer(object):
@ -42,7 +42,7 @@ class TempdirManager(object):
self.tempdirs.append(d)
return d
def write_file(self, path, content):
def write_file(self, path, content='xxx'):
"""Writes a file in the given path.
@ -56,6 +56,23 @@ class TempdirManager(object):
finally:
f.close()
def create_dist(self, pkg_name='foo', **kw):
"""Will generate a test environment.
This function creates:
- a Distribution instance using keywords
- a temporary directory with a package structure
It returns the package directory and the distribution
instance.
"""
tmp_dir = self.mkdtemp()
pkg_dir = os.path.join(tmp_dir, pkg_name)
os.mkdir(pkg_dir)
dist = Distribution(attrs=kw)
return pkg_dir, dist
class DummyCommand:
"""Class to store options for retrieval via set_undefined_options()."""

View File

@ -0,0 +1,49 @@
"""Tests for distutils.command.clean."""
import sys
import os
import unittest
import getpass
from distutils.command.clean import clean
from distutils.tests import support
class cleanTestCase(support.TempdirManager,
unittest.TestCase):
def test_simple_run(self):
pkg_dir, dist = self.create_dist()
cmd = clean(dist)
# let's add some elements clean should remove
dirs = [(d, os.path.join(pkg_dir, d))
for d in ('build_temp', 'build_lib', 'bdist_base',
'build_scripts', 'build_base')]
for name, path in dirs:
os.mkdir(path)
setattr(cmd, name, path)
if name == 'build_base':
continue
for f in ('one', 'two', 'three'):
self.write_file(os.path.join(path, f))
# let's run the command
cmd.all = 1
cmd.ensure_finalized()
cmd.run()
# make sure the files where removed
for name, path in dirs:
self.assert_(not os.path.exists(path),
'%s was not removed' % path)
# let's run the command again (should spit warnings but suceed)
cmd.all = 1
cmd.ensure_finalized()
cmd.run()
def test_suite():
return unittest.makeSuite(cleanTestCase)
if __name__ == "__main__":
unittest.main(defaultTest="test_suite")