From 70126a1570f5c5b042620274a2a009effb8639a0 Mon Sep 17 00:00:00 2001 From: Omar Sandoval Date: Tue, 13 Nov 2018 23:46:59 -0800 Subject: libbtrfsutil: use SubvolumeIterator as context manager in tests We're leaking file descriptors, which makes it impossible to clean up the temporary mount point created by the test. Signed-off-by: Omar Sandoval Signed-off-by: David Sterba --- libbtrfsutil/python/tests/test_subvolume.py | 51 +++++++++++++++++------------ 1 file changed, 30 insertions(+), 21 deletions(-) (limited to 'libbtrfsutil') diff --git a/libbtrfsutil/python/tests/test_subvolume.py b/libbtrfsutil/python/tests/test_subvolume.py index f2a4cdb8..4049b08e 100644 --- a/libbtrfsutil/python/tests/test_subvolume.py +++ b/libbtrfsutil/python/tests/test_subvolume.py @@ -334,11 +334,13 @@ class TestSubvolume(BtrfsTestCase): os.chdir(self.mountpoint) btrfsutil.create_subvolume('foo') - path, subvol = next(btrfsutil.SubvolumeIterator('.', info=True)) - self.assertEqual(path, 'foo') - self.assertIsInstance(subvol, btrfsutil.SubvolumeInfo) - self.assertEqual(subvol.id, 256) - self.assertEqual(subvol.parent_id, 5) + with btrfsutil.SubvolumeIterator('.', info=True) as it: + path, subvol = next(it) + self.assertEqual(path, 'foo') + self.assertIsInstance(subvol, btrfsutil.SubvolumeInfo) + self.assertEqual(subvol.id, 256) + self.assertEqual(subvol.parent_id, 5) + self.assertRaises(StopIteration, next, it) btrfsutil.create_subvolume('foo/bar') btrfsutil.create_subvolume('foo/bar/baz') @@ -350,30 +352,37 @@ class TestSubvolume(BtrfsTestCase): ] for arg in self.path_or_fd('.'): - with self.subTest(type=type(arg)): - self.assertEqual(list(btrfsutil.SubvolumeIterator(arg)), subvols) - self.assertEqual(list(btrfsutil.SubvolumeIterator('.', top=0)), subvols) - self.assertEqual(list(btrfsutil.SubvolumeIterator('foo', top=5)), subvols) - - self.assertEqual(list(btrfsutil.SubvolumeIterator('.', post_order=True)), - [('foo/bar/baz', 258), - ('foo/bar', 257), - ('foo', 256)]) + with self.subTest(type=type(arg)), btrfsutil.SubvolumeIterator(arg) as it: + self.assertEqual(list(it), subvols) + with btrfsutil.SubvolumeIterator('.', top=0) as it: + self.assertEqual(list(it), subvols) + with btrfsutil.SubvolumeIterator('foo', top=5) as it: + self.assertEqual(list(it), subvols) + + with btrfsutil.SubvolumeIterator('.', post_order=True) as it: + self.assertEqual(list(it), + [('foo/bar/baz', 258), + ('foo/bar', 257), + ('foo', 256)]) subvols = [ ('bar', 257), ('bar/baz', 258), ] - self.assertEqual(list(btrfsutil.SubvolumeIterator('.', top=256)), subvols) - self.assertEqual(list(btrfsutil.SubvolumeIterator('foo')), subvols) - self.assertEqual(list(btrfsutil.SubvolumeIterator('foo', top=0)), subvols) + with btrfsutil.SubvolumeIterator('.', top=256) as it: + self.assertEqual(list(it), subvols) + with btrfsutil.SubvolumeIterator('foo') as it: + self.assertEqual(list(it), subvols) + with btrfsutil.SubvolumeIterator('foo', top=0) as it: + self.assertEqual(list(it), subvols) os.rename('foo/bar/baz', 'baz') - self.assertEqual(sorted(btrfsutil.SubvolumeIterator('.')), - [('baz', 258), - ('foo', 256), - ('foo/bar', 257)]) + with btrfsutil.SubvolumeIterator('.') as it: + self.assertEqual(sorted(it), + [('baz', 258), + ('foo', 256), + ('foo/bar', 257)]) with btrfsutil.SubvolumeIterator('.') as it: self.assertGreaterEqual(it.fileno(), 0) -- cgit v1.2.3