annotate tests/test-import-context.t @ 43494:5d40317d42b7

dirs: reject consecutive slashes in paths We shouldn't ever see those, and the fuzzer go really excited that if it gives us a 65k string with 55k slashes in it we use a lot of RAM. This is a better fix than what I tried in D7105. It was suggested by Yuya, and I verified it does in fact cause the fuzzer to not OOM. This is a revision of D7234, but with the missing set of an error added. I added a unit test of the dirs behavior because I needed to reason more carefully about the failure modes around consecutive slashes. Differential Revision: https://phab.mercurial-scm.org/D7252
author Augie Fackler <augie@google.com>
date Thu, 17 Oct 2019 19:29:22 -0400
parents c70bdd222dcd
children 4c1b4805db57
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12825
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
1 Test applying context diffs
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
2
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
3 $ cat > writepatterns.py <<EOF
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
4 > import sys
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
5 >
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
6 > path = sys.argv[1]
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
7 > lasteol = sys.argv[2] == '1'
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
8 > patterns = sys.argv[3:]
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
9 >
36394
4bc983568016 py3: replace file() with open()
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32940
diff changeset
10 > fp = open(path, 'wb')
12825
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
11 > for i, pattern in enumerate(patterns):
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
12 > count = int(pattern[0:-1])
38365
bf953d218a91 py3: encode sys.argv to bytes using .encode()
Pulkit Goyal <7895pulkit@gmail.com>
parents: 36394
diff changeset
13 > char = pattern[-1].encode('utf8') + b'\n'
12825
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
14 > if not lasteol and i == len(patterns) - 1:
41738
c70bdd222dcd tests: bulk changes to avoid whitespace errors of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 40350
diff changeset
15 > fp.write((char * count)[:-1])
12825
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
16 > else:
41738
c70bdd222dcd tests: bulk changes to avoid whitespace errors of check-code.py
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 40350
diff changeset
17 > fp.write(char * count)
12825
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
18 > fp.close()
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
19 > EOF
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
20 $ cat > cat.py <<EOF
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
21 > import sys
40350
633da7139e4a py3: fix test-import-context.t
Matt Harbison <matt_harbison@yahoo.com>
parents: 39707
diff changeset
22 > from mercurial import pycompat
633da7139e4a py3: fix test-import-context.t
Matt Harbison <matt_harbison@yahoo.com>
parents: 39707
diff changeset
23 > from mercurial.utils import stringutil
633da7139e4a py3: fix test-import-context.t
Matt Harbison <matt_harbison@yahoo.com>
parents: 39707
diff changeset
24 > pycompat.stdout.write(b'%s\n'
633da7139e4a py3: fix test-import-context.t
Matt Harbison <matt_harbison@yahoo.com>
parents: 39707
diff changeset
25 > % stringutil.pprint(open(sys.argv[1], 'rb').read()))
12825
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
26 > EOF
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
27
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
28 Initialize the test repository
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
29
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
30 $ hg init repo
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
31 $ cd repo
39707
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 38365
diff changeset
32 $ "$PYTHON" ../writepatterns.py a 0 5A 1B 5C 1D
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 38365
diff changeset
33 $ "$PYTHON" ../writepatterns.py b 1 1A 1B
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 38365
diff changeset
34 $ "$PYTHON" ../writepatterns.py c 1 5A
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 38365
diff changeset
35 $ "$PYTHON" ../writepatterns.py d 1 5A 1B
12825
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
36 $ hg add
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
37 adding a
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
38 adding b
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
39 adding c
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
40 adding d
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
41 $ hg ci -m addfiles
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
42
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
43 Add file, missing a last end of line
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
44
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
45 $ hg import --no-commit - <<EOF
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
46 > *** /dev/null 2010-10-16 18:05:49.000000000 +0200
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
47 > --- b/newnoeol 2010-10-16 18:23:26.000000000 +0200
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
48 > ***************
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
49 > *** 0 ****
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
50 > --- 1,2 ----
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
51 > + a
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
52 > + b
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
53 > \ No newline at end of file
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
54 > *** a/a Sat Oct 16 16:35:51 2010
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
55 > --- b/a Sat Oct 16 16:35:51 2010
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
56 > ***************
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
57 > *** 3,12 ****
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
58 > A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
59 > A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
60 > A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
61 > ! B
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
62 > C
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
63 > C
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
64 > C
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
65 > C
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
66 > C
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
67 > ! D
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
68 > \ No newline at end of file
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
69 > --- 3,13 ----
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
70 > A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
71 > A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
72 > A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
73 > ! E
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
74 > C
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
75 > C
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
76 > C
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
77 > C
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
78 > C
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
79 > ! F
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
80 > ! F
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
81 >
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
82 > *** a/b 2010-10-16 18:40:38.000000000 +0200
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
83 > --- /dev/null 2010-10-16 18:05:49.000000000 +0200
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
84 > ***************
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
85 > *** 1,2 ****
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
86 > - A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
87 > - B
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
88 > --- 0 ----
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
89 > *** a/c Sat Oct 16 21:34:26 2010
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
90 > --- b/c Sat Oct 16 21:34:27 2010
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
91 > ***************
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
92 > *** 3,5 ****
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
93 > --- 3,7 ----
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
94 > A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
95 > A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
96 > A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
97 > + B
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
98 > + B
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
99 > *** a/d Sat Oct 16 21:47:20 2010
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
100 > --- b/d Sat Oct 16 21:47:22 2010
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
101 > ***************
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
102 > *** 2,6 ****
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
103 > A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
104 > A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
105 > A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
106 > - A
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
107 > - B
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
108 > --- 2,4 ----
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
109 > EOF
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
110 applying patch from stdin
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
111 $ hg st
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
112 M a
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
113 M c
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
114 M d
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
115 A newnoeol
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
116 R b
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
117
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
118 What's in a
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
119
39707
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 38365
diff changeset
120 $ "$PYTHON" ../cat.py a
12825
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
121 'A\nA\nA\nA\nA\nE\nC\nC\nC\nC\nC\nF\nF\n'
39707
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 38365
diff changeset
122 $ "$PYTHON" ../cat.py newnoeol
12825
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
123 'a\nb'
39707
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 38365
diff changeset
124 $ "$PYTHON" ../cat.py c
12825
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
125 'A\nA\nA\nA\nA\nB\nB\n'
39707
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 38365
diff changeset
126 $ "$PYTHON" ../cat.py d
12825
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
127 'A\nA\nA\nA\n'
61f48581d8ef Test applying context diffs
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
128
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 12825
diff changeset
129 $ cd ..