Mercurial > hg
annotate tests/test-manifest.py @ 24570:487245cbf1ab
test-manifest: extract constants for binary hashes
The binary hashes are used quite frequently, so let's extract
constants for them so we don't have to repeat binascii.unhexlify() so
often.
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Tue, 31 Mar 2015 15:06:55 -0700 |
parents | 5491248e148a |
children | b83679eb5f86 |
rev | line source |
---|---|
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 |
24570
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
13 BIN_HASH_1 = binascii.unhexlify(HASH_1) |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
14 HASH_2 = 'f' * 40 |
24570
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
15 BIN_HASH_2 = binascii.unhexlify(HASH_2) |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
16 HASH_3 = '1234567890abcdef0987654321deadbeef0fcafe' |
24570
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
17 BIN_HASH_3 = binascii.unhexlify(HASH_3) |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
18 A_SHORT_MANIFEST = ( |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
19 '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
|
20 '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
|
21 ) % {'hash1': HASH_1, |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
22 'flag1': '', |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
23 'hash2': HASH_2, |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
24 'flag2': 'l', |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
25 } |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
26 |
24549
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
27 A_DEEPER_MANIFEST = ( |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
28 '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
|
29 '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
|
30 '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
|
31 '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
|
32 '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
|
33 '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
|
34 '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
|
35 '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
|
36 '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
|
37 '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
|
38 '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
|
39 '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
|
40 '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
|
41 '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
|
42 '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
|
43 '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
|
44 '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
|
45 '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
|
46 ) % {'hash1': HASH_1, |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
47 'flag1': '', |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
48 'hash2': HASH_2, |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
49 'flag2': 'l', |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
50 'hash3': HASH_3, |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
51 } |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
52 |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
53 HUGE_MANIFEST_ENTRIES = 200001 |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
54 |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
55 A_HUGE_MANIFEST = ''.join(sorted( |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
56 '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
|
57 itertools.izip(xrange(200001), |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
58 itertools.cycle((HASH_1, HASH_2)), |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
59 itertools.cycle(('', 'x', 'l'))))) |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
60 |
24466
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
61 def parsemanifest(text): |
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
62 return manifestmod.manifestdict(text) |
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
63 |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
64 class testmanifest(unittest.TestCase): |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
65 |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
66 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
|
67 # 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
|
68 sup = getattr(unittest.TestCase, 'assertIn', False) |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
69 if sup: |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
70 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
|
71 if not msg: |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
72 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
|
73 self.assert_(thing in container, msg) |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
74 |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
75 def testEmptyManifest(self): |
24569
5491248e148a
test-manifest: create constant for empty manifest
Martin von Zweigbergk <martinvonz@google.com>
parents:
24549
diff
changeset
|
76 m = parsemanifest(EMTPY_MANIFEST) |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
77 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
|
78 self.assertEqual([], list(m)) |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
79 |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
80 def testManifest(self): |
24466
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
81 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
|
82 self.assertEqual(['bar/baz/qux.py', 'foo'], list(m)) |
24570
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
83 self.assertEqual(BIN_HASH_2, m['bar/baz/qux.py']) |
24466
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
84 self.assertEqual('l', m.flags('bar/baz/qux.py')) |
24570
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
85 self.assertEqual(BIN_HASH_1, m['foo']) |
24466
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
86 self.assertEqual('', m.flags('foo')) |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
87 self.assertRaises(KeyError, lambda : m['wat']) |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
88 |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
89 def testSetItem(self): |
24570
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
90 want = BIN_HASH_1 |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
91 |
24569
5491248e148a
test-manifest: create constant for empty manifest
Martin von Zweigbergk <martinvonz@google.com>
parents:
24549
diff
changeset
|
92 m = parsemanifest(EMTPY_MANIFEST) |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
93 m['a'] = want |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
94 self.assertIn('a', m) |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
95 self.assertEqual(want, m['a']) |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
96 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
|
97 |
24466
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
98 m = parsemanifest(A_SHORT_MANIFEST) |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
99 m['a'] = want |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
100 self.assertEqual(want, m['a']) |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
101 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
|
102 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
|
103 |
24466
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
104 def testSetFlag(self): |
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
105 want = 'x' |
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
106 |
24569
5491248e148a
test-manifest: create constant for empty manifest
Martin von Zweigbergk <martinvonz@google.com>
parents:
24549
diff
changeset
|
107 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
|
108 # first add a file; a file-less flag makes no sense |
24570
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
109 m['a'] = BIN_HASH_1 |
24466
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
110 m.setflag('a', want) |
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
111 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
|
112 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
|
113 |
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
114 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
|
115 # first add a file; a file-less flag makes no sense |
24570
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
116 m['a'] = BIN_HASH_1 |
24466
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
117 m.setflag('a', want) |
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
118 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
|
119 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
|
120 m.text()) |
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
121 |
24465
bb8e2b1a0803
test-manifest.py: separate out test for double-free after copy()
Martin von Zweigbergk <martinvonz@google.com>
parents:
24298
diff
changeset
|
122 def testCopy(self): |
24466
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
123 m = parsemanifest(A_SHORT_MANIFEST) |
24570
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
124 m['a'] = BIN_HASH_1 |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
125 m2 = m.copy() |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
126 del m |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
127 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
|
128 |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
129 def testCompaction(self): |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
130 unhex = binascii.unhexlify |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
131 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
|
132 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
|
133 m['alpha'] = h1 |
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
134 m['beta'] = h2 |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
135 del m['foo'] |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
136 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
|
137 HASH_1, HASH_2, HASH_2) |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
138 self.assertEqual(want, m.text()) |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
139 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
|
140 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
|
141 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
|
142 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
|
143 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
|
144 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
|
145 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
|
146 self.assertEqual('', m.flags('beta')) |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
147 self.assertRaises(KeyError, lambda : m['foo']) |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
148 |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
149 def testSetGetNodeSuffix(self): |
24466
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
150 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
|
151 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
|
152 h = m['foo'] |
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
153 f = m.flags('foo') |
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
154 want = h + 'a' |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
155 # 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
|
156 m['foo'] = want |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
157 self.assertEqual(want, m['foo']) |
24570
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
158 self.assertEqual([('bar/baz/qux.py', BIN_HASH_2), |
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
159 ('foo', BIN_HASH_1 + 'a')], |
24466
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
160 list(m.iteritems())) |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
161 # 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
|
162 # 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
|
163 m['foo'] = want + '+' |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
164 self.assertEqual(want, m['foo']) |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
165 # 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
|
166 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
|
167 m2 = m.matches(match) |
24214
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 self.assertEqual(1, len(m2)) |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
170 m2 = m.copy() |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
171 self.assertEqual(want, m2['foo']) |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
172 # suffix with iteration |
24570
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
173 self.assertEqual([('bar/baz/qux.py', BIN_HASH_2), |
24466
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
174 ('foo', want)], |
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
175 list(m.iteritems())) |
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
176 |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
177 # 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
|
178 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
|
179 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
|
180 |
24466
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
181 def testMatchException(self): |
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
182 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
|
183 match = matchmod.match('', '', ['re:.*']) |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
184 def filt(path): |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
185 if path == 'foo': |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
186 assert False |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
187 return True |
24466
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
188 match.matchfn = filt |
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
189 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
|
190 |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
191 def testRemoveItem(self): |
24466
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
192 m = parsemanifest(A_SHORT_MANIFEST) |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
193 del m['foo'] |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
194 self.assertRaises(KeyError, lambda : m['foo']) |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
195 self.assertEqual(1, len(m)) |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
196 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
|
197 # 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
|
198 m['foo'] = 'a' * 20 |
24228
542c891274b2
lazymanifest: use a binary search to do an insertion
Augie Fackler <augie@google.com>
parents:
24225
diff
changeset
|
199 self.assertEqual(2, len(m)) |
542c891274b2
lazymanifest: use a binary search to do an insertion
Augie Fackler <augie@google.com>
parents:
24225
diff
changeset
|
200 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
|
201 |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
202 def testManifestDiff(self): |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
203 MISSING = (None, '') |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
204 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
|
205 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
|
206 left = parsemanifest( |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
207 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
|
208 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
|
209 want = { |
24570
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
210 'foo': ((BIN_HASH_3, 'x'), |
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
211 (BIN_HASH_1, '')), |
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
212 'z-only-in-left': ((BIN_HASH_1, ''), MISSING), |
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
213 'z-only-in-right': (MISSING, (BIN_HASH_2, 'x')), |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
214 } |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
215 self.assertEqual(want, left.diff(right)) |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
216 |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
217 want = { |
24570
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
218 'bar/baz/qux.py': (MISSING, (BIN_HASH_2, 'l')), |
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
219 'foo': (MISSING, (BIN_HASH_3, 'x')), |
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
220 'z-only-in-left': (MISSING, (BIN_HASH_1, '')), |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
221 } |
24569
5491248e148a
test-manifest: create constant for empty manifest
Martin von Zweigbergk <martinvonz@google.com>
parents:
24549
diff
changeset
|
222 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
|
223 |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
224 want = { |
24570
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
225 'bar/baz/qux.py': ((BIN_HASH_2, 'l'), MISSING), |
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
226 'foo': ((BIN_HASH_3, 'x'), MISSING), |
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
227 'z-only-in-left': ((BIN_HASH_1, ''), MISSING), |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
228 } |
24569
5491248e148a
test-manifest: create constant for empty manifest
Martin von Zweigbergk <martinvonz@google.com>
parents:
24549
diff
changeset
|
229 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
|
230 copy = right.copy() |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
231 del copy['z-only-in-right'] |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
232 del right['foo'] |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
233 want = { |
24570
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
234 'foo': (MISSING, (BIN_HASH_1, '')), |
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
235 'z-only-in-right': ((BIN_HASH_2, 'x'), MISSING), |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
236 } |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
237 self.assertEqual(want, right.diff(copy)) |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
238 |
24466
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
239 short = parsemanifest(A_SHORT_MANIFEST) |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
240 pruned = short.copy() |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
241 del pruned['foo'] |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
242 want = { |
24570
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
243 'foo': ((BIN_HASH_1, ''), MISSING), |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
244 } |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
245 self.assertEqual(want, short.diff(pruned)) |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
246 want = { |
24570
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
247 'foo': (MISSING, (BIN_HASH_1, '')), |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
248 } |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
249 self.assertEqual(want, pruned.diff(short)) |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
250 want = { |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
251 'bar/baz/qux.py': None, |
24570
487245cbf1ab
test-manifest: extract constants for binary hashes
Martin von Zweigbergk <martinvonz@google.com>
parents:
24569
diff
changeset
|
252 'foo': (MISSING, (BIN_HASH_1, '')), |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
253 } |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
254 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
|
255 |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
256 def testReversedLines(self): |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
257 backwards = ''.join( |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
258 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
|
259 try: |
24466
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
260 parsemanifest(backwards) |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
261 self.fail('Should have raised ValueError') |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
262 except ValueError, v: |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
263 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
|
264 |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
265 def testNoTerminalNewline(self): |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
266 try: |
24466
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
267 parsemanifest(A_SHORT_MANIFEST + 'wat') |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
268 self.fail('Should have raised ValueError') |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
269 except ValueError, v: |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
270 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
|
271 |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
272 def testNoNewLineAtAll(self): |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
273 try: |
24466
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
274 parsemanifest('wat') |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
275 self.fail('Should have raised ValueError') |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
276 except ValueError, v: |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
277 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
|
278 |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
279 def testHugeManifest(self): |
24466
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
280 m = parsemanifest(A_HUGE_MANIFEST) |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
281 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
|
282 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
|
283 |
24549
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
284 def testMatchesMetadata(self): |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
285 '''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
|
286 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
|
287 the resulting manifest.''' |
24466
f310ca66a704
test-manifest.py: rewrite tests in terms of manifestdict
Martin von Zweigbergk <martinvonz@google.com>
parents:
24465
diff
changeset
|
288 m = parsemanifest(A_HUGE_MANIFEST) |
24495
d2a3a2808974
manifest: make manifest.intersectfiles() internal
Drew Gottlieb <drgott@google.com>
parents:
24468
diff
changeset
|
289 |
d2a3a2808974
manifest: make manifest.intersectfiles() internal
Drew Gottlieb <drgott@google.com>
parents:
24468
diff
changeset
|
290 match = matchmod.match('/', '', |
d2a3a2808974
manifest: make manifest.intersectfiles() internal
Drew Gottlieb <drgott@google.com>
parents:
24468
diff
changeset
|
291 ['file1', 'file200', 'file300'], exact=True) |
d2a3a2808974
manifest: make manifest.intersectfiles() internal
Drew Gottlieb <drgott@google.com>
parents:
24468
diff
changeset
|
292 m2 = m.matches(match) |
d2a3a2808974
manifest: make manifest.intersectfiles() internal
Drew Gottlieb <drgott@google.com>
parents:
24468
diff
changeset
|
293 |
24225
3e5c4af69808
manifest: split manifestdict into high-level and low-level logic
Augie Fackler <augie@google.com>
parents:
24214
diff
changeset
|
294 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
|
295 'file200\0%sl\n' |
3e5c4af69808
manifest: split manifestdict into high-level and low-level logic
Augie Fackler <augie@google.com>
parents:
24214
diff
changeset
|
296 '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
|
297 self.assertEqual(w, m2.text()) |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
298 |
24549
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
299 def testMatchesNonexistentFile(self): |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
300 '''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
|
301 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
|
302 ''' |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
303 m = parsemanifest(A_DEEPER_MANIFEST) |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
304 |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
305 match = matchmod.match('/', '', |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
306 ['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
|
307 exact=True) |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
308 m2 = m.matches(match) |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
309 |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
310 self.assertEqual( |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
311 ['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
|
312 m2.keys()) |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
313 |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
314 def testMatchesNonexistentDirectory(self): |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
315 '''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
|
316 actually exist.''' |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
317 m = parsemanifest(A_DEEPER_MANIFEST) |
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 match = matchmod.match('/', '', ['a/f'], default='relpath') |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
320 m2 = m.matches(match) |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
321 |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
322 self.assertEqual([], m2.keys()) |
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 def testMatchesExactLarge(self): |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
325 '''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
|
326 ''' |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
327 m = parsemanifest(A_HUGE_MANIFEST) |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
328 |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
329 flist = m.keys()[80:300] |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
330 match = matchmod.match('/', '', flist, exact=True) |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
331 m2 = m.matches(match) |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
332 |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
333 self.assertEqual(flist, m2.keys()) |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
334 |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
335 def testMatchesFull(self): |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
336 '''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
|
337 m = parsemanifest(A_DEEPER_MANIFEST) |
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 match = matchmod.match('/', '', ['']) |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
340 m2 = m.matches(match) |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
341 |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
342 self.assertEqual(m.keys(), m2.keys()) |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
343 |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
344 def testMatchesDirectory(self): |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
345 '''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
|
346 match against all files within said directory.''' |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
347 m = parsemanifest(A_DEEPER_MANIFEST) |
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 match = matchmod.match('/', '', ['a/b'], default='relpath') |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
350 m2 = m.matches(match) |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
351 |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
352 self.assertEqual([ |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
353 '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
|
354 '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
|
355 'a/b/fish.py'], m2.keys()) |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
356 |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
357 def testMatchesExactPath(self): |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
358 '''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
|
359 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
|
360 against a directory.''' |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
361 m = parsemanifest(A_DEEPER_MANIFEST) |
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 match = matchmod.match('/', '', ['a/b'], exact=True) |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
364 m2 = m.matches(match) |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
365 |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
366 self.assertEqual([], m2.keys()) |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
367 |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
368 def testMatchesCwd(self): |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
369 '''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
|
370 when not in the root directory.''' |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
371 m = parsemanifest(A_DEEPER_MANIFEST) |
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 match = matchmod.match('/', 'a/b', ['.'], default='relpath') |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
374 m2 = m.matches(match) |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
375 |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
376 self.assertEqual([ |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
377 '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
|
378 '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
|
379 'a/b/fish.py'], m2.keys()) |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
380 |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
381 def testMatchesWithPattern(self): |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
382 '''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
|
383 deeper than the specified directory.''' |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
384 m = parsemanifest(A_DEEPER_MANIFEST) |
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 match = matchmod.match('/', '', ['a/b/*/*.txt']) |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
387 m2 = m.matches(match) |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
388 |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
389 self.assertEqual( |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
390 ['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
|
391 m2.keys()) |
bcf0de51326e
manifest: add some tests for manifest.matches()
Drew Gottlieb <drgott@google.com>
parents:
24495
diff
changeset
|
392 |
24214
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
393 if __name__ == '__main__': |
a5f1bccd2996
manifest.c: new extension code to lazily parse manifests
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
394 silenttestrunner.main(__name__) |