예제 #1
0
    def test_apply_patch_in_place_foo_from_size_missing(self):
        with self.assertRaises(detools.Error) as cm:
            detools.apply_patch_in_place_filenames(
                'tests/files/foo/old',
                'tests/files/foo/missing-in-place-from-size.patch')

        self.assertEqual(str(cm.exception), "Failed to read first size byte.")
예제 #2
0
    def test_apply_patch_in_place_foo_bad_patch_type(self):
        with self.assertRaises(detools.Error) as cm:
            detools.apply_patch_in_place_filenames('tests/files/foo/old',
                                                   'tests/files/foo/patch')

        self.assertEqual(str(cm.exception),
                         "Expected patch type 1, but got 0.")
예제 #3
0
    def test_apply_patch_in_place_small_memory_size(self):
        with self.assertRaises(detools.Error) as cm:
            detools.apply_patch_in_place_filenames(
                'tests/files/foo/old',
                'tests/files/foo/in-place-3000-1500.patch')

        self.assertEqual(
            str(cm.exception),
            "Expected memory size of at least 3000 bytes, but got 2780.")
예제 #4
0
    def test_apply_patch_in_place_foo_retain_after_3000(self):
        with open('foo.mem', 'wb') as fmem:
            with open('tests/files/foo/old', 'rb') as fold:
                fmem.write(fold.read())
                fmem.write((3000 - 2780) * b'\xff')
                fmem.write(b'\x01\x02\x03')

        detools.apply_patch_in_place_filenames(
            'foo.mem', 'tests/files/foo/in-place-3000-1500.patch')

        with open('foo.mem', 'rb') as fmem:
            data = fmem.read()

        self.assertEqual(len(data), 3003)
        self.assertEqual(data[-3:], b'\x01\x02\x03')