[pypy-svn] r58547 - in pypy/dist/pypy/tool: . test
arigo at codespeak.net
arigo at codespeak.net
Thu Oct 2 09:46:43 CEST 2008
Author: arigo
Date: Thu Oct 2 09:46:41 2008
New Revision: 58547
Modified:
pypy/dist/pypy/tool/test/test_udir.py
pypy/dist/pypy/tool/udir.py
Log:
Improve and document and test environment variables that control where
the udir is created. That might (possibly) make packagers more happy.
Modified: pypy/dist/pypy/tool/test/test_udir.py
==============================================================================
--- pypy/dist/pypy/tool/test/test_udir.py (original)
+++ pypy/dist/pypy/tool/test/test_udir.py Thu Oct 2 09:46:41 2008
@@ -1,8 +1,32 @@
from pypy.tool import udir
-def test_udir():
+def test_svn_info():
res = udir.svn_info('http://codespeak.net/svn/pypy/dist/pypy/tool')
assert res == 'dist'
res = udir.svn_info('http://codespeak.net/svn/pypy/branch/stuff/pypy/tool')
assert res == 'stuff'
+
+def test_make_udir():
+ root = str(udir.udir.ensure('make_udir', dir=1))
+ p1 = udir.make_udir(dir=root)
+ p2 = udir.make_udir(dir=root)
+ assert p1.relto(root).startswith('usession-')
+ assert p2.relto(root).startswith('usession-')
+ assert p1.basename.endswith('-0')
+ assert p2.basename.endswith('-1')
+
+def test_make_udir_with_basename():
+ root = str(udir.udir.ensure('make_udir', dir=1))
+ p1 = udir.make_udir(dir=root, basename='foobar')
+ assert p1.relto(root) == 'usession-foobar-0'
+ p1 = udir.make_udir(dir=root, basename='-foobar')
+ assert p1.relto(root) == 'usession-foobar-1'
+ p1 = udir.make_udir(dir=root, basename='foobar-')
+ assert p1.relto(root) == 'usession-foobar-2'
+ p1 = udir.make_udir(dir=root, basename='-foobar-')
+ assert p1.relto(root) == 'usession-foobar-3'
+ p1 = udir.make_udir(dir=root, basename='')
+ assert p1.relto(root) == 'usession-0'
+ p1 = udir.make_udir(dir=root, basename='-')
+ assert p1.relto(root) == 'usession-1'
Modified: pypy/dist/pypy/tool/udir.py
==============================================================================
--- pypy/dist/pypy/tool/udir.py (original)
+++ pypy/dist/pypy/tool/udir.py Thu Oct 2 09:46:41 2008
@@ -3,6 +3,19 @@
# This uses the py lib's logic to create numbered directories. The last
# three temporary directories are kept.
#
+# The udir is created with the following name:
+#
+# $PYPY_USESSION_DIR/usession-$PYPY_USESSION_BASENAME-N
+#
+# where N is a small number. If supported, a symlink is created for
+# convenience too, pointing to (the most recent) udir:
+#
+# $PYPY_USESSION_DIR/usession-$PYPY_USESSION_BASENAME-$USER
+#
+# The default value for $PYPY_USESSION_DIR is the system tmp.
+# The default value for $PYPY_USESSION_BASENAME is the name
+# of the current subversion branch.
+#
import autopath
import os
@@ -17,11 +30,22 @@
else:
return basename.split('/')[-2]
-basename = os.environ.get('PYPY_USESSION_BASENAME')
-if not basename:
- try:
- basename = '-' + svn_info(py.path.svnwc(py.magic.autopath().dirpath()).info().url) + '-'
- except:
- basename = '-'
+def make_udir(dir=None, basename=None):
+ if dir is not None:
+ dir = local(dir)
+ if basename is None:
+ try:
+ p = py.magic.autopath().dirpath()
+ basename = svn_info(py.path.svnwc(p).info().url)
+ except:
+ basename = ''
+ if not basename.startswith('-'):
+ basename = '-' + basename
+ if not basename.endswith('-'):
+ basename = basename + '-'
+ return local.make_numbered_dir(rootdir = dir,
+ prefix = 'usession' + basename,
+ keep = 3)
-udir = local.make_numbered_dir(prefix='usession' + basename, keep=3)
+udir = make_udir(dir = os.environ.get('PYPY_USESSION_DIR'),
+ basename = os.environ.get('PYPY_USESSION_BASENAME'))
More information about the Pypy-commit
mailing list