1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
|
import os,sys,string
import pprint
def remove_whitespace(in_str):
import string
out = string.replace(in_str," ","")
out = string.replace(out,"\t","")
out = string.replace(out,"\n","")
return out
def print_assert_equal(test_string,actual,desired):
"""this should probably be in scipy_test.testing
"""
try:
assert(actual == desired)
except AssertionError:
import cStringIO
msg = cStringIO.StringIO()
msg.write(test_string)
msg.write(' failed\nACTUAL: \n')
pprint.pprint(actual,msg)
msg.write('DESIRED: \n')
pprint.pprint(desired,msg)
raise AssertionError, msg.getvalue()
###################################################
# mainly used by catalog tests
###################################################
from numpy.testing import set_package_path, restore_path
set_package_path()
from weave import catalog
restore_path()
import glob
def temp_catalog_files(prefix=''):
# might need to add some more platform specific catalog file
# suffixes to remove. The .pag was recently added for SunOS
d = catalog.default_dir()
f = catalog.os_dependent_catalog_name()
return glob.glob(os.path.join(d,prefix+f+'*'))
import tempfile
def clear_temp_catalog():
""" Remove any catalog from the temp dir
"""
global backup_dir
backup_dir =tempfile.mktemp()
os.mkdir(backup_dir)
for file in temp_catalog_files():
move_file(file,backup_dir)
#d,f = os.path.split(file)
#backup = os.path.join(backup_dir,f)
#os.rename(file,backup)
def restore_temp_catalog():
""" Remove any catalog from the temp dir
"""
global backup_dir
cat_dir = catalog.default_dir()
for file in os.listdir(backup_dir):
file = os.path.join(backup_dir,file)
d,f = os.path.split(file)
dst_file = os.path.join(cat_dir, f)
if os.path.exists(dst_file):
os.remove(dst_file)
#os.rename(file,dst_file)
move_file(file,dst_file)
os.rmdir(backup_dir)
backup_dir = None
def empty_temp_dir():
""" Create a sub directory in the temp directory for use in tests
"""
import tempfile
d = catalog.default_dir()
for i in range(10000):
new_d = os.path.join(d,tempfile.gettempprefix()[1:-1]+`i`)
if not os.path.exists(new_d):
os.mkdir(new_d)
break
return new_d
def cleanup_temp_dir(d):
""" Remove a directory created by empty_temp_dir
should probably catch errors
"""
files = map(lambda x,d=d: os.path.join(d,x),os.listdir(d))
for i in files:
try:
if os.path.isdir(i):
cleanup_temp_dir(i)
else:
os.remove(i)
except OSError:
pass # failed to remove file for whatever reason
# (maybe it is a DLL Python is currently using)
try:
os.rmdir(d)
except OSError:
pass
# from distutils -- old versions had bug, so copying here to make sure
# a working version is available.
from distutils.errors import DistutilsFileError
import distutils.file_util
def move_file (src, dst,
verbose=0,
dry_run=0):
"""Move a file 'src' to 'dst'. If 'dst' is a directory, the file will
be moved into it with the same name; otherwise, 'src' is just renamed
to 'dst'. Return the new full name of the file.
Handles cross-device moves on Unix using 'copy_file()'. What about
other systems???
"""
from os.path import exists, isfile, isdir, basename, dirname
import errno
if verbose:
print "moving %s -> %s" % (src, dst)
if dry_run:
return dst
if not isfile(src):
raise DistutilsFileError, \
"can't move '%s': not a regular file" % src
if isdir(dst):
dst = os.path.join(dst, basename(src))
elif exists(dst):
raise DistutilsFileError, \
"can't move '%s': destination '%s' already exists" % \
(src, dst)
if not isdir(dirname(dst)):
raise DistutilsFileError, \
"can't move '%s': destination '%s' not a valid path" % \
(src, dst)
copy_it = 0
try:
os.rename(src, dst)
except os.error, (num, msg):
if num == errno.EXDEV:
copy_it = 1
else:
raise DistutilsFileError, \
"couldn't move '%s' to '%s': %s" % (src, dst, msg)
if copy_it:
distutils.file_util.copy_file(src, dst)
try:
os.unlink(src)
except os.error, (num, msg):
try:
os.unlink(dst)
except os.error:
pass
raise DistutilsFileError, \
("couldn't move '%s' to '%s' by copy/delete: " +
"delete '%s' failed: %s") % \
(src, dst, src, msg)
return dst
|