def testExtraFooters(self): env = os.environ.copy() env.update(self.repo.get_git_commit_env()) r = self.mkRepo() self.assertEqual(r['refs/heads/branch_O'].commit.extra_footers(), {}) r.run('notes', '--ref', 'refs/notes/extra_footers', 'add', 'refs/heads/branch_O', '-m', '\n'.join([ 'Happy-Footer: sup', 'Nerd-Rage: extreme', 'Happy-Footer: sup2', ]), env=env) self.assertEqual( r['refs/heads/branch_O'].commit.extra_footers(), freeze( collections.OrderedDict([ ('Happy-Footer', ['sup', 'sup2']), ('Nerd-Rage', ['extreme']), ])))
def testSet(self): s = {1, 2, 'cat'} f = infra_types.freeze(s) t = infra_types.thaw(f) self.assertEqual(s, f) self.assertEqual(f, t) self.assertEqual(t, s) self.assertIsInstance(t, set)
def testList(self): l = [1, 2, {'bob': 100}] f = infra_types.freeze(l) t = infra_types.thaw(f) self.assertSequenceEqual(l, f) self.assertSequenceEqual(f, t) self.assertSequenceEqual(l, t) self.assertIsInstance(t, list)
def testOrderedDictRetainsOrder(self): d = collections.OrderedDict() d['cat'] = 100 d['dog'] = 0 f = infra_types.freeze(d) t = infra_types.thaw(f) self.assertEqual(d, f) self.assertEqual(t, f) self.assertEqual(d, t) self.assertIsInstance(t, collections.OrderedDict)
def testDict(self): d = { 'cat': 100, 'dog': 0, } f = infra_types.freeze(d) t = infra_types.thaw(f) self.assertEqual(d, f) self.assertEqual(t, f) self.assertEqual(d, t) self.assertIsInstance(t, collections.OrderedDict)
def __init__(self, tree, parents, author, committer, other_header_lines, message_lines, footer_lines, no_trailing_nl): super(CommitData, self).__init__() assert all('\n' not in h and self.HASH_RE.match(h) for h in parents) assert tree is None or '\n' not in tree and self.HASH_RE.match(tree) assert isinstance(author, CommitUser) assert isinstance(committer, CommitUser) assert all(isinstance(l, str) for l in message_lines) assert all(len(i) == 2 and all(isinstance(x, str) for x in i) for i in other_header_lines) assert all(len(i) == 2 and all(isinstance(x, str) for x in i) for i in footer_lines) self._parents = freeze(parents) # default to the empty tree self._tree = tree or '4b825dc642cb6eb9a060e54bf8d69288fbee4904' self._author = author self._committer = committer self._other_header_lines = freeze(other_header_lines) self._message_lines = freeze(message_lines) self._footer_lines = freeze(footer_lines) self._no_trailing_nl = no_trailing_nl
def __init__(self, tree, parents, author, committer, other_header_lines, message_lines, footer_lines, no_trailing_nl): super(CommitData, self).__init__() assert all('\n' not in h and self.HASH_RE.match(h) for h in parents) assert tree is None or '\n' not in tree and self.HASH_RE.match(tree) assert isinstance(author, CommitUser) assert isinstance(committer, CommitUser) assert all(isinstance(l, str) for l in message_lines) assert all( len(i) == 2 and all(isinstance(x, str) for x in i) for i in other_header_lines) assert all( len(i) == 2 and all(isinstance(x, str) for x in i) for i in footer_lines) self._parents = freeze(parents) # default to the empty tree self._tree = tree or '4b825dc642cb6eb9a060e54bf8d69288fbee4904' self._author = author self._committer = committer self._other_header_lines = freeze(other_header_lines) self._message_lines = freeze(message_lines) self._footer_lines = freeze(footer_lines) self._no_trailing_nl = no_trailing_nl
def testDict(self): d = collections.OrderedDict() d['cat'] = 100 d['dog'] = 0 f = infra_types.freeze(d) self.assertEqual(d, f) self.assertIsInstance(f, infra_types.FrozenDict) self.assertEqual(hash(f), hash((0, ('cat', 100))) ^ hash((1, ('dog', 0)))) self.assertEqual(len(d), len(f)) # Cover equality self.assertEqual(f, f) self.assertNotEqual(f, 'dog') self.assertNotEqual(f, {'bob': 'hat'}) self.assertNotEqual(f, {'cat': 20, 'dog': 10})
def testExtraFooters(self): r = self.mkRepo() self.assertEqual(r['refs/heads/branch_O'].commit.extra_footers(), {}) r.run('notes', '--ref', 'refs/notes/extra_footers', 'add', 'refs/heads/branch_O', '-m', '\n'.join([ 'Happy-Footer: sup', 'Nerd-Rage: extreme', 'Happy-Footer: sup2', ]), env=self.repo.get_git_commit_env()) self.assertEqual( r['refs/heads/branch_O'].commit.extra_footers(), freeze(collections.OrderedDict([ ('Happy-Footer', ['sup', 'sup2']), ('Nerd-Rage', ['extreme']), ])) )
def testDict(self): d = collections.OrderedDict() d['cat'] = 100 d['dog'] = 0 f = infra_types.freeze(d) self.assertEqual(d, f) self.assertIsInstance(f, infra_types.FrozenDict) self.assertEqual( hash(f), hash((0, ('cat', 100))) ^ hash((1, ('dog', 0))) ) self.assertEqual(len(d), len(f)) # Cover equality self.assertEqual(f, f) self.assertNotEqual(f, 'dog') self.assertNotEqual(f, {'bob': 'hat'}) self.assertNotEqual(f, {'cat': 20, 'dog': 10})
def testList(self): l = [1, 2, {'bob': 100}] f = infra_types.freeze(l) self.assertSequenceEqual(l, f) self.assertIsInstance(f, tuple)
def testSet(self): s = {1, 2, infra_types.freeze({'bob': 100})} f = infra_types.freeze(s) self.assertEqual(s, f) self.assertIsInstance(f, frozenset)
def frozen_dict_from_kv_pairs(kv_pairs): ret = collections.OrderedDict() for key, value in kv_pairs: ret.setdefault(key, []).append(value) return freeze(ret)