Example #1
0
    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']),
                ])))
Example #2
0
 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)
Example #3
0
 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)
Example #4
0
 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)
Example #5
0
 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)
Example #6
0
 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)
Example #7
0
 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)
Example #8
0
 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)
Example #9
0
 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)
Example #10
0
  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
Example #11
0
    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
Example #12
0
    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})
Example #13
0
 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']),
     ]))
   )
Example #14
0
  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})
Example #15
0
 def testList(self):
     l = [1, 2, {'bob': 100}]
     f = infra_types.freeze(l)
     self.assertSequenceEqual(l, f)
     self.assertIsInstance(f, tuple)
Example #16
0
 def testSet(self):
     s = {1, 2, infra_types.freeze({'bob': 100})}
     f = infra_types.freeze(s)
     self.assertEqual(s, f)
     self.assertIsInstance(f, frozenset)
Example #17
0
 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)
Example #18
0
 def testSet(self):
   s = {1, 2, infra_types.freeze({'bob': 100})}
   f = infra_types.freeze(s)
   self.assertEqual(s, f)
   self.assertIsInstance(f, frozenset)
Example #19
0
 def testList(self):
   l = [1, 2, {'bob': 100}]
   f = infra_types.freeze(l)
   self.assertSequenceEqual(l, f)
   self.assertIsInstance(f, tuple)
Example #20
0
 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)