added tests for the clean command
This commit is contained in:
parent
c7cd138bc2
commit
023862890f
|
@ -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 = [
|
||||
|
|
|
@ -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()."""
|
||||
|
||||
|
|
|
@ -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")
|
Loading…
Reference in New Issue