Esempio n. 1
0
    def test_file(self):
        f = File()
        f.parents = ('a474d1cb79c2f90dccc2bef320e293b89aae7079',
                     '49d8cbb15ce257920447006b46978b7af980a979')
        self.assertEqual(f.parent1, 'a474d1cb79c2f90dccc2bef320e293b89aae7079')
        self.assertEqual(f.parent2, '49d8cbb15ce257920447006b46978b7af980a979')

        f.parents = ('a474d1cb79c2f90dccc2bef320e293b89aae7079', )
        self.assertEqual(f.parent1, 'a474d1cb79c2f90dccc2bef320e293b89aae7079')
        self.assertEqual(f.parent2, NULL_NODE_ID)

        f.parents = ()
        self.assertEqual(f.parent1, NULL_NODE_ID)
        self.assertEqual(f.parent2, NULL_NODE_ID)

        f.content = ''
        self.assertEqual(f.raw_data, '')

        f.metadata = {
            'copy': 'foo',
            'copyrev': 'a474d1cb79c2f90dccc2bef320e293b89aae7079',
        }
        data = ('\1\n' + 'copy: foo\n' +
                'copyrev: a474d1cb79c2f90dccc2bef320e293b89aae7079\n' + '\1\n')

        self.assertEqual(f.raw_data, data)

        f.content = 'foo'
        self.assertEqual(f.raw_data, data + 'foo')

        f.metadata = {}
        self.assertEqual(f.raw_data, 'foo')
Esempio n. 2
0
    def test_file(self):
        f = File()
        f.parents = ('a474d1cb79c2f90dccc2bef320e293b89aae7079',
                     '49d8cbb15ce257920447006b46978b7af980a979')
        self.assertEqual(f.parent1,
                         'a474d1cb79c2f90dccc2bef320e293b89aae7079')
        self.assertEqual(f.parent2,
                         '49d8cbb15ce257920447006b46978b7af980a979')

        f.parents = ('a474d1cb79c2f90dccc2bef320e293b89aae7079',)
        self.assertEqual(f.parent1,
                         'a474d1cb79c2f90dccc2bef320e293b89aae7079')
        self.assertEqual(f.parent2, NULL_NODE_ID)

        f.parents = ()
        self.assertEqual(f.parent1, NULL_NODE_ID)
        self.assertEqual(f.parent2, NULL_NODE_ID)

        f.content = ''
        self.assertEqual(f.raw_data, '')

        f.metadata = {
            'copy': 'foo',
            'copyrev': 'a474d1cb79c2f90dccc2bef320e293b89aae7079',
        }
        data = (
            '\1\n' +
            'copy: foo\n' +
            'copyrev: a474d1cb79c2f90dccc2bef320e293b89aae7079\n' +
            '\1\n')

        self.assertEqual(f.raw_data, data)

        f.content = 'foo'
        self.assertEqual(f.raw_data, data + 'foo')

        f.metadata = {}
        self.assertEqual(f.raw_data, 'foo')
Esempio n. 3
0
    def test_file(self):
        f = File()
        f.content = 'foo'
        self.assertEqual(f.sha1, '49d8cbb15ce257920447006b46978b7af980a979')

        chunk = f.to_chunk(self.RevChunk)

        self.assertEqual(
            chunk,
            unhexlify('49d8cbb15ce257920447006b46978b7af980a979') + '\0' * 20 +
            '\0' * 20 + self.delta_node('\0' * 20) + '\0' * 20 + '\0' * 4 +
            '\0' * 4 + ('\0' * 3 + '\3') + 'foo')

        f = File.from_chunk(chunk)
        self.assertEqual(f.node, '49d8cbb15ce257920447006b46978b7af980a979')
        self.assertEqual(f.parent1, NULL_NODE_ID)
        self.assertEqual(f.parent2, NULL_NODE_ID)
        self.assertEqual(f.changeset, NULL_NODE_ID)
        self.assertEqual(f.metadata, {})
        self.assertEqual(f.content, 'foo')

        f2 = File()
        f2.parent1 = f.node
        f2.content = 'barbaz'
        self.assertEqual(f2.sha1, 'a474d1cb79c2f90dccc2bef320e293b89aae7079')

        chunk = f2.to_chunk(self.RevChunk)

        self.assertEqual(
            chunk,
            unhexlify('a474d1cb79c2f90dccc2bef320e293b89aae7079') +
            unhexlify('49d8cbb15ce257920447006b46978b7af980a979') + '\0' * 20 +
            self.delta_node('\0' * 20) + '\0' * 20 + '\0' * 4 + '\0' * 4 +
            ('\0' * 3 + '\6') + 'barbaz')

        chunk = f2.to_chunk(self.RevChunk, f)

        self.assertEqual(
            chunk,
            unhexlify('a474d1cb79c2f90dccc2bef320e293b89aae7079') +
            unhexlify('49d8cbb15ce257920447006b46978b7af980a979') + '\0' * 20 +
            self.delta_node(
                unhexlify('49d8cbb15ce257920447006b46978b7af980a979')) +
            '\0' * 20 + '\0' * 4 + ('\0' * 3 + '\3') + ('\0' * 3 + '\6') +
            'barbaz')

        with self.assertRaises(AssertionError):
            File.from_chunk(chunk)

        f2 = File.from_chunk(chunk, f)
        self.assertEqual(f2.node, 'a474d1cb79c2f90dccc2bef320e293b89aae7079')
        self.assertEqual(f2.parent1,
                         '49d8cbb15ce257920447006b46978b7af980a979')
        self.assertEqual(f2.parent2, NULL_NODE_ID)
        self.assertEqual(f2.changeset, NULL_NODE_ID)
        self.assertEqual(f2.metadata, {})
        self.assertEqual(f2.content, 'barbaz')

        f3 = File()
        f3.content = f2.content
        f3.metadata = {
            'copy': 'foo',
            'copyrev': 'a474d1cb79c2f90dccc2bef320e293b89aae7079',
        }
        self.assertEqual(f3.sha1, '5b783e760678fc60083be1b0844865c025dbe062')

        chunk = f3.to_chunk(self.RevChunk, f2)
        self.assertEqual(
            chunk,
            unhexlify('5b783e760678fc60083be1b0844865c025dbe062') + '\0' * 20 +
            '\0' * 20 + self.delta_node(
                unhexlify('a474d1cb79c2f90dccc2bef320e293b89aae7079')) +
            '\0' * 20 + '\0' * 4 + '\0' * 4 + ('\0' * 3 + '\x40') + '\1\n' +
            'copy: foo\n' +
            'copyrev: a474d1cb79c2f90dccc2bef320e293b89aae7079\n' + '\1\n')

        with self.assertRaises(AssertionError):
            File.from_chunk(chunk)

        with self.assertRaises(AssertionError):
            File.from_chunk(chunk, f)

        f3 = File.from_chunk(chunk, f2)
        self.assertEqual(f3.node, '5b783e760678fc60083be1b0844865c025dbe062')
        self.assertEqual(f3.parent1, NULL_NODE_ID)
        self.assertEqual(f3.parent2, NULL_NODE_ID)
        self.assertEqual(f3.changeset, NULL_NODE_ID)
        self.assertEqual(f3.metadata, {
            'copy': 'foo',
            'copyrev': 'a474d1cb79c2f90dccc2bef320e293b89aae7079',
        })
        self.assertEqual(f3.content, 'barbaz')

        chunk = f3.to_chunk(self.RevChunk, f)
        self.assertEqual(
            chunk,
            unhexlify('5b783e760678fc60083be1b0844865c025dbe062') + '\0' * 20 +
            '\0' * 20 + self.delta_node(
                unhexlify('49d8cbb15ce257920447006b46978b7af980a979')) +
            '\0' * 20 + '\0' * 4 + ('\0' * 3 + '\3') + ('\0' * 3 + '\x46') +
            '\1\n' + 'copy: foo\n' +
            'copyrev: a474d1cb79c2f90dccc2bef320e293b89aae7079\n' + '\1\n' +
            'barbaz')

        with self.assertRaises(AssertionError):
            File.from_chunk(chunk)

        with self.assertRaises(AssertionError):
            File.from_chunk(chunk, f2)

        f3 = File.from_chunk(chunk, f)
        self.assertEqual(f3.node, '5b783e760678fc60083be1b0844865c025dbe062')
        self.assertEqual(f3.parent1, NULL_NODE_ID)
        self.assertEqual(f3.parent2, NULL_NODE_ID)
        self.assertEqual(f3.changeset, NULL_NODE_ID)
        self.assertEqual(f3.metadata, {
            'copy': 'foo',
            'copyrev': 'a474d1cb79c2f90dccc2bef320e293b89aae7079',
        })
        self.assertEqual(f3.content, 'barbaz')
Esempio n. 4
0
    def test_file(self):
        f = File()
        f.content = 'foo'
        self.assertEqual(f.sha1, '49d8cbb15ce257920447006b46978b7af980a979')

        chunk = f.to_chunk(self.RevChunk)

        self.assertEqual(
            chunk,
            unhexlify('49d8cbb15ce257920447006b46978b7af980a979') +
            '\0' * 20 +
            '\0' * 20 +
            self.delta_node('\0' * 20) +
            '\0' * 20 +
            '\0' * 4 + '\0' * 4 + ('\0' * 3 + '\3') + 'foo'
        )

        f = File.from_chunk(chunk)
        self.assertEqual(f.node, '49d8cbb15ce257920447006b46978b7af980a979')
        self.assertEqual(f.parent1, NULL_NODE_ID)
        self.assertEqual(f.parent2, NULL_NODE_ID)
        self.assertEqual(f.changeset, NULL_NODE_ID)
        self.assertEqual(f.metadata, {})
        self.assertEqual(f.content, 'foo')

        f2 = File()
        f2.parent1 = f.node
        f2.content = 'barbaz'
        self.assertEqual(f2.sha1, 'a474d1cb79c2f90dccc2bef320e293b89aae7079')

        chunk = f2.to_chunk(self.RevChunk)

        self.assertEqual(
            chunk,
            unhexlify('a474d1cb79c2f90dccc2bef320e293b89aae7079') +
            unhexlify('49d8cbb15ce257920447006b46978b7af980a979') +
            '\0' * 20 +
            self.delta_node('\0' * 20) +
            '\0' * 20 +
            '\0' * 4 + '\0' * 4 + ('\0' * 3 + '\6') + 'barbaz'
        )

        chunk = f2.to_chunk(self.RevChunk, f)

        self.assertEqual(
            chunk,
            unhexlify('a474d1cb79c2f90dccc2bef320e293b89aae7079') +
            unhexlify('49d8cbb15ce257920447006b46978b7af980a979') +
            '\0' * 20 +
            self.delta_node(unhexlify(
                '49d8cbb15ce257920447006b46978b7af980a979')) +
            '\0' * 20 +
            '\0' * 4 + ('\0' * 3 + '\3') + ('\0' * 3 + '\6') + 'barbaz'
        )

        with self.assertRaises(AssertionError):
            File.from_chunk(chunk)

        f2 = File.from_chunk(chunk, f)
        self.assertEqual(f2.node, 'a474d1cb79c2f90dccc2bef320e293b89aae7079')
        self.assertEqual(f2.parent1,
                         '49d8cbb15ce257920447006b46978b7af980a979')
        self.assertEqual(f2.parent2, NULL_NODE_ID)
        self.assertEqual(f2.changeset, NULL_NODE_ID)
        self.assertEqual(f2.metadata, {})
        self.assertEqual(f2.content, 'barbaz')

        f3 = File()
        f3.content = f2.content
        f3.metadata = {
            'copy': 'foo',
            'copyrev': 'a474d1cb79c2f90dccc2bef320e293b89aae7079',
        }
        self.assertEqual(f3.sha1, '5b783e760678fc60083be1b0844865c025dbe062')

        chunk = f3.to_chunk(self.RevChunk, f2)
        self.assertEqual(
            chunk,
            unhexlify('5b783e760678fc60083be1b0844865c025dbe062') +
            '\0' * 20 +
            '\0' * 20 +
            self.delta_node(unhexlify(
                'a474d1cb79c2f90dccc2bef320e293b89aae7079')) +
            '\0' * 20 +
            '\0' * 4 + '\0' * 4 + ('\0' * 3 + '\x40') + '\1\n' +
            'copy: foo\n' +
            'copyrev: a474d1cb79c2f90dccc2bef320e293b89aae7079\n' +
            '\1\n'
        )

        with self.assertRaises(AssertionError):
            File.from_chunk(chunk)

        with self.assertRaises(AssertionError):
            File.from_chunk(chunk, f)

        f3 = File.from_chunk(chunk, f2)
        self.assertEqual(f3.node, '5b783e760678fc60083be1b0844865c025dbe062')
        self.assertEqual(f3.parent1, NULL_NODE_ID)
        self.assertEqual(f3.parent2, NULL_NODE_ID)
        self.assertEqual(f3.changeset, NULL_NODE_ID)
        self.assertEqual(f3.metadata, {
            'copy': 'foo',
            'copyrev': 'a474d1cb79c2f90dccc2bef320e293b89aae7079',
        })
        self.assertEqual(f3.content, 'barbaz')

        chunk = f3.to_chunk(self.RevChunk, f)
        self.assertEqual(
            chunk,
            unhexlify('5b783e760678fc60083be1b0844865c025dbe062') +
            '\0' * 20 +
            '\0' * 20 +
            self.delta_node(unhexlify(
                '49d8cbb15ce257920447006b46978b7af980a979')) +
            '\0' * 20 +
            '\0' * 4 + ('\0' * 3 + '\3') + ('\0' * 3 + '\x46') + '\1\n' +
            'copy: foo\n' +
            'copyrev: a474d1cb79c2f90dccc2bef320e293b89aae7079\n' +
            '\1\n' +
            'barbaz'
        )

        with self.assertRaises(AssertionError):
            File.from_chunk(chunk)

        with self.assertRaises(AssertionError):
            File.from_chunk(chunk, f2)

        f3 = File.from_chunk(chunk, f)
        self.assertEqual(f3.node, '5b783e760678fc60083be1b0844865c025dbe062')
        self.assertEqual(f3.parent1, NULL_NODE_ID)
        self.assertEqual(f3.parent2, NULL_NODE_ID)
        self.assertEqual(f3.changeset, NULL_NODE_ID)
        self.assertEqual(f3.metadata, {
            'copy': 'foo',
            'copyrev': 'a474d1cb79c2f90dccc2bef320e293b89aae7079',
        })
        self.assertEqual(f3.content, 'barbaz')
Esempio n. 5
0
    def test_store_file(self):
        f = File()
        f.content = b'foo\n'
        f.node = f.sha1

        chunk = f.to_chunk(self.RevChunk)
        GitHgHelper.store(b'file', chunk)

        self.assertEqual(
            GitHgHelper.hg2git(chunk.node),
            git_hash(b'blob', f.content))
        self.assertEqual(GitHgHelper.file_meta(chunk.node), None)

        f2 = File()
        f2.parent1 = f.node
        f2.content = f.content + b'bar\n'
        f2.node = f2.sha1

        chunk = f2.to_chunk(self.RevChunk, f)
        GitHgHelper.store(b'file', chunk)

        self.assertEqual(
            GitHgHelper.hg2git(chunk.node),
            git_hash(b'blob', f2.content))
        self.assertEqual(GitHgHelper.file_meta(chunk.node), None)

        f3 = File()
        f3.parent1 = f.node
        f3.content = f.content + b'baz\n'
        f3.node = f3.sha1

        if self.RevChunk == RawRevChunk01:
            delta_node = f2
        else:
            delta_node = f
        chunk = f3.to_chunk(self.RevChunk, delta_node)
        GitHgHelper.store(b'file', chunk)

        self.assertEqual(
            GitHgHelper.hg2git(chunk.node),
            git_hash(b'blob', f3.content))
        self.assertEqual(GitHgHelper.file_meta(chunk.node), None)

        f4 = File()
        f4.parents = (f2.node, f3.node)
        f4.content = f2.content + b'baz\n'
        f4.node = f4.sha1

        if self.RevChunk == RawRevChunk01:
            delta_node = f3
        else:
            delta_node = f2
        chunk = f4.to_chunk(self.RevChunk, delta_node)
        GitHgHelper.store(b'file', chunk)

        self.assertEqual(
            GitHgHelper.hg2git(chunk.node),
            git_hash(b'blob', f4.content))
        self.assertEqual(GitHgHelper.file_meta(chunk.node), None)

        f5 = File()
        f5.content = f4.content
        f5.metadata = {
            b'copy': b'foo',
            b'copyrev': f4.node,
        }
        f5.node = f5.sha1

        chunk = f5.to_chunk(self.RevChunk)
        GitHgHelper.store(b'file', chunk)

        self.assertEqual(
            GitHgHelper.hg2git(chunk.node),
            git_hash(b'blob', f5.content))

        self.assertEqual(
            GitHgHelper.file_meta(chunk.node),
            b'copy: foo\ncopyrev: %s\n' % f4.node)

        f6 = File()
        f6.parent1 = f5.node
        f6.content = f5.content + b'qux\n'
        f6.node = f6.sha1

        chunk = f6.to_chunk(self.RevChunk, f5)
        GitHgHelper.store(b'file', chunk)

        self.assertEqual(
            GitHgHelper.hg2git(chunk.node),
            git_hash(b'blob', f6.content))
        self.assertEqual(GitHgHelper.file_meta(chunk.node), None)