[h5py] 359/455: Port File and parts of h5a to new test suite

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Thu Jul 2 18:19:50 UTC 2015


This is an automated email from the git hooks/post-receive script.

ghisvail-guest pushed a commit to annotated tag 1.3.0
in repository h5py.

commit 1c874ccd0c41a66a3bd9f72c1281e7a87a5031db
Author: andrewcollette <andrew.collette at gmail.com>
Date:   Sun Jan 10 09:08:18 2010 +0000

    Port File and parts of h5a to new test suite
---
 h5py/tests/__init__.py       | 137 ++++++++++++++++++++++-------
 h5py/tests/high/__init__.py  |   0
 h5py/tests/high/test_file.py | 205 +++++++++++++++++++++++++++++++++++++++++++
 h5py/tests/low/__init__.py   |   2 +
 h5py/tests/low/test_h5a.py   | 117 ++++++++++++++++++++++++
 h5py/tests/test_h5a.py       |  38 +-------
 h5py/tests/test_highlevel.py | 124 --------------------------
 7 files changed, 429 insertions(+), 194 deletions(-)

diff --git a/h5py/tests/__init__.py b/h5py/tests/__init__.py
index 1d7a1b5..89d91c4 100644
--- a/h5py/tests/__init__.py
+++ b/h5py/tests/__init__.py
@@ -10,53 +10,124 @@
 # 
 #-
 
-import h5py.tests
 import unittest
-import common
-
-mnames = [
-'test_dataset',
-'test_group',
-'test_filters',
-'test_h5a',
-'test_h5d',
-'test_h5f',
-'test_h5g',
-'test_h5i',
-'test_h5p',
-'test_h5',
-'test_h5r',
-'test_h5s',
-'test_h5t',
-'test_highlevel',
-'test_slicing',
-'test_threads',
-'test_utils',
-'test_vlen',
-'test_conv']
+import h5py
 
+config = h5py.h5.get_config()
 
 def runtests():
+    """ Run low and highlevel h5py tests.
 
-    ldr = unittest.TestLoader()
-    suite = unittest.TestSuite()
-    modules = [__import__('h5py.tests.'+x, fromlist=[h5py.tests]) for x in mnames]
-    for m in modules:
-        suite.addTests(ldr.loadTestsFromModule(m))
-
+    Result is a 2-tuple of TestResult objects
+    """
+    import low
     runner = unittest.TextTestRunner()
-    return runner.run(suite)
+    return tuple(runner.run(suite) for suite in (low.getsuite(),))
 
 def autotest():
     try:
-        if not runtests():
+        if not all(runtests()):
             sys.exit(17)
     except:
         sys.exit(2)
 
-def testinfo():
-    print "%d tests disabled" % common.skipped
+def fixme(func):
+    print "FIXME: ", func.__doc__
+    return None
+
+def require(api=None, os=None, unicode=None):
+    """ Decorator to enable/disable tests """
+    import sys
+    def haveunicode():
+        import os.path
+        try:
+            os.path.exists(u'\u201a')
+        except UnicodeError:
+            return False
+        return True
+    def wrap(func):
+        if unicode and not haveunicode(): return None
+        if api == 18 and not config.API_18: return None
+        if api == 16 and config.API_18: return None
+        if os == 'windows' and sys.platform != 'win32': return None
+        if os == 'unix' and sys.platform == 'win32': return None
+        return func
+    return wrap
+
+def skip(func):
+    """ Decorator to disable a test """
+    return None
+
+def getpath(name):
+    """ Path to a data file shipped with the test suite """
+    import os.path
+    return os.path.join(os.path.dirname(__file__), 'data', name)
+
+def gettemp():
+    """ Create a temporary file and return a 2-tuple (fid, name) """
+    import tempfile
+    name = tempfile.mktemp('.hdf5')
+    plist = h5py.h5p.create(h5py.h5p.FILE_ACCESS)
+    plist.set_fclose_degree(h5py.h5f.CLOSE_STRONG)
+    fid = h5py.h5f.create(name, h5py.h5f.ACC_TRUNC, fapl=plist)
+    return fid, name
+
+
+class HTest(unittest.TestCase):
+
+    """
+        Slightly modified subclass of TestCase, which provides the following
+        added functionality:
+
+        1. assertArrayEqual(), to save us from having to remember to use
+           numpy.all.  Also allows reasonable comparison of floating-point
+           data.
+
+        2. Catches and suppresses warnings.
+    """
+
+    EPSILON = 1e-5
+
+    def run(self, *args, **kwds):
+        import warnings
+        filters = warnings.filters
+        warnings.simplefilter("ignore")
+        try:
+            unittest.TestCase.run(self, *args, **kwds)
+        finally:
+            warnings.filters = filters
+            if 0 and h5py.h5f.get_obj_count() != 0:
+                print "WARNING: %d LEFTOVER IDS" % h5py.h5f.get_obj_count()
+                ids = h5py.h5f.get_obj_ids()
+                for id_ in ids:
+                    if id_:
+                        print "Closing %r" % id_
+                    else:
+                        print "Skipping %r" % id_
+                    while id_ and h5py.h5i.get_ref(id_) > 0:
+                        h5py.h5i.dec_ref(id_)
+
+    def assertArrayEqual(self, dset, arr, message=None, precision=None):
+        """ Make sure dset and arr have the same shape, dtype and contents, to
+            within the given precision.
+
+            Note that dset may be a NumPy array or an HDF5 dataset.
+        """
+        if precision is None:
+            precision = self.EPSILON
+        if message is None:
+            message = ''
+        else:
+            message = ' (%s)' % message
+
+        if np.isscalar(dset) or np.isscalar(arr):
+            assert np.isscalar(dset) and np.isscalar(arr), 'Scalar/array mismatch ("%r" vs "%r")%s' % (dset, arr, message)
+            assert dset - arr < precision, "Scalars differ by more than %.3f%s" % (precision, message)
+            return
 
+        assert dset.shape == arr.shape, "Shape mismatch (%s vs %s)%s" % (dset.shape, arr.shape, message)
+        assert dset.dtype == arr.dtype, "Dtype mismatch (%s vs %s)%s" % (dset.dtype, arr.dtype, message)
+        assert np.all(np.abs(dset[...] - arr[...]) < precision), "Arrays differ by more than %.3f%s" % (precision, message)
 
 
 
diff --git a/h5py/tests/high/__init__.py b/h5py/tests/high/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/h5py/tests/high/test_file.py b/h5py/tests/high/test_file.py
new file mode 100644
index 0000000..024eb32
--- /dev/null
+++ b/h5py/tests/high/test_file.py
@@ -0,0 +1,205 @@
+
+from tempfile import mktemp
+
+from h5py import tests
+import h5py
+
+class FileBase(tests.HTest):
+
+    def setUp(self):
+        self.f = None
+        self.name = None
+
+    def tearDown(self):
+        import os
+        try:
+            if self.f:
+                self.f.close()
+        finally:
+            if self.name and os.path.exists(self.name):
+                os.unlink(self.name)
+
+class TestOpening(FileBase):
+
+    def test_w(self):
+        """ (File) Create/truncate """
+        self.name = mktemp()
+        self.f = h5py.File(self.name, 'w')
+        self.assert_(self.f)
+        self.f.create_group('g')
+        self.f.close()
+        self.f = h5py.File(self.name, 'w')
+        self.assert_('g' not in self.f)
+
+    def test_wm(self):
+        """ (File) Create/exclusive """
+        self.name = mktemp()
+        self.f = h5py.File(self.name, 'w-')
+        self.assert_(self.f)
+        self.f.close()
+        self.assertRaises(IOError, h5py.File, self.name, 'w-')
+
+    def test_a(self):
+        """ (File) Append """
+        self.name = mktemp()
+        self.f = h5py.File(self.name, 'a')
+        self.assert_(self.f)
+        self.f.create_group('g')
+        self.f.close()
+        self.f = h5py.File(self.name, 'a')
+        self.assert_('g' in self.f)
+
+    def test_r(self):
+        """ (File) Readonly """
+        self.name = mktemp()
+        self.f = h5py.File(self.name, 'w')
+        self.f.create_group('g')
+        self.f.close()
+        self.f = h5py.File(self.name, 'r')
+        self.assert_('g' in self.f)
+        self.assertRaises(IOError, self.f.create_group, 'gg')
+
+    def test_rp(self):
+        """ (File) Readwrite """
+        self.name = mktemp()
+        self.f = h5py.File(self.name, 'w')
+        self.f.create_group('g')
+        self.f.close()
+        self.f = h5py.File(self.name, 'r+')
+        self.assert_('g' in self.f)
+        self.f.create_group('gg')
+        self.assert_('gg' in self.f)
+
+    def test_exc_1(self):
+        """ (File) Missing file causes IOError with r, r+ """
+        name = mktemp()
+        self.assertRaises(IOError, h5py.File, name, 'r')
+        self.assertRaises(IOError, h5py.File, name, 'r+')
+
+    def test_context(self):
+        """ (File) Using File object as context manager """
+        self.name = mktemp()
+        with h5py.File(self.name, 'w') as self.f:
+            self.assert_(self.f)
+        self.assert_(not self.f)
+
+class TestDrivers(FileBase):
+
+    @tests.require(os='unix')
+    def test_stdio(self):
+        """ (File) Create with stdio driver """
+        self.name = mktemp()
+        self.f = h5py.File(self.name, 'w', driver='stdio')
+        self.assert_(self.f)
+        self.assertEqual(self.f.driver, 'stdio')
+
+    @tests.require(os='unix')
+    def test_sec2(self):
+        """ (File) Create with sec2 driver """
+        self.name = mktemp()
+        self.f = h5py.File(self.name, 'w', driver='sec2')
+        self.assert_(self.f)
+        self.assertEqual(self.f.driver, 'sec2')
+
+class TestCore(FileBase):
+
+    def test_create(self):
+        """ (File) Create with core driver """
+        f = h5py.File('a', 'w', driver='core')
+        self.assert_(f)
+        self.assertEqual(f.driver, 'core')
+        f.close()
+
+    @tests.require(api=18)
+    def test_open(self):
+        """ (File) Open with core driver """
+        self.name = mktemp()
+        self.f = h5py.File(self.name, 'w')
+        self.f.create_group('g')
+        self.f.close()
+        f = h5py.File(self.name, 'r', driver='core')
+        self.assert_(f)
+        self.assert_('g' in f)
+        f.close()
+
+    @tests.require(api=16)
+    def test_exc(self):
+        """ (File) Opening with core driver raises NotImplementedError on 1.6 """
+        self.name = mktemp()
+        self.f = h5py.File(self.name, 'w')
+        self.f.close()
+        self.assertRaises(NotImplementedError, h5py.File, self.name, 'r', driver='core')
+
+    def test_backing(self):
+        """ (File) Backing store for core driver """
+        self.name = mktemp()
+        self.f = h5py.File(self.name, 'w', driver='core', backing_store=True)
+        self.f.create_group('g')
+        self.f.close()
+        self.f = h5py.File(self.name, 'r')
+        self.assert_('g' in self.f)
+
+    def test_blocksize(self):
+        """ (File) Block size argument for core driver """
+        self.f = h5py.File('a', 'w', driver='core', block_size=1024)
+        self.assert_(self.f)
+
+class TestOps(tests.HTest):
+
+    def setUp(self):
+        self.name = mktemp()
+        self.f = h5py.File(self.name, 'w')
+
+    def tearDown(self):
+        if self.f:
+            self.f.close()
+        import os
+        os.unlink(self.name)
+
+    def test_close(self):
+        """ (File) File close() affects __nonzero__() """
+        self.assert_(self.f)
+        self.f.close()
+        self.assert_(not self.f)
+
+    def test_exc(self):
+        """ (File) I/O on closed file results in ValueError """
+        self.f.close()
+        self.assertRaises(ValueError, self.f.create_group, 'g')
+
+    def test_flush(self):
+        """ (File) Flush method """
+        self.f.flush()
+
+    def test_repr(self):
+        """ (File) repr() """
+        self.assert_(isinstance(repr(self.f), basestring))
+        self.f.close()
+        self.assert_(isinstance(repr(self.f), basestring))
+
+    def test_fileprop(self):
+        """ (File) File property """
+        self.assert_(self.f.file is self.f)
+
+    def test_filename(self):
+        """ (File) Filename property """
+        self.assertEqual(self.f.filename, self.name)
+        self.assert_(isinstance(self.f.filename, str))
+
+class TestUnicode(FileBase):
+
+    @tests.require(unicode=True)
+    def test_unicode(self):
+        """ (File) Unicode filenames """
+        self.name = mktemp(u'\u201a')
+        self.f = h5py.File(self.name, 'w')
+        self.assertEqual(self.f.filename, self.name)
+        self.assert_(isinstance(self.f.filename, unicode))
+
+    
+
+
+
+
+
+
diff --git a/h5py/tests/low/__init__.py b/h5py/tests/low/__init__.py
new file mode 100644
index 0000000..139597f
--- /dev/null
+++ b/h5py/tests/low/__init__.py
@@ -0,0 +1,2 @@
+
+
diff --git a/h5py/tests/low/test_h5a.py b/h5py/tests/low/test_h5a.py
new file mode 100644
index 0000000..a7ab24e
--- /dev/null
+++ b/h5py/tests/low/test_h5a.py
@@ -0,0 +1,117 @@
+#+
+# 
+# This file is part of h5py, a low-level Python interface to the HDF5 library.
+# 
+# Copyright (C) 2008 Andrew Collette
+# http://h5py.alfven.org
+# License: BSD  (See LICENSE.txt for full license)
+# 
+# $Date$
+# 
+#-
+
+import numpy as np
+from h5py import tests
+
+from h5py import *
+
+def isattr(aid):
+    return aid and h5i.get_type(aid) == h5i.ATTR
+
+class TestCreate(tests.HTest):
+
+    def setUp(self):
+        self.fid, self.name = tests.gettemp()
+        self.sid = h5s.create_simple((1,))
+
+    def tearDown(self):
+        import os
+        self.fid.close()
+        os.unlink(self.name)
+
+    def test_create_1(self):
+        """ (H5A) Create attribute from type and space """
+        aid = h5a.create(self.fid, 'name', h5t.STD_I32LE, self.sid)
+        self.assert_(isattr(aid))
+    
+    @tests.require(api=18)
+    def test_create_2(self):
+        """ (H5A) Create attribute on group member w/custom LAPL """
+        gid = h5g.create(self.fid, 'subgroup')
+        lapl = h5p.create(h5p.LINK_ACCESS)
+        aid = h5a.create(self.fid, 'name', h5t.STD_I32LE, self.sid,
+                         obj_name='subgroup', lapl=lapl)
+        self.assert_(isattr(aid))
+
+    @tests.fixme
+    def test_exc_1(self):
+        """ (H5A) Existing name causes ValueError """
+        h5a.create(self.fid, 'name', h5t.STD_I32LE, self.sid)
+        self.assertRaises(ValueError, h5a.create, self.fid, 'name',
+                          h5t.STD_I32LE, self.sid)
+
+    @tests.require(api=18)
+    def test_exc_2(self):
+        """ (H5A) Wrong obj_name causes KeyError """
+        self.assertRaises(KeyError, h5a.create, self.fid, 'name',
+                          h5t.STD_I32LE, self.sid, obj_name='missing')
+
+class TestOpenExists(tests.HTest):
+
+    def setUp(self):
+        self.fid, self.name = tests.gettemp()
+        tid = h5t.STD_I32LE
+        sid = h5s.create_simple((1,))
+        h5a.create(self.fid, 'name', tid, sid)
+        gid = h5g.create(self.fid, 'subgroup')
+        h5a.create(gid, 'othername', tid, sid)
+
+    def tearDown(self):
+        self.fid.close()
+        import os
+        os.unlink(self.name)
+
+    def test_open_1(self):
+        """ (H5A) Open by name """
+        aid = h5a.open(self.fid, 'name')
+        self.assert_(isattr(aid))
+
+    def test_open_2(self):
+        """ (H5A) Open by index """
+        aid = h5a.open(self.fid, index=0)
+        self.assert_(isattr(aid))
+
+    @tests.require(api=18)
+    def test_open_3(self):
+        """ (H5A) Open from group member w/custom LAPL """
+        lapl = h5p.create(h5p.LINK_ACCESS)
+        aid = h5a.open(self.fid, 'othername', obj_name='subgroup', lapl=lapl)
+        self.assert_(isattr(aid))
+    
+    def test_exists_1(self):
+        """ (H5A) Check exists by name """
+        self.assert_(h5a.exists(self.fid, 'name') is True)
+        self.assert_(h5a.exists(self.fid, 'missing') is False)
+
+    @tests.require(api=18)
+    def test_exists_2(self):
+        """ (H5A) Check exists on group member with custom LAPL """
+        lapl = h5p.create(h5p.LINK_ACCESS)
+        self.assert_(h5a.exists(self.fid, 'othername', obj_name='subgroup', lapl=lapl) is True)
+        self.assert_(h5a.exists(self.fid, 'missing', obj_name='subgroup', lapl=lapl) is False)
+
+    def test_exc_1(self):
+        """ (H5A) Open with wrong name causes KeyError """
+        self.assertRaises(KeyError, h5a.open, self.fid, 'missing')
+
+    @tests.fixme
+    def test_exc_2(self):
+        """ (H5A) Open with wrong index causes ValueError """
+        self.assertRaises(ValueError, h5a.open, self.fid, index=2)
+
+    @tests.require(api=18)
+    def test_exc_3(self):
+        """ (H5A) Open with wrong subgroup causes KeyError """
+        self.assertRaises(KeyError, h5a.open, self.fid, 'othername', obj_name='missing')
+
+
diff --git a/h5py/tests/test_h5a.py b/h5py/tests/test_h5a.py
index a2c0718..f6db0e4 100644
--- a/h5py/tests/test_h5a.py
+++ b/h5py/tests/test_h5a.py
@@ -43,7 +43,7 @@ class TestH5A(TestCasePlus):
 
     # === General attribute operations ========================================
 
-    def test_create_write(self):
+    def test_write(self):
 
         obj = h5g.open(self.fid, OBJECTNAME)
         for name, (value, dt, shape) in NEW_ATTRIBUTES.iteritems():
@@ -66,32 +66,6 @@ class TestH5A(TestCasePlus):
             self.assert_(all(arr_val == arr_ref))
 
     @api_18
-    def test_create_18(self):
-
-        space = h5s.create(h5s.SCALAR)
-        htype = h5t.py_create('=f4')
-
-        attr = h5a.create(self.fid, "New Attribute", htype, space, obj_name="Group")
-        self.assert_(h5a.exists(self.fid, "New Attribute", obj_name="Group"))
-
-
-    def test_open_idx(self):
-        for idx, name in enumerate(ATTRIBUTES_ORDER):
-            attr = h5a.open(self.obj, index=idx)
-            self.assert_(self.is_attr(attr), "Open: index %d" % idx)
-
-    def test_open_name(self):
-        for name in ATTRIBUTES:
-            attr = h5a.open(self.obj, name)
-            self.assert_(self.is_attr(attr), 'Open: name "%s"' % name)
-
-    @api_18
-    def test_open_name_18(self):
-        for name in ATTRIBUTES:
-            attr = h5a.open(self.fid, name, obj_name=OBJECTNAME)
-            self.assert_(self.is_attr(attr))
-
-    @api_18
     def test_rename_18(self):
         h5a.rename(self.obj, ATTRIBUTES_ORDER[0], "NewName1")
         self.assert_(h5a.exists(self.obj, "NewName1"))
@@ -213,16 +187,6 @@ class TestH5A(TestCasePlus):
             attr = h5a.open(self.obj, name)
             self.assertEqual(attr.dtype, dt)
 
-    def test_exists(self):
-
-        self.assert_(h5a.exists(self.obj, ATTRIBUTES_ORDER[0]))
-        self.assert_(not h5a.exists(self.obj, "Something else"))
-
-    @api_18
-    def test_exists_18(self):
-        self.assert_(h5a.exists(self.fid, ATTRIBUTES_ORDER[0], obj_name=OBJECTNAME))
-
-
 
 
 
diff --git a/h5py/tests/test_highlevel.py b/h5py/tests/test_highlevel.py
index bc2ddcb..99dceef 100644
--- a/h5py/tests/test_highlevel.py
+++ b/h5py/tests/test_highlevel.py
@@ -61,130 +61,6 @@ class TestFile(TestCasePlus):
     def tearDown(self):
         res.clear()
 
-    @require_unicode
-    def test_unicode(self):
-        # Two cases:
-        # 1. Unicode
-        #       Store w/filesystem encoding; should be readable as Unicode
-        # 2. Raw byte string in ASCII range
-        #       Store w/filesystem encoding; should be read as ASCII
-        fnames = [res.get_name(u'_\u201a.hdf5'), res.get_name('_.hdf5')]
-        for fname, typ in zip(fnames, [unicode, str]):
-            msg = 'checking "%r" (%s)' % (fname, typ)
-            f = File(fname, 'w')
-            self.assert_(isinstance(f.filename, typ), msg)
-            self.assertEqual(f.filename, fname, msg)
-            f.close()
-
-    def mode_tester(self, driver, suffix=None, **kwds):
-        """ Test file behavior w.r.t modes for given driver keywords"""
-
-        # create a test file with known contents
-        fname = res.get_name(suffix)
-        if driver == 'family':
-            # Family info is stored in the file, so have to do it this way
-            f = h5py.File(fname, 'w', driver=driver, **kwds)
-        else:
-            f = h5py.File(fname, 'w')
-        f.attrs['foo'] = 42
-        f.close()
-
-        msg = " driver %s kwds %s" % (driver, kwds)
-
-        # catch core driver for r, r+, a
-        if driver == 'core' and h5py.version.hdf5_version_tuple[0:2] == (1,6):
-            self.assertRaises(NotImplementedError, h5py.File, fname, 'r', driver=driver, **kwds)
-            self.assertRaises(NotImplementedError, h5py.File, fname, 'r+', driver=driver, **kwds)
-            self.assertRaises(NotImplementedError, h5py.File, fname, 'a', driver=driver, **kwds)
-
-        else:
-
-            # mode r
-            f = h5py.File(fname, 'r', driver=driver, **kwds)
-            self.assertEqual(f.attrs['foo'], 42, 'mode r'+msg)
-            f.close()
-            self.assertRaisesMsg('mode r'+msg, IOError, h5py.File, res.get_name(), 'r', driver=driver, **kwds)
-
-            # mode r+
-            f = h5py.File(fname, 'r+', driver=driver, **kwds)
-            self.assertEqual(f.attrs['foo'], 42, 'mode r+'+msg)
-            f.attrs['bar'] = 43
-            self.assertEqual(f.attrs['bar'], 43, 'mode r+'+msg)
-            f.close()
-            self.assertRaises(IOError, h5py.File, res.get_name(), 'r', driver=driver, **kwds)
-
-            # mode a
-            f = h5py.File(fname, 'a', driver=driver, **kwds)
-            self.assertEqual(f.attrs['foo'], 42, 'mode a'+msg)
-            f.attrs['baz'] = 44
-            self.assertEqual(f.attrs['baz'], 44, 'mode a'+msg)
-            f.close()
-
-        # mode w
-        f = h5py.File(fname, 'w', driver=driver, **kwds)
-        self.assertEqual(len(f.attrs), 0, 'mode w'+msg)
-        f.attrs['foo'] = 24
-        self.assertEqual(f.attrs['foo'], 24, 'mode w'+msg)
-        f.close()
-
-        # mode w-
-        if driver == 'core' and h5py.version.hdf5_version_tuple[0:2] == (1,6):
-            self.assertRaises(NotImplementedError, h5py.File, fname, 'w-', driver=driver, **kwds)
-        else:
-            self.assertRaisesMsg('mode w-'+msg, IOError, h5py.File, fname, 'w-', driver=driver, **kwds)
-            newname = res.get_name(suffix)
-            f = h5py.File(newname, 'w-', driver=driver, **kwds)
-            self.assertEqual(len(f.attrs), 0, 'mode w-'+msg)
-            f.attrs['foo'] = 24
-            self.assertEqual(f.attrs['foo'], 24, 'mode w-'+msg)
-            f.close()
-           
-    def test_drivers(self):
-        
-        # Test generic operations
-        for driver in [None, 'sec2', 'stdio', 'core']:
-            self.mode_tester(driver)
-
-        # Test family driver
-        self.mode_tester('family', suffix='_%d.hdf5')
-        self.mode_tester('family', suffix='_%d.hdf5', memb_size=100*(1024.**2))
-
-        # Keyword tests for core driver
-        def leaves_backing(**kwds):     
-            fname = res.get_name()
-            f = h5py.File(fname, 'w', driver='core', **kwds)
-            f.attrs['foo'] = 42
-            f.close()
-            if not op.exists(fname):
-                return False
-            f = h5py.File(fname, 'r')
-            self.assert_('foo' in f.attrs)
-            self.assertEqual(f.attrs['foo'], 42)
-            f.close()
-            return True
-
-        self.assertTrue(leaves_backing())
-        self.assertTrue(leaves_backing(backing_store=True))
-        self.assertFalse(leaves_backing(backing_store=False))
-
-    def test_File_close(self):
-        f = File(self.fname, 'r')
-        self.assert_(f.id)
-        f.close()
-        self.assert_(not f.id)
-
-    def test_File_flush(self):
-        with File(self.fname) as f:
-            f.flush()
-
-    def test_File_special(self):
-        f = File(self.fname, 'r')
-        str(f)
-        repr(f)
-        f.close()
-        str(f)
-        repr(f)
-
     def test_AttributeManager(self):
 
         shapes = ((), (1,), (1,10), (10,1), (10,1,10), (9,9))

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/h5py.git



More information about the debian-science-commits mailing list