From 0242b4c405f39eec84c2dc8620f07e400be1e064 Mon Sep 17 00:00:00 2001 From: Jim Fulton <jim@zope.com> Date: Mon, 27 Oct 2008 22:34:04 +0000 Subject: [PATCH] fixed some windows test failures --- src/ZODB/blob.py | 5 ++--- src/ZODB/scripts/migrateblobs.py | 7 +++++++ src/ZODB/tests/blob_layout.txt | 22 +++++++++++++--------- src/ZODB/tests/testblob.py | 5 +++-- 4 files changed, 25 insertions(+), 14 deletions(-) diff --git a/src/ZODB/blob.py b/src/ZODB/blob.py index f51e7b24..8d0e1fb6 100644 --- a/src/ZODB/blob.py +++ b/src/ZODB/blob.py @@ -329,9 +329,8 @@ class FilesystemHelper: os.path.join(self.base_dir, LAYOUT_MARKER), 'wb') layout_marker.write(self.layout_name) else: - layout_marker = open( - os.path.join(self.base_dir, LAYOUT_MARKER), 'rb') - layout = layout_marker.read().strip() + layout = open(os.path.join(self.base_dir, LAYOUT_MARKER), 'rb' + ).read().strip() if layout != self.layout_name: raise ValueError( "Directory layout `%s` selected for blob directory %s, but " diff --git a/src/ZODB/scripts/migrateblobs.py b/src/ZODB/scripts/migrateblobs.py index 19eafdda..2c9afb15 100644 --- a/src/ZODB/scripts/migrateblobs.py +++ b/src/ZODB/scripts/migrateblobs.py @@ -17,6 +17,7 @@ import logging import optparse import os +import shutil from ZODB.blob import FilesystemHelper, rename_or_copy_blob from ZODB.utils import cp, oid_repr @@ -28,6 +29,12 @@ def link_or_copy(f1, f2): except OSError: shutil.copy(f1, f2) +# Check if we actually have link +try: + os.link +except AttributeError: + link_or_copy = shutil.copy + def migrate(source, dest, layout): source_fsh = FilesystemHelper(source) diff --git a/src/ZODB/tests/blob_layout.txt b/src/ZODB/tests/blob_layout.txt index cc5d6488..6051897f 100644 --- a/src/ZODB/tests/blob_layout.txt +++ b/src/ZODB/tests/blob_layout.txt @@ -29,9 +29,12 @@ entries per directory level: >>> bushy.oid_to_path('\x00\x00\x00\x00\x00\x00\x00\x01') '0x00/0x00/0x00/0x00/0x00/0x00/0x00/0x01' ->>> bushy.path_to_oid('0x01/0x00/0x00/0x00/0x00/0x00/0x00/0x00') +>>> import os +>>> bushy.path_to_oid(os.path.join( +... '0x01', '0x00', '0x00', '0x00', '0x00', '0x00', '0x00', '0x00')) '\x01\x00\x00\x00\x00\x00\x00\x00' ->>> bushy.path_to_oid('0xff/0x00/0x00/0x00/0x00/0x00/0x00/0x00') +>>> bushy.path_to_oid(os.path.join( +... '0xff', '0x00', '0x00', '0x00', '0x00', '0x00', '0x00', '0x00')) '\xff\x00\x00\x00\x00\x00\x00\x00' Paths that do not represent an OID will cause a ValueError: @@ -142,8 +145,8 @@ directory that has a different marker than the chosen strategy: 'lawn' >>> fsh.create() # doctest: +ELLIPSIS Traceback (most recent call last): -ValueError: Directory layout `lawn` selected for blob directory /.../blobs/, but marker found for layout `bushy` ->>> shutil.rmtree(blobs) +ValueError: Directory layout `lawn` selected for blob directory .../blobs/, but marker found for layout `bushy` +>>> rmtree(blobs) This function interacts with the automatic detection in the way, that an unmarked directory will be marked the first time when it is auto-guessed and @@ -163,10 +166,11 @@ the marker will be used in the future: 'lawn' >>> blob_storage = BlobStorage(blobs, base_storage, layout='bushy') # doctest: +ELLIPSIS Traceback (most recent call last): -ValueError: Directory layout `bushy` selected for blob directory /.../blobs/, but marker found for layout `lawn` +ValueError: Directory layout `bushy` selected for blob directory .../blobs/, but marker found for layout `lawn` ->>> shutil.rmtree(d) +>>> base_storage.close() +>>> rmtree(d) Migrating between directory layouts @@ -206,7 +210,7 @@ that shall be used for the new directory: >>> bushy = os.path.join(d, 'bushy') >>> migrate(old, bushy, 'bushy') # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE -Migrating blob data from `/.../old` (lawn) to `/.../bushy` (bushy) +Migrating blob data from `.../old` (lawn) to `.../bushy` (bushy) OID: 0x0a - 2 files OID: 0x1b7a - 2 files OID: 0x1b7f - 2 files @@ -248,7 +252,7 @@ We can also migrate the bushy layout back to the lawn layout: >>> lawn = os.path.join(d, 'lawn') >>> migrate(bushy, lawn, 'lawn') -Migrating blob data from `/.../bushy` (bushy) to `/.../lawn` (lawn) +Migrating blob data from `.../bushy` (bushy) to `.../lawn` (lawn) OID: 0x0a - 2 files OID: 0x1b7a - 2 files OID: 0x1b7f - 2 files @@ -278,4 +282,4 @@ bushy/0x00/0x00/0x00/0x00/0x00/0x00/0x00/0x0a/foo4 --> lawn/0x0a/foo4 bushy/0x00/0x00/0x00/0x00/0x00/0x00/0x1b/0x7a/foo5 --> lawn/0x1b7a/foo5 bushy/0x00/0x00/0x00/0x00/0x00/0x00/0x1b/0x7a/foo6 --> lawn/0x1b7a/foo6 ->>> shutil.rmtree(d) +>>> rmtree(d) diff --git a/src/ZODB/tests/testblob.py b/src/ZODB/tests/testblob.py index 22cf61cc..e63e8941 100644 --- a/src/ZODB/tests/testblob.py +++ b/src/ZODB/tests/testblob.py @@ -656,10 +656,11 @@ def test_suite(): suite.addTest(doctest.DocFileSuite( "blob_layout.txt", optionflags=doctest.ELLIPSIS|doctest.NORMALIZE_WHITESPACE, - setUp=zope.testing.setupstack.setUpDirectory, + setUp=setUp, tearDown=zope.testing.setupstack.tearDown, checker = zope.testing.renormalizing.RENormalizing([ - (re.compile(r'[%(sep)s]' % dict(sep=os.path.sep)), '/'), + (re.compile(r'\%(sep)s\%(sep)s' % dict(sep=os.path.sep)), '/'), + (re.compile(r'\%(sep)s' % dict(sep=os.path.sep)), '/'), (re.compile(r'\S+/((old|bushy|lawn)/\S+/foo[23456]?)'), r'\1'), ]), )) -- GitLab