|
10 | 10 |
|
11 | 11 | import mig.shared.fileio as fileio
|
12 | 12 |
|
13 |
| -DUMMY_BYTES = binascii.unhexlify('DEADBEEF') # 4 bytes |
| 13 | +DUMMY_BYTES = binascii.unhexlify('DEADBEEF') # 4 bytes |
14 | 14 | DUMMY_BYTES_LENGTH = 4
|
15 | 15 | DUMMY_FILE_WRITECHUNK = 'fileio/write_chunk'
|
| 16 | +DUMMY_FILE_WRITEFILE = 'fileio/write_file' |
16 | 17 |
|
17 | 18 | assert isinstance(DUMMY_BYTES, bytes)
|
18 | 19 |
|
19 |
| -class TestFileioWriteChunk(MigTestCase): |
| 20 | + |
| 21 | +class MigSharedFileio__write_chunk(MigTestCase): |
20 | 22 | def setUp(self):
|
21 |
| - super(TestFileioWriteChunk, self).setUp() |
| 23 | + super(MigSharedFileio__write_chunk, self).setUp() |
22 | 24 | self.tmp_path = temppath(DUMMY_FILE_WRITECHUNK, self, skip_clean=True)
|
23 | 25 | cleanpath(os.path.dirname(DUMMY_FILE_WRITECHUNK), self)
|
24 | 26 |
|
25 |
| - # TODO: enable next test again once the bug is fixed (see PR48) |
26 |
| - #def test_write_chunk_error_on_invalid_data(self): |
27 |
| - # did_succeed = fileio.write_chunk(self.tmp_path, 1234, 0, self.logger) |
28 |
| - # self.assertFalse(did_succeed) |
| 27 | + def test_return_false_on_invalid_data(self): |
| 28 | + did_succeed = fileio.write_chunk(self.tmp_path, 1234, 0, self.logger) |
| 29 | + self.assertFalse(did_succeed) |
| 30 | + |
| 31 | + def test_return_false_on_invalid_offset(self): |
| 32 | + did_succeed = fileio.write_chunk(self.tmp_path, DUMMY_BYTES, -42, |
| 33 | + self.logger) |
| 34 | + self.assertFalse(did_succeed) |
| 35 | + |
| 36 | + def test_return_false_on_invalid_dir(self): |
| 37 | + os.makedirs(self.tmp_path) |
29 | 38 |
|
30 |
| - def test_write_chunk_creates_directory(self): |
| 39 | + did_succeed = fileio.write_chunk(self.tmp_path, 1234, 0, self.logger) |
| 40 | + self.assertFalse(did_succeed) |
| 41 | + |
| 42 | + def test_creates_directory(self): |
31 | 43 | fileio.write_chunk(self.tmp_path, DUMMY_BYTES, 0, self.logger)
|
32 | 44 |
|
33 | 45 | path_kind = self.assertPathExists(DUMMY_FILE_WRITECHUNK)
|
34 | 46 | self.assertEqual(path_kind, "file")
|
35 | 47 |
|
36 |
| - def test_write_chunk_store_bytes(self): |
| 48 | + def test_store_bytes(self): |
37 | 49 | fileio.write_chunk(self.tmp_path, DUMMY_BYTES, 0, self.logger)
|
38 | 50 |
|
39 | 51 | with open(self.tmp_path, 'rb') as file:
|
40 | 52 | content = file.read(1024)
|
41 | 53 | self.assertEqual(len(content), DUMMY_BYTES_LENGTH)
|
42 | 54 | self.assertEqual(content[:], DUMMY_BYTES)
|
43 | 55 |
|
44 |
| - def test_write_chunk_store_bytes_at_offset(self): |
| 56 | + def test_store_bytes_at_offset(self): |
45 | 57 | offset = 3
|
46 | 58 |
|
47 | 59 | fileio.write_chunk(self.tmp_path, DUMMY_BYTES, offset, self.logger)
|
48 | 60 |
|
49 | 61 | with open(self.tmp_path, 'rb') as file:
|
50 | 62 | content = file.read(1024)
|
51 | 63 | self.assertEqual(len(content), DUMMY_BYTES_LENGTH + offset)
|
52 |
| - self.assertEqual(content[0:3], bytearray([0, 0, 0]), "expected a hole was left") |
| 64 | + self.assertEqual(content[0:3], bytearray([0, 0, 0]), |
| 65 | + "expected a hole was left") |
53 | 66 | self.assertEqual(content[3:], DUMMY_BYTES)
|
54 | 67 |
|
| 68 | + |
| 69 | +class MigSharedFileio__write_file(MigTestCase): |
| 70 | + def setUp(self): |
| 71 | + super(MigSharedFileio__write_file, self).setUp() |
| 72 | + self.tmp_path = temppath(DUMMY_FILE_WRITEFILE, self, skip_clean=True) |
| 73 | + cleanpath(os.path.dirname(DUMMY_FILE_WRITEFILE), self) |
| 74 | + |
| 75 | + def test_return_false_on_invalid_data(self): |
| 76 | + did_succeed = fileio.write_file(1234, self.tmp_path, self.logger) |
| 77 | + self.assertFalse(did_succeed) |
| 78 | + |
| 79 | + def test_return_false_on_invalid_dir(self): |
| 80 | + os.makedirs(self.tmp_path) |
| 81 | + |
| 82 | + did_succeed = fileio.write_file(DUMMY_BYTES, self.tmp_path, self.logger) |
| 83 | + self.assertFalse(did_succeed) |
| 84 | + |
| 85 | + def test_return_false_on_missing_dir(self): |
| 86 | + did_succeed = fileio.write_file(DUMMY_BYTES, self.tmp_path, self.logger, |
| 87 | + make_parent=False) |
| 88 | + self.assertFalse(did_succeed) |
| 89 | + |
| 90 | + def test_creates_directory(self): |
| 91 | + did_succeed = fileio.write_file(DUMMY_BYTES, self.tmp_path, self.logger) |
| 92 | + self.assertTrue(did_succeed) |
| 93 | + |
| 94 | + path_kind = self.assertPathExists(DUMMY_FILE_WRITEFILE) |
| 95 | + self.assertEqual(path_kind, "file") |
| 96 | + |
| 97 | + def test_store_bytes(self): |
| 98 | + did_succeed = fileio.write_file(DUMMY_BYTES, self.tmp_path, self.logger) |
| 99 | + self.assertTrue(did_succeed) |
| 100 | + |
| 101 | + with open(self.tmp_path, 'rb') as file: |
| 102 | + content = file.read(1024) |
| 103 | + self.assertEqual(len(content), DUMMY_BYTES_LENGTH) |
| 104 | + self.assertEqual(content[:], DUMMY_BYTES) |
| 105 | + |
| 106 | + |
55 | 107 | if __name__ == '__main__':
|
56 | 108 | testmain()
|
0 commit comments