summaryrefslogtreecommitdiff
path: root/morphlib/bins_tests.py
diff options
context:
space:
mode:
authorLars Wirzenius <lars.wirzenius@codethink.co.uk>2012-02-22 16:04:42 +0000
committerLars Wirzenius <lars.wirzenius@codethink.co.uk>2012-02-27 15:26:55 +0000
commit42a9f54d191940dd1a155e91363fb5041ca63c05 (patch)
tree2efe04c8420a0ea02dfeabf1cc9ea168f1fbc7c4 /morphlib/bins_tests.py
parent6cffb0dfb9a2be837bbb9b3b8de26806bfd0360f (diff)
downloadmorph-42a9f54d191940dd1a155e91363fb5041ca63c05.tar.gz
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.
Diffstat (limited to 'morphlib/bins_tests.py')
-rw-r--r--morphlib/bins_tests.py19
1 files changed, 13 insertions, 6 deletions
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),