[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