~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/osutils.py

  • Committer: Vincent Ladeuil
  • Date: 2007-09-20 09:42:38 UTC
  • mfrom: (2831.5.3 commit.builder)
  • mto: This revision was merged to the branch mainline in revision 2838.
  • Revision ID: v.ladeuil+lp@free.fr-20070920094238-jpxvr4qiwspsftzr
Fix osutils_delete_any and use it in the test suite

Show diffs side-by-side

added added

removed removed

Lines of Context:
786
786
            raise
787
787
        shutil.copyfile(src, dest)
788
788
 
789
 
def delete_any(full_path):
 
789
 
 
790
# Look Before You Leap (LBYL) is appropriate here instead of Easier to Ask for
 
791
# Forgiveness than Permission (EAFP) because:
 
792
# - root can damage a solaris file system by using unlink,
 
793
# - unlink raises different exceptions on different OSes (linux: EISDIR, win32:
 
794
#   EACCES, OSX: EPERM) when invoked on a directory.
 
795
def delete_any(path):
790
796
    """Delete a file or directory."""
791
 
    try:
792
 
        os.unlink(full_path)
793
 
    except OSError, e:
794
 
    # We may be renaming a dangling inventory id
795
 
        if e.errno not in (errno.EISDIR, errno.EACCES, errno.EPERM):
796
 
            raise
797
 
        os.rmdir(full_path)
 
797
    if isdir(path): # Takes care of symlinks
 
798
        os.rmdir(path)
 
799
    else:
 
800
        os.unlink(path)
798
801
 
799
802
 
800
803
def has_symlinks():
802
805
        return True
803
806
    else:
804
807
        return False
805
 
        
 
808
 
806
809
 
807
810
def contains_whitespace(s):
808
811
    """True if there are any whitespace characters in s."""