From 42a9f54d191940dd1a155e91363fb5041ca63c05 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Wed, 22 Feb 2012 16:04:42 +0000 Subject: Create chunks, strata in cache via temporary files This avoids problems with files with the right names but partial content, if morph is killed in the middle of writing the file. --- morphlib/bins_tests.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'morphlib/bins_tests.py') diff --git a/morphlib/bins_tests.py b/morphlib/bins_tests.py index 86b55746..90c8cc0a 100644 --- a/morphlib/bins_tests.py +++ b/morphlib/bins_tests.py @@ -66,9 +66,11 @@ class ChunkTests(BinsTest): self.tempdir = tempfile.mkdtemp() self.instdir = os.path.join(self.tempdir, 'inst') self.chunk_file = os.path.join(self.tempdir, 'chunk') + self.chunk_f = open(self.chunk_file, 'wb') self.unpacked = os.path.join(self.tempdir, 'unpacked') def tearDown(self): + self.chunk_f.close() shutil.rmtree(self.tempdir) def populate_instdir(self): @@ -92,8 +94,8 @@ class ChunkTests(BinsTest): def test_empties_everything(self): self.populate_instdir() - morphlib.bins.create_chunk(self.instdir, self.chunk_file, ['.'], - self.ex) + morphlib.bins.create_chunk(self.instdir, self.chunk_f, ['.'], self.ex) + self.chunk_f.flush() empty = os.path.join(self.tempdir, 'empty') os.mkdir(empty) self.assertEqual([x for x,y in self.recursive_lstat(self.instdir)], @@ -102,16 +104,17 @@ class ChunkTests(BinsTest): def test_creates_and_unpacks_chunk_exactly(self): self.populate_instdir() orig_files = self.recursive_lstat(self.instdir) - morphlib.bins.create_chunk(self.instdir, self.chunk_file, ['.'], - self.ex) + morphlib.bins.create_chunk(self.instdir, self.chunk_f, ['.'], self.ex) + self.chunk_f.flush() os.mkdir(self.unpacked) morphlib.bins.unpack_binary(self.chunk_file, self.unpacked, self.ex) self.assertEqual(orig_files, self.recursive_lstat(self.unpacked)) def test_uses_only_matching_names(self): self.populate_instdir() - morphlib.bins.create_chunk(self.instdir, self.chunk_file, ['bin'], + morphlib.bins.create_chunk(self.instdir, self.chunk_f, ['bin'], self.ex) + self.chunk_f.flush() os.mkdir(self.unpacked) morphlib.bins.unpack_binary(self.chunk_file, self.unpacked, self.ex) self.assertEqual([x for x,y in self.recursive_lstat(self.unpacked)], @@ -119,6 +122,7 @@ class ChunkTests(BinsTest): self.assertEqual([x for x,y in self.recursive_lstat(self.instdir)], ['.', 'lib', 'lib/libfoo.so']) + class StratumTests(BinsTest): def setUp(self): @@ -126,9 +130,11 @@ class StratumTests(BinsTest): self.tempdir = tempfile.mkdtemp() self.instdir = os.path.join(self.tempdir, 'inst') self.stratum_file = os.path.join(self.tempdir, 'stratum') + self.stratum_f = open(self.stratum_file, 'wb') self.unpacked = os.path.join(self.tempdir, 'unpacked') def tearDown(self): + self.stratum_f.close() shutil.rmtree(self.tempdir) def populate_instdir(self): @@ -137,7 +143,8 @@ class StratumTests(BinsTest): def test_creates_and_unpacks_stratum_exactly(self): self.populate_instdir() - morphlib.bins.create_stratum(self.instdir, self.stratum_file, self.ex) + morphlib.bins.create_stratum(self.instdir, self.stratum_f, self.ex) + self.stratum_f.flush() os.mkdir(self.unpacked) morphlib.bins.unpack_binary(self.stratum_file, self.unpacked, self.ex) self.assertEqual(self.recursive_lstat(self.instdir), -- cgit v1.2.1