summaryrefslogtreecommitdiff
path: root/scipy/weave/tests/weave_test_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'scipy/weave/tests/weave_test_utils.py')
-rw-r--r--scipy/weave/tests/weave_test_utils.py172
1 files changed, 172 insertions, 0 deletions
diff --git a/scipy/weave/tests/weave_test_utils.py b/scipy/weave/tests/weave_test_utils.py
new file mode 100644
index 000000000..9189a4619
--- /dev/null
+++ b/scipy/weave/tests/weave_test_utils.py
@@ -0,0 +1,172 @@
+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 scipy_distutils.misc_util import add_grandparent_to_path,restore_path
+
+add_grandparent_to_path(__name__)
+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
+
+ \ No newline at end of file