tests/test-manifest.py
author Martin von Zweigbergk <martinvonz@google.com>
Tue, 31 Mar 2015 14:46:05 -0700
changeset 24569 5491248e148a
parent 24549 bcf0de51326e
child 24570 487245cbf1ab
permissions -rw-r--r--
test-manifest: create constant for empty manifest For symmetry with manifest v2, once we add that, let's extract a constant for the empty v1 manifest.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
     1
import binascii
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
     2
import unittest
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
     3
import itertools
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
     4
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
     5
import silenttestrunner
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
     6
24225
3e5c4af69808 manifest: split manifestdict into high-level and low-level logic
Augie Fackler <augie@google.com>
parents: 24214
diff changeset
     7
from mercurial import manifest as manifestmod
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
     8
from mercurial import match as matchmod
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
     9
24569
5491248e148a test-manifest: create constant for empty manifest
Martin von Zweigbergk <martinvonz@google.com>
parents: 24549
diff changeset
    10
EMTPY_MANIFEST = ''
5491248e148a test-manifest: create constant for empty manifest
Martin von Zweigbergk <martinvonz@google.com>
parents: 24549
diff changeset
    11
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    12
HASH_1 = '1' * 40
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    13
HASH_2 = 'f' * 40
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    14
HASH_3 = '1234567890abcdef0987654321deadbeef0fcafe'
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    15
A_SHORT_MANIFEST = (
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    16
    'bar/baz/qux.py\0%(hash2)s%(flag2)s\n'
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    17
    'foo\0%(hash1)s%(flag1)s\n'
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    18
    ) % {'hash1': HASH_1,
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    19
         'flag1': '',
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    20
         'hash2': HASH_2,
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    21
         'flag2': 'l',
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    22
         }
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    23
24549
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    24
A_DEEPER_MANIFEST = (
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    25
    'a/b/c/bar.py\0%(hash3)s%(flag1)s\n'
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    26
    'a/b/c/bar.txt\0%(hash1)s%(flag1)s\n'
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    27
    'a/b/c/foo.py\0%(hash3)s%(flag1)s\n'
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    28
    'a/b/c/foo.txt\0%(hash2)s%(flag2)s\n'
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    29
    'a/b/d/baz.py\0%(hash3)s%(flag1)s\n'
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    30
    'a/b/d/qux.py\0%(hash1)s%(flag2)s\n'
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    31
    'a/b/d/ten.txt\0%(hash3)s%(flag2)s\n'
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    32
    'a/b/dog.py\0%(hash3)s%(flag1)s\n'
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    33
    'a/b/fish.py\0%(hash2)s%(flag1)s\n'
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    34
    'a/c/london.py\0%(hash3)s%(flag2)s\n'
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    35
    'a/c/paper.txt\0%(hash2)s%(flag2)s\n'
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    36
    'a/c/paris.py\0%(hash2)s%(flag1)s\n'
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    37
    'a/d/apple.py\0%(hash3)s%(flag1)s\n'
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    38
    'a/d/pizza.py\0%(hash3)s%(flag2)s\n'
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    39
    'a/green.py\0%(hash1)s%(flag2)s\n'
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    40
    'a/purple.py\0%(hash2)s%(flag1)s\n'
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    41
    'app.py\0%(hash3)s%(flag1)s\n'
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    42
    'readme.txt\0%(hash2)s%(flag1)s\n'
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    43
    ) % {'hash1': HASH_1,
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    44
         'flag1': '',
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    45
         'hash2': HASH_2,
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    46
         'flag2': 'l',
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    47
         'hash3': HASH_3,
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    48
         }
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
    49
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    50
HUGE_MANIFEST_ENTRIES = 200001
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    51
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    52
A_HUGE_MANIFEST = ''.join(sorted(
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    53
    'file%d\0%s%s\n' % (i, h, f) for i, h, f in
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    54
    itertools.izip(xrange(200001),
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    55
                   itertools.cycle((HASH_1, HASH_2)),
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    56
                   itertools.cycle(('', 'x', 'l')))))
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    57
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
    58
def parsemanifest(text):
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
    59
    return manifestmod.manifestdict(text)
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
    60
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    61
class testmanifest(unittest.TestCase):
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    62
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    63
    def assertIn(self, thing, container, msg=None):
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    64
        # assertIn new in 2.7, use it if available, otherwise polyfill
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    65
        sup = getattr(unittest.TestCase, 'assertIn', False)
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    66
        if sup:
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    67
            return sup(self, thing, container, msg=msg)
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    68
        if not msg:
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    69
            msg = 'Expected %r in %r' % (thing, container)
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    70
        self.assert_(thing in container, msg)
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    71
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    72
    def testEmptyManifest(self):
24569
5491248e148a test-manifest: create constant for empty manifest
Martin von Zweigbergk <martinvonz@google.com>
parents: 24549
diff changeset
    73
        m = parsemanifest(EMTPY_MANIFEST)
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    74
        self.assertEqual(0, len(m))
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
    75
        self.assertEqual([], list(m))
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    76
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    77
    def testManifest(self):
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
    78
        m = parsemanifest(A_SHORT_MANIFEST)
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
    79
        self.assertEqual(['bar/baz/qux.py', 'foo'], list(m))
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
    80
        self.assertEqual(binascii.unhexlify(HASH_2), m['bar/baz/qux.py'])
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
    81
        self.assertEqual('l', m.flags('bar/baz/qux.py'))
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
    82
        self.assertEqual(binascii.unhexlify(HASH_1), m['foo'])
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
    83
        self.assertEqual('', m.flags('foo'))
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    84
        self.assertRaises(KeyError, lambda : m['wat'])
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    85
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    86
    def testSetItem(self):
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
    87
        want = binascii.unhexlify(HASH_1)
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    88
24569
5491248e148a test-manifest: create constant for empty manifest
Martin von Zweigbergk <martinvonz@google.com>
parents: 24549
diff changeset
    89
        m = parsemanifest(EMTPY_MANIFEST)
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    90
        m['a'] = want
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    91
        self.assertIn('a', m)
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    92
        self.assertEqual(want, m['a'])
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    93
        self.assertEqual('a\0' + HASH_1 + '\n', m.text())
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    94
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
    95
        m = parsemanifest(A_SHORT_MANIFEST)
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    96
        m['a'] = want
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    97
        self.assertEqual(want, m['a'])
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    98
        self.assertEqual('a\0' + HASH_1 + '\n' + A_SHORT_MANIFEST,
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
    99
                         m.text())
24465
bb8e2b1a0803 test-manifest.py: separate out test for double-free after copy()
Martin von Zweigbergk <martinvonz@google.com>
parents: 24298
diff changeset
   100
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   101
    def testSetFlag(self):
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   102
        want = 'x'
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   103
24569
5491248e148a test-manifest: create constant for empty manifest
Martin von Zweigbergk <martinvonz@google.com>
parents: 24549
diff changeset
   104
        m = parsemanifest(EMTPY_MANIFEST)
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   105
        # first add a file; a file-less flag makes no sense
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   106
        m['a'] = binascii.unhexlify(HASH_1)
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   107
        m.setflag('a', want)
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   108
        self.assertEqual(want, m.flags('a'))
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   109
        self.assertEqual('a\0' + HASH_1 + want + '\n', m.text())
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   110
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   111
        m = parsemanifest(A_SHORT_MANIFEST)
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   112
        # first add a file; a file-less flag makes no sense
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   113
        m['a'] = binascii.unhexlify(HASH_1)
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   114
        m.setflag('a', want)
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   115
        self.assertEqual(want, m.flags('a'))
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   116
        self.assertEqual('a\0' + HASH_1 + want + '\n' + A_SHORT_MANIFEST,
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   117
                         m.text())
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   118
24465
bb8e2b1a0803 test-manifest.py: separate out test for double-free after copy()
Martin von Zweigbergk <martinvonz@google.com>
parents: 24298
diff changeset
   119
    def testCopy(self):
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   120
        m = parsemanifest(A_SHORT_MANIFEST)
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   121
        m['a'] =  binascii.unhexlify(HASH_1)
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   122
        m2 = m.copy()
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   123
        del m
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   124
        del m2 # make sure we don't double free() anything
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   125
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   126
    def testCompaction(self):
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   127
        unhex = binascii.unhexlify
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   128
        h1, h2 = unhex(HASH_1), unhex(HASH_2)
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   129
        m = parsemanifest(A_SHORT_MANIFEST)
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   130
        m['alpha'] = h1
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   131
        m['beta'] = h2
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   132
        del m['foo']
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   133
        want = 'alpha\0%s\nbar/baz/qux.py\0%sl\nbeta\0%s\n' % (
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   134
            HASH_1, HASH_2, HASH_2)
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   135
        self.assertEqual(want, m.text())
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   136
        self.assertEqual(3, len(m))
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   137
        self.assertEqual(['alpha', 'bar/baz/qux.py', 'beta'], list(m))
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   138
        self.assertEqual(h1, m['alpha'])
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   139
        self.assertEqual(h2, m['bar/baz/qux.py'])
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   140
        self.assertEqual(h2, m['beta'])
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   141
        self.assertEqual('', m.flags('alpha'))
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   142
        self.assertEqual('l', m.flags('bar/baz/qux.py'))
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   143
        self.assertEqual('', m.flags('beta'))
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   144
        self.assertRaises(KeyError, lambda : m['foo'])
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   145
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   146
    def testSetGetNodeSuffix(self):
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   147
        clean = parsemanifest(A_SHORT_MANIFEST)
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   148
        m = parsemanifest(A_SHORT_MANIFEST)
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   149
        h = m['foo']
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   150
        f = m.flags('foo')
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   151
        want = h + 'a'
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   152
        # Merge code wants to set 21-byte fake hashes at times
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   153
        m['foo'] = want
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   154
        self.assertEqual(want, m['foo'])
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   155
        self.assertEqual([('bar/baz/qux.py', binascii.unhexlify(HASH_2)),
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   156
                          ('foo', binascii.unhexlify(HASH_1) + 'a')],
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   157
                         list(m.iteritems()))
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   158
        # Sometimes it even tries a 22-byte fake hash, but we can
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   159
        # return 21 and it'll work out
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   160
        m['foo'] = want + '+'
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   161
        self.assertEqual(want, m['foo'])
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   162
        # make sure the suffix survives a copy
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   163
        match = matchmod.match('', '', ['re:foo'])
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   164
        m2 = m.matches(match)
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   165
        self.assertEqual(want, m2['foo'])
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   166
        self.assertEqual(1, len(m2))
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   167
        m2 = m.copy()
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   168
        self.assertEqual(want, m2['foo'])
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   169
        # suffix with iteration
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   170
        self.assertEqual([('bar/baz/qux.py', binascii.unhexlify(HASH_2)),
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   171
                          ('foo', want)],
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   172
                         list(m.iteritems()))
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   173
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   174
        # shows up in diff
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   175
        self.assertEqual({'foo': ((want, f), (h, ''))}, m.diff(clean))
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   176
        self.assertEqual({'foo': ((h, ''), (want, f))}, clean.diff(m))
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   177
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   178
    def testMatchException(self):
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   179
        m = parsemanifest(A_SHORT_MANIFEST)
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   180
        match = matchmod.match('', '', ['re:.*'])
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   181
        def filt(path):
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   182
            if path == 'foo':
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   183
                assert False
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   184
            return True
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   185
        match.matchfn = filt
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   186
        self.assertRaises(AssertionError, m.matches, match)
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   187
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   188
    def testRemoveItem(self):
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   189
        m = parsemanifest(A_SHORT_MANIFEST)
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   190
        del m['foo']
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   191
        self.assertRaises(KeyError, lambda : m['foo'])
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   192
        self.assertEqual(1, len(m))
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   193
        self.assertEqual(1, len(list(m)))
24228
542c891274b2 lazymanifest: use a binary search to do an insertion
Augie Fackler <augie@google.com>
parents: 24225
diff changeset
   194
        # now restore and make sure everything works right
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   195
        m['foo'] = 'a' * 20
24228
542c891274b2 lazymanifest: use a binary search to do an insertion
Augie Fackler <augie@google.com>
parents: 24225
diff changeset
   196
        self.assertEqual(2, len(m))
542c891274b2 lazymanifest: use a binary search to do an insertion
Augie Fackler <augie@google.com>
parents: 24225
diff changeset
   197
        self.assertEqual(2, len(list(m)))
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   198
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   199
    def testManifestDiff(self):
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   200
        MISSING = (None, '')
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   201
        addl = 'z-only-in-left\0' + HASH_1 + '\n'
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   202
        addr = 'z-only-in-right\0' + HASH_2 + 'x\n'
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   203
        left = parsemanifest(
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   204
            A_SHORT_MANIFEST.replace(HASH_1, HASH_3 + 'x') + addl)
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   205
        right = parsemanifest(A_SHORT_MANIFEST + addr)
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   206
        want = {
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   207
            'foo': ((binascii.unhexlify(HASH_3), 'x'),
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   208
                    (binascii.unhexlify(HASH_1), '')),
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   209
            'z-only-in-left': ((binascii.unhexlify(HASH_1), ''), MISSING),
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   210
            'z-only-in-right': (MISSING, (binascii.unhexlify(HASH_2), 'x')),
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   211
            }
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   212
        self.assertEqual(want, left.diff(right))
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   213
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   214
        want = {
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   215
            'bar/baz/qux.py': (MISSING, (binascii.unhexlify(HASH_2), 'l')),
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   216
            'foo': (MISSING, (binascii.unhexlify(HASH_3), 'x')),
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   217
            'z-only-in-left': (MISSING, (binascii.unhexlify(HASH_1), '')),
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   218
            }
24569
5491248e148a test-manifest: create constant for empty manifest
Martin von Zweigbergk <martinvonz@google.com>
parents: 24549
diff changeset
   219
        self.assertEqual(want, parsemanifest(EMTPY_MANIFEST).diff(left))
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   220
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   221
        want = {
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   222
            'bar/baz/qux.py': ((binascii.unhexlify(HASH_2), 'l'), MISSING),
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   223
            'foo': ((binascii.unhexlify(HASH_3), 'x'), MISSING),
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   224
            'z-only-in-left': ((binascii.unhexlify(HASH_1), ''), MISSING),
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   225
            }
24569
5491248e148a test-manifest: create constant for empty manifest
Martin von Zweigbergk <martinvonz@google.com>
parents: 24549
diff changeset
   226
        self.assertEqual(want, left.diff(parsemanifest(EMTPY_MANIFEST)))
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   227
        copy = right.copy()
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   228
        del copy['z-only-in-right']
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   229
        del right['foo']
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   230
        want = {
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   231
            'foo': (MISSING, (binascii.unhexlify(HASH_1), '')),
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   232
            'z-only-in-right': ((binascii.unhexlify(HASH_2), 'x'), MISSING),
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   233
            }
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   234
        self.assertEqual(want, right.diff(copy))
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   235
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   236
        short = parsemanifest(A_SHORT_MANIFEST)
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   237
        pruned = short.copy()
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   238
        del pruned['foo']
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   239
        want = {
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   240
            'foo': ((binascii.unhexlify(HASH_1), ''), MISSING),
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   241
            }
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   242
        self.assertEqual(want, short.diff(pruned))
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   243
        want = {
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   244
            'foo': (MISSING, (binascii.unhexlify(HASH_1), '')),
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   245
            }
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   246
        self.assertEqual(want, pruned.diff(short))
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   247
        want = {
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   248
            'bar/baz/qux.py': None,
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   249
            'foo': (MISSING, (binascii.unhexlify(HASH_1), '')),
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   250
            }
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   251
        self.assertEqual(want, pruned.diff(short, True))
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   252
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   253
    def testReversedLines(self):
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   254
        backwards = ''.join(
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   255
            l + '\n' for l in reversed(A_SHORT_MANIFEST.split('\n')) if l)
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   256
        try:
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   257
            parsemanifest(backwards)
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   258
            self.fail('Should have raised ValueError')
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   259
        except ValueError, v:
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   260
            self.assertIn('Manifest lines not in sorted order.', str(v))
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   261
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   262
    def testNoTerminalNewline(self):
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   263
        try:
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   264
            parsemanifest(A_SHORT_MANIFEST + 'wat')
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   265
            self.fail('Should have raised ValueError')
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   266
        except ValueError, v:
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   267
            self.assertIn('Manifest did not end in a newline.', str(v))
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   268
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   269
    def testNoNewLineAtAll(self):
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   270
        try:
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   271
            parsemanifest('wat')
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   272
            self.fail('Should have raised ValueError')
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   273
        except ValueError, v:
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   274
            self.assertIn('Manifest did not end in a newline.', str(v))
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   275
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   276
    def testHugeManifest(self):
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   277
        m = parsemanifest(A_HUGE_MANIFEST)
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   278
        self.assertEqual(HUGE_MANIFEST_ENTRIES, len(m))
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   279
        self.assertEqual(len(m), len(list(m)))
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   280
24549
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   281
    def testMatchesMetadata(self):
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   282
        '''Tests matches() for a few specific files to make sure that both
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   283
        the set of files as well as their flags and nodeids are correct in
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   284
        the resulting manifest.'''
24466
f310ca66a704 test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents: 24465
diff changeset
   285
        m = parsemanifest(A_HUGE_MANIFEST)
24495
d2a3a2808974 manifest: make manifest.intersectfiles() internal
Drew Gottlieb <drgott@google.com>
parents: 24468
diff changeset
   286
d2a3a2808974 manifest: make manifest.intersectfiles() internal
Drew Gottlieb <drgott@google.com>
parents: 24468
diff changeset
   287
        match = matchmod.match('/', '',
d2a3a2808974 manifest: make manifest.intersectfiles() internal
Drew Gottlieb <drgott@google.com>
parents: 24468
diff changeset
   288
                ['file1', 'file200', 'file300'], exact=True)
d2a3a2808974 manifest: make manifest.intersectfiles() internal
Drew Gottlieb <drgott@google.com>
parents: 24468
diff changeset
   289
        m2 = m.matches(match)
d2a3a2808974 manifest: make manifest.intersectfiles() internal
Drew Gottlieb <drgott@google.com>
parents: 24468
diff changeset
   290
24225
3e5c4af69808 manifest: split manifestdict into high-level and low-level logic
Augie Fackler <augie@google.com>
parents: 24214
diff changeset
   291
        w = ('file1\0%sx\n'
3e5c4af69808 manifest: split manifestdict into high-level and low-level logic
Augie Fackler <augie@google.com>
parents: 24214
diff changeset
   292
             'file200\0%sl\n'
3e5c4af69808 manifest: split manifestdict into high-level and low-level logic
Augie Fackler <augie@google.com>
parents: 24214
diff changeset
   293
             'file300\0%s\n') % (HASH_2, HASH_1, HASH_1)
3e5c4af69808 manifest: split manifestdict into high-level and low-level logic
Augie Fackler <augie@google.com>
parents: 24214
diff changeset
   294
        self.assertEqual(w, m2.text())
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   295
24549
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   296
    def testMatchesNonexistentFile(self):
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   297
        '''Tests matches() for a small set of specific files, including one
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   298
        nonexistent file to make sure in only matches against existing files.
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   299
        '''
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   300
        m = parsemanifest(A_DEEPER_MANIFEST)
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   301
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   302
        match = matchmod.match('/', '',
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   303
                ['a/b/c/bar.txt', 'a/b/d/qux.py', 'readme.txt', 'nonexistent'],
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   304
                exact=True)
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   305
        m2 = m.matches(match)
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   306
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   307
        self.assertEqual(
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   308
                ['a/b/c/bar.txt', 'a/b/d/qux.py', 'readme.txt'],
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   309
                m2.keys())
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   310
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   311
    def testMatchesNonexistentDirectory(self):
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   312
        '''Tests matches() for a relpath match on a directory that doesn't
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   313
        actually exist.'''
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   314
        m = parsemanifest(A_DEEPER_MANIFEST)
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   315
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   316
        match = matchmod.match('/', '', ['a/f'], default='relpath')
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   317
        m2 = m.matches(match)
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   318
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   319
        self.assertEqual([], m2.keys())
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   320
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   321
    def testMatchesExactLarge(self):
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   322
        '''Tests matches() for files matching a large list of exact files.
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   323
        '''
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   324
        m = parsemanifest(A_HUGE_MANIFEST)
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   325
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   326
        flist = m.keys()[80:300]
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   327
        match = matchmod.match('/', '', flist, exact=True)
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   328
        m2 = m.matches(match)
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   329
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   330
        self.assertEqual(flist, m2.keys())
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   331
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   332
    def testMatchesFull(self):
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   333
        '''Tests matches() for what should be a full match.'''
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   334
        m = parsemanifest(A_DEEPER_MANIFEST)
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   335
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   336
        match = matchmod.match('/', '', [''])
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   337
        m2 = m.matches(match)
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   338
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   339
        self.assertEqual(m.keys(), m2.keys())
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   340
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   341
    def testMatchesDirectory(self):
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   342
        '''Tests matches() on a relpath match on a directory, which should
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   343
        match against all files within said directory.'''
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   344
        m = parsemanifest(A_DEEPER_MANIFEST)
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   345
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   346
        match = matchmod.match('/', '', ['a/b'], default='relpath')
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   347
        m2 = m.matches(match)
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   348
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   349
        self.assertEqual([
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   350
            'a/b/c/bar.py', 'a/b/c/bar.txt', 'a/b/c/foo.py', 'a/b/c/foo.txt',
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   351
            'a/b/d/baz.py', 'a/b/d/qux.py', 'a/b/d/ten.txt', 'a/b/dog.py',
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   352
            'a/b/fish.py'], m2.keys())
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   353
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   354
    def testMatchesExactPath(self):
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   355
        '''Tests matches() on an exact match on a directory, which should
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   356
        result in an empty manifest because you can't perform an exact match
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   357
        against a directory.'''
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   358
        m = parsemanifest(A_DEEPER_MANIFEST)
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   359
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   360
        match = matchmod.match('/', '', ['a/b'], exact=True)
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   361
        m2 = m.matches(match)
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   362
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   363
        self.assertEqual([], m2.keys())
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   364
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   365
    def testMatchesCwd(self):
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   366
        '''Tests matches() on a relpath match with the current directory ('.')
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   367
        when not in the root directory.'''
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   368
        m = parsemanifest(A_DEEPER_MANIFEST)
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   369
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   370
        match = matchmod.match('/', 'a/b', ['.'], default='relpath')
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   371
        m2 = m.matches(match)
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   372
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   373
        self.assertEqual([
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   374
            'a/b/c/bar.py', 'a/b/c/bar.txt', 'a/b/c/foo.py', 'a/b/c/foo.txt',
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   375
            'a/b/d/baz.py', 'a/b/d/qux.py', 'a/b/d/ten.txt', 'a/b/dog.py',
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   376
            'a/b/fish.py'], m2.keys())
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   377
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   378
    def testMatchesWithPattern(self):
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   379
        '''Tests matches() for files matching a pattern that reside
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   380
        deeper than the specified directory.'''
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   381
        m = parsemanifest(A_DEEPER_MANIFEST)
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   382
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   383
        match = matchmod.match('/', '', ['a/b/*/*.txt'])
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   384
        m2 = m.matches(match)
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   385
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   386
        self.assertEqual(
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   387
                ['a/b/c/bar.txt', 'a/b/c/foo.txt', 'a/b/d/ten.txt'],
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   388
                m2.keys())
bcf0de51326e manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents: 24495
diff changeset
   389
24214
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   390
if __name__ == '__main__':
a5f1bccd2996 manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff changeset
   391
    silenttestrunner.main(__name__)