|
|
"""Utilities for testing code.
|
|
|
"""
|
|
|
|
|
|
# Required modules and packages
|
|
|
|
|
|
# Standard Python lib
|
|
|
import os
|
|
|
import sys
|
|
|
|
|
|
# From this project
|
|
|
from IPython.tools import utils
|
|
|
|
|
|
# path to our own installation, so we can find source files under this.
|
|
|
TEST_PATH = os.path.dirname(os.path.abspath(__file__))
|
|
|
|
|
|
# Global flag, used by vprint
|
|
|
VERBOSE = '-v' in sys.argv or '--verbose' in sys.argv
|
|
|
|
|
|
##########################################################################
|
|
|
# Code begins
|
|
|
|
|
|
# Some utility functions
|
|
|
def vprint(*args):
|
|
|
"""Print-like function which relies on a global VERBOSE flag."""
|
|
|
if not VERBOSE:
|
|
|
return
|
|
|
|
|
|
write = sys.stdout.write
|
|
|
for item in args:
|
|
|
write(str(item))
|
|
|
write('\n')
|
|
|
sys.stdout.flush()
|
|
|
|
|
|
def test_path(path):
|
|
|
"""Return a path as a subdir of the test package.
|
|
|
|
|
|
This finds the correct path of the test package on disk, and prepends it
|
|
|
to the input path."""
|
|
|
|
|
|
return os.path.join(TEST_PATH,path)
|
|
|
|
|
|
def fullPath(startPath,files):
|
|
|
"""Make full paths for all the listed files, based on startPath.
|
|
|
|
|
|
Only the base part of startPath is kept, since this routine is typically
|
|
|
used with a script's __file__ variable as startPath. The base of startPath
|
|
|
is then prepended to all the listed files, forming the output list.
|
|
|
|
|
|
:Parameters:
|
|
|
startPath : string
|
|
|
Initial path to use as the base for the results. This path is split
|
|
|
using os.path.split() and only its first component is kept.
|
|
|
|
|
|
files : string or list
|
|
|
One or more files.
|
|
|
|
|
|
:Examples:
|
|
|
|
|
|
>>> fullPath('/foo/bar.py',['a.txt','b.txt'])
|
|
|
['/foo/a.txt', '/foo/b.txt']
|
|
|
|
|
|
>>> fullPath('/foo',['a.txt','b.txt'])
|
|
|
['/a.txt', '/b.txt']
|
|
|
|
|
|
If a single file is given, the output is still a list:
|
|
|
>>> fullPath('/foo','a.txt')
|
|
|
['/a.txt']
|
|
|
"""
|
|
|
|
|
|
files = utils.list_strings(files)
|
|
|
base = os.path.split(startPath)[0]
|
|
|
return [ os.path.join(base,f) for f in files ]
|
|
|
|