##// END OF EJS Templates
tests: update test-archive.t expectations for python3.9 changes...
Augie Fackler -
r45097:862025f1 default
parent child Browse files
Show More
@@ -1,626 +1,630 b''
1 #require serve
1 #require serve
2
2
3 $ hg init test
3 $ hg init test
4 $ cd test
4 $ cd test
5 $ echo foo>foo
5 $ echo foo>foo
6 $ hg commit -Am 1 -d '1 0'
6 $ hg commit -Am 1 -d '1 0'
7 adding foo
7 adding foo
8 $ echo bar>bar
8 $ echo bar>bar
9 $ hg commit -Am 2 -d '2 0'
9 $ hg commit -Am 2 -d '2 0'
10 adding bar
10 adding bar
11 $ mkdir baz
11 $ mkdir baz
12 $ echo bletch>baz/bletch
12 $ echo bletch>baz/bletch
13 $ hg commit -Am 3 -d '1000000000 0'
13 $ hg commit -Am 3 -d '1000000000 0'
14 adding baz/bletch
14 adding baz/bletch
15 $ hg init subrepo
15 $ hg init subrepo
16 $ touch subrepo/sub
16 $ touch subrepo/sub
17 $ hg -q -R subrepo ci -Am "init subrepo"
17 $ hg -q -R subrepo ci -Am "init subrepo"
18 $ echo "subrepo = subrepo" > .hgsub
18 $ echo "subrepo = subrepo" > .hgsub
19 $ hg add .hgsub
19 $ hg add .hgsub
20 $ hg ci -m "add subrepo"
20 $ hg ci -m "add subrepo"
21
21
22 $ cat >> $HGRCPATH <<EOF
22 $ cat >> $HGRCPATH <<EOF
23 > [extensions]
23 > [extensions]
24 > share =
24 > share =
25 > EOF
25 > EOF
26
26
27 hg subrepos are shared when the parent repo is shared
27 hg subrepos are shared when the parent repo is shared
28
28
29 $ cd ..
29 $ cd ..
30 $ hg share test shared1
30 $ hg share test shared1
31 updating working directory
31 updating working directory
32 sharing subrepo subrepo from $TESTTMP/test/subrepo
32 sharing subrepo subrepo from $TESTTMP/test/subrepo
33 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
33 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
34 $ cat shared1/subrepo/.hg/sharedpath
34 $ cat shared1/subrepo/.hg/sharedpath
35 $TESTTMP/test/subrepo/.hg (no-eol)
35 $TESTTMP/test/subrepo/.hg (no-eol)
36
36
37 hg subrepos are shared into existence on demand if the parent was shared
37 hg subrepos are shared into existence on demand if the parent was shared
38
38
39 $ hg clone -qr 1 test clone1
39 $ hg clone -qr 1 test clone1
40 $ hg share clone1 share2
40 $ hg share clone1 share2
41 updating working directory
41 updating working directory
42 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
42 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
43 $ hg -R clone1 -q pull
43 $ hg -R clone1 -q pull
44 $ hg -R share2 update tip
44 $ hg -R share2 update tip
45 sharing subrepo subrepo from $TESTTMP/test/subrepo
45 sharing subrepo subrepo from $TESTTMP/test/subrepo
46 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
46 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
47 $ cat share2/subrepo/.hg/sharedpath
47 $ cat share2/subrepo/.hg/sharedpath
48 $TESTTMP/test/subrepo/.hg (no-eol)
48 $TESTTMP/test/subrepo/.hg (no-eol)
49 $ echo 'mod' > share2/subrepo/sub
49 $ echo 'mod' > share2/subrepo/sub
50 $ hg -R share2 ci -Sqm 'subrepo mod'
50 $ hg -R share2 ci -Sqm 'subrepo mod'
51 $ hg -R clone1 update -C tip
51 $ hg -R clone1 update -C tip
52 cloning subrepo subrepo from $TESTTMP/test/subrepo
52 cloning subrepo subrepo from $TESTTMP/test/subrepo
53 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
53 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
54 $ find share2 | egrep 'sharedpath|00.+\.i' | sort
54 $ find share2 | egrep 'sharedpath|00.+\.i' | sort
55 share2/.hg/sharedpath
55 share2/.hg/sharedpath
56 share2/subrepo/.hg/sharedpath
56 share2/subrepo/.hg/sharedpath
57 $ hg -R share2 unshare
57 $ hg -R share2 unshare
58 unsharing subrepo 'subrepo'
58 unsharing subrepo 'subrepo'
59 $ find share2 | egrep 'sharedpath|00.+\.i' | sort
59 $ find share2 | egrep 'sharedpath|00.+\.i' | sort
60 share2/.hg/00changelog.i
60 share2/.hg/00changelog.i
61 share2/.hg/sharedpath.old
61 share2/.hg/sharedpath.old
62 share2/.hg/store/00changelog.i
62 share2/.hg/store/00changelog.i
63 share2/.hg/store/00manifest.i
63 share2/.hg/store/00manifest.i
64 share2/subrepo/.hg/00changelog.i
64 share2/subrepo/.hg/00changelog.i
65 share2/subrepo/.hg/sharedpath.old
65 share2/subrepo/.hg/sharedpath.old
66 share2/subrepo/.hg/store/00changelog.i
66 share2/subrepo/.hg/store/00changelog.i
67 share2/subrepo/.hg/store/00manifest.i
67 share2/subrepo/.hg/store/00manifest.i
68 $ hg -R share2/subrepo log -r tip -T compact
68 $ hg -R share2/subrepo log -r tip -T compact
69 1[tip] 559dcc9bfa65 1970-01-01 00:00 +0000 test
69 1[tip] 559dcc9bfa65 1970-01-01 00:00 +0000 test
70 subrepo mod
70 subrepo mod
71
71
72 $ rm -rf clone1
72 $ rm -rf clone1
73
73
74 $ hg clone -qr 1 test clone1
74 $ hg clone -qr 1 test clone1
75 $ hg share clone1 shared3
75 $ hg share clone1 shared3
76 updating working directory
76 updating working directory
77 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
77 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
78 $ hg -R clone1 -q pull
78 $ hg -R clone1 -q pull
79 $ hg -R shared3 archive --config ui.archivemeta=False -r tip -S archive
79 $ hg -R shared3 archive --config ui.archivemeta=False -r tip -S archive
80 sharing subrepo subrepo from $TESTTMP/test/subrepo
80 sharing subrepo subrepo from $TESTTMP/test/subrepo
81 $ cat shared3/subrepo/.hg/sharedpath
81 $ cat shared3/subrepo/.hg/sharedpath
82 $TESTTMP/test/subrepo/.hg (no-eol)
82 $TESTTMP/test/subrepo/.hg (no-eol)
83 $ diff -r archive test
83 $ diff -r archive test
84 Only in test: .hg
84 Only in test: .hg
85 Common subdirectories: archive/baz and test/baz (?)
85 Common subdirectories: archive/baz and test/baz (?)
86 Common subdirectories: archive/subrepo and test/subrepo (?)
86 Common subdirectories: archive/subrepo and test/subrepo (?)
87 Only in test/subrepo: .hg
87 Only in test/subrepo: .hg
88 [1]
88 [1]
89 $ rm -rf archive
89 $ rm -rf archive
90
90
91 $ cd test
91 $ cd test
92 $ echo "[web]" >> .hg/hgrc
92 $ echo "[web]" >> .hg/hgrc
93 $ echo "name = test-archive" >> .hg/hgrc
93 $ echo "name = test-archive" >> .hg/hgrc
94 $ echo "archivesubrepos = True" >> .hg/hgrc
94 $ echo "archivesubrepos = True" >> .hg/hgrc
95 $ cp .hg/hgrc .hg/hgrc-base
95 $ cp .hg/hgrc .hg/hgrc-base
96 > test_archtype() {
96 > test_archtype() {
97 > echo "allow-archive = $1" >> .hg/hgrc
97 > echo "allow-archive = $1" >> .hg/hgrc
98 > test_archtype_run "$@"
98 > test_archtype_run "$@"
99 > }
99 > }
100 > test_archtype_deprecated() {
100 > test_archtype_deprecated() {
101 > echo "allow$1 = True" >> .hg/hgrc
101 > echo "allow$1 = True" >> .hg/hgrc
102 > test_archtype_run "$@"
102 > test_archtype_run "$@"
103 > }
103 > }
104 > test_archtype_run() {
104 > test_archtype_run() {
105 > hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log \
105 > hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log \
106 > --config extensions.blackbox= --config blackbox.track=develwarn
106 > --config extensions.blackbox= --config blackbox.track=develwarn
107 > cat hg.pid >> $DAEMON_PIDS
107 > cat hg.pid >> $DAEMON_PIDS
108 > echo % $1 allowed should give 200
108 > echo % $1 allowed should give 200
109 > get-with-headers.py --bodyfile body localhost:$HGPORT "archive/tip.$2" -
109 > get-with-headers.py --bodyfile body localhost:$HGPORT "archive/tip.$2" -
110 > f --size --sha1 body
110 > f --size --sha1 body
111 > echo % $3 and $4 disallowed should both give 403
111 > echo % $3 and $4 disallowed should both give 403
112 > get-with-headers.py --bodyfile body localhost:$HGPORT "archive/tip.$3" -
112 > get-with-headers.py --bodyfile body localhost:$HGPORT "archive/tip.$3" -
113 > f --size --sha1 body
113 > f --size --sha1 body
114 > get-with-headers.py --bodyfile body localhost:$HGPORT "archive/tip.$4" -
114 > get-with-headers.py --bodyfile body localhost:$HGPORT "archive/tip.$4" -
115 > f --size --sha1 body
115 > f --size --sha1 body
116 > killdaemons.py
116 > killdaemons.py
117 > cat errors.log
117 > cat errors.log
118 > hg blackbox --config extensions.blackbox= --config blackbox.track=
118 > hg blackbox --config extensions.blackbox= --config blackbox.track=
119 > cp .hg/hgrc-base .hg/hgrc
119 > cp .hg/hgrc-base .hg/hgrc
120 > }
120 > }
121
121
122 check http return codes
122 check http return codes
123
123
124 $ test_archtype gz tar.gz tar.bz2 zip
124 $ test_archtype gz tar.gz tar.bz2 zip
125 % gz allowed should give 200
125 % gz allowed should give 200
126 200 Script output follows
126 200 Script output follows
127 content-disposition: attachment; filename=test-archive-1701ef1f1510.tar.gz
127 content-disposition: attachment; filename=test-archive-1701ef1f1510.tar.gz
128 content-type: application/x-gzip
128 content-type: application/x-gzip
129 date: $HTTP_DATE$
129 date: $HTTP_DATE$
130 etag: W/"*" (glob)
130 etag: W/"*" (glob)
131 server: testing stub value
131 server: testing stub value
132 transfer-encoding: chunked
132 transfer-encoding: chunked
133
133
134 body: size=408, sha1=8fa06531bddecc365a9f5edb0f88b65974bfe505 (no-py38 !)
134 body: size=408, sha1=8fa06531bddecc365a9f5edb0f88b65974bfe505 (no-py38 !)
135 body: size=506, sha1=70926a04cb8887d0bcccf5380488100a10222def (py38 !)
135 body: size=506, sha1=70926a04cb8887d0bcccf5380488100a10222def (py38 no-py39 !)
136 body: size=505, sha1=eb823c293bedff0df4070b854e2c5cbb06d6ec62 (py39 !)
136 % tar.bz2 and zip disallowed should both give 403
137 % tar.bz2 and zip disallowed should both give 403
137 403 Archive type not allowed: bz2
138 403 Archive type not allowed: bz2
138 content-type: text/html; charset=ascii
139 content-type: text/html; charset=ascii
139 date: $HTTP_DATE$
140 date: $HTTP_DATE$
140 etag: W/"*" (glob)
141 etag: W/"*" (glob)
141 server: testing stub value
142 server: testing stub value
142 transfer-encoding: chunked
143 transfer-encoding: chunked
143
144
144 body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
145 body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
145 403 Archive type not allowed: zip
146 403 Archive type not allowed: zip
146 content-type: text/html; charset=ascii
147 content-type: text/html; charset=ascii
147 date: $HTTP_DATE$
148 date: $HTTP_DATE$
148 etag: W/"*" (glob)
149 etag: W/"*" (glob)
149 server: testing stub value
150 server: testing stub value
150 transfer-encoding: chunked
151 transfer-encoding: chunked
151
152
152 body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
153 body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
153 $ test_archtype bz2 tar.bz2 zip tar.gz
154 $ test_archtype bz2 tar.bz2 zip tar.gz
154 % bz2 allowed should give 200
155 % bz2 allowed should give 200
155 200 Script output follows
156 200 Script output follows
156 content-disposition: attachment; filename=test-archive-1701ef1f1510.tar.bz2
157 content-disposition: attachment; filename=test-archive-1701ef1f1510.tar.bz2
157 content-type: application/x-bzip2
158 content-type: application/x-bzip2
158 date: $HTTP_DATE$
159 date: $HTTP_DATE$
159 etag: W/"*" (glob)
160 etag: W/"*" (glob)
160 server: testing stub value
161 server: testing stub value
161 transfer-encoding: chunked
162 transfer-encoding: chunked
162
163
163 body: size=426, sha1=8d87f5aba6e14f1bfea6c232985982c278b2fb0b (no-py38 !)
164 body: size=426, sha1=8d87f5aba6e14f1bfea6c232985982c278b2fb0b (no-py38 !)
164 body: size=506, sha1=1bd1f8e8d3701704bd4385038bd9c09b81c77f4e (py38 !)
165 body: size=506, sha1=1bd1f8e8d3701704bd4385038bd9c09b81c77f4e (py38 no-py39 !)
166 body: size=503, sha1=2d8ce8bb3816603b9683a1804a5a02c11224cb01 (py39 !)
165 % zip and tar.gz disallowed should both give 403
167 % zip and tar.gz disallowed should both give 403
166 403 Archive type not allowed: zip
168 403 Archive type not allowed: zip
167 content-type: text/html; charset=ascii
169 content-type: text/html; charset=ascii
168 date: $HTTP_DATE$
170 date: $HTTP_DATE$
169 etag: W/"*" (glob)
171 etag: W/"*" (glob)
170 server: testing stub value
172 server: testing stub value
171 transfer-encoding: chunked
173 transfer-encoding: chunked
172
174
173 body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
175 body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
174 403 Archive type not allowed: gz
176 403 Archive type not allowed: gz
175 content-type: text/html; charset=ascii
177 content-type: text/html; charset=ascii
176 date: $HTTP_DATE$
178 date: $HTTP_DATE$
177 etag: W/"*" (glob)
179 etag: W/"*" (glob)
178 server: testing stub value
180 server: testing stub value
179 transfer-encoding: chunked
181 transfer-encoding: chunked
180
182
181 body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
183 body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
182 $ test_archtype zip zip tar.gz tar.bz2
184 $ test_archtype zip zip tar.gz tar.bz2
183 % zip allowed should give 200
185 % zip allowed should give 200
184 200 Script output follows
186 200 Script output follows
185 content-disposition: attachment; filename=test-archive-1701ef1f1510.zip
187 content-disposition: attachment; filename=test-archive-1701ef1f1510.zip
186 content-type: application/zip
188 content-type: application/zip
187 date: $HTTP_DATE$
189 date: $HTTP_DATE$
188 etag: W/"*" (glob)
190 etag: W/"*" (glob)
189 server: testing stub value
191 server: testing stub value
190 transfer-encoding: chunked
192 transfer-encoding: chunked
191
193
192 body: size=(1377|1461|1489), sha1=(677b14d3d048778d5eb5552c14a67e6192068650|be6d3983aa13dfe930361b2569291cdedd02b537|1897e496871aa89ad685a92b936f5fa0d008b9e8) (re)
194 body: size=(1377|1461|1489), sha1=(677b14d3d048778d5eb5552c14a67e6192068650|be6d3983aa13dfe930361b2569291cdedd02b537|1897e496871aa89ad685a92b936f5fa0d008b9e8) (re)
193 % tar.gz and tar.bz2 disallowed should both give 403
195 % tar.gz and tar.bz2 disallowed should both give 403
194 403 Archive type not allowed: gz
196 403 Archive type not allowed: gz
195 content-type: text/html; charset=ascii
197 content-type: text/html; charset=ascii
196 date: $HTTP_DATE$
198 date: $HTTP_DATE$
197 etag: W/"*" (glob)
199 etag: W/"*" (glob)
198 server: testing stub value
200 server: testing stub value
199 transfer-encoding: chunked
201 transfer-encoding: chunked
200
202
201 body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
203 body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
202 403 Archive type not allowed: bz2
204 403 Archive type not allowed: bz2
203 content-type: text/html; charset=ascii
205 content-type: text/html; charset=ascii
204 date: $HTTP_DATE$
206 date: $HTTP_DATE$
205 etag: W/"*" (glob)
207 etag: W/"*" (glob)
206 server: testing stub value
208 server: testing stub value
207 transfer-encoding: chunked
209 transfer-encoding: chunked
208
210
209 body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
211 body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
210
212
211 check http return codes (with deprecated option)
213 check http return codes (with deprecated option)
212
214
213 $ test_archtype_deprecated gz tar.gz tar.bz2 zip
215 $ test_archtype_deprecated gz tar.gz tar.bz2 zip
214 % gz allowed should give 200
216 % gz allowed should give 200
215 200 Script output follows
217 200 Script output follows
216 content-disposition: attachment; filename=test-archive-1701ef1f1510.tar.gz
218 content-disposition: attachment; filename=test-archive-1701ef1f1510.tar.gz
217 content-type: application/x-gzip
219 content-type: application/x-gzip
218 date: $HTTP_DATE$
220 date: $HTTP_DATE$
219 etag: W/"*" (glob)
221 etag: W/"*" (glob)
220 server: testing stub value
222 server: testing stub value
221 transfer-encoding: chunked
223 transfer-encoding: chunked
222
224
223 body: size=408, sha1=8fa06531bddecc365a9f5edb0f88b65974bfe505 (no-py38 !)
225 body: size=408, sha1=8fa06531bddecc365a9f5edb0f88b65974bfe505 (no-py38 !)
224 body: size=506, sha1=70926a04cb8887d0bcccf5380488100a10222def (py38 !)
226 body: size=506, sha1=70926a04cb8887d0bcccf5380488100a10222def (py38 no-py39 !)
227 body: size=505, sha1=eb823c293bedff0df4070b854e2c5cbb06d6ec62 (py39 !)
225 % tar.bz2 and zip disallowed should both give 403
228 % tar.bz2 and zip disallowed should both give 403
226 403 Archive type not allowed: bz2
229 403 Archive type not allowed: bz2
227 content-type: text/html; charset=ascii
230 content-type: text/html; charset=ascii
228 date: $HTTP_DATE$
231 date: $HTTP_DATE$
229 etag: W/"*" (glob)
232 etag: W/"*" (glob)
230 server: testing stub value
233 server: testing stub value
231 transfer-encoding: chunked
234 transfer-encoding: chunked
232
235
233 body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
236 body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
234 403 Archive type not allowed: zip
237 403 Archive type not allowed: zip
235 content-type: text/html; charset=ascii
238 content-type: text/html; charset=ascii
236 date: $HTTP_DATE$
239 date: $HTTP_DATE$
237 etag: W/"*" (glob)
240 etag: W/"*" (glob)
238 server: testing stub value
241 server: testing stub value
239 transfer-encoding: chunked
242 transfer-encoding: chunked
240
243
241 body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
244 body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
242 $ test_archtype_deprecated bz2 tar.bz2 zip tar.gz
245 $ test_archtype_deprecated bz2 tar.bz2 zip tar.gz
243 % bz2 allowed should give 200
246 % bz2 allowed should give 200
244 200 Script output follows
247 200 Script output follows
245 content-disposition: attachment; filename=test-archive-1701ef1f1510.tar.bz2
248 content-disposition: attachment; filename=test-archive-1701ef1f1510.tar.bz2
246 content-type: application/x-bzip2
249 content-type: application/x-bzip2
247 date: $HTTP_DATE$
250 date: $HTTP_DATE$
248 etag: W/"*" (glob)
251 etag: W/"*" (glob)
249 server: testing stub value
252 server: testing stub value
250 transfer-encoding: chunked
253 transfer-encoding: chunked
251
254
252 body: size=426, sha1=8d87f5aba6e14f1bfea6c232985982c278b2fb0b (no-py38 !)
255 body: size=426, sha1=8d87f5aba6e14f1bfea6c232985982c278b2fb0b (no-py38 !)
253 body: size=506, sha1=1bd1f8e8d3701704bd4385038bd9c09b81c77f4e (py38 !)
256 body: size=506, sha1=1bd1f8e8d3701704bd4385038bd9c09b81c77f4e (py38 no-py39 !)
257 body: size=503, sha1=2d8ce8bb3816603b9683a1804a5a02c11224cb01 (py39 !)
254 % zip and tar.gz disallowed should both give 403
258 % zip and tar.gz disallowed should both give 403
255 403 Archive type not allowed: zip
259 403 Archive type not allowed: zip
256 content-type: text/html; charset=ascii
260 content-type: text/html; charset=ascii
257 date: $HTTP_DATE$
261 date: $HTTP_DATE$
258 etag: W/"*" (glob)
262 etag: W/"*" (glob)
259 server: testing stub value
263 server: testing stub value
260 transfer-encoding: chunked
264 transfer-encoding: chunked
261
265
262 body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
266 body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
263 403 Archive type not allowed: gz
267 403 Archive type not allowed: gz
264 content-type: text/html; charset=ascii
268 content-type: text/html; charset=ascii
265 date: $HTTP_DATE$
269 date: $HTTP_DATE$
266 etag: W/"*" (glob)
270 etag: W/"*" (glob)
267 server: testing stub value
271 server: testing stub value
268 transfer-encoding: chunked
272 transfer-encoding: chunked
269
273
270 body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
274 body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
271 $ test_archtype_deprecated zip zip tar.gz tar.bz2
275 $ test_archtype_deprecated zip zip tar.gz tar.bz2
272 % zip allowed should give 200
276 % zip allowed should give 200
273 200 Script output follows
277 200 Script output follows
274 content-disposition: attachment; filename=test-archive-1701ef1f1510.zip
278 content-disposition: attachment; filename=test-archive-1701ef1f1510.zip
275 content-type: application/zip
279 content-type: application/zip
276 date: $HTTP_DATE$
280 date: $HTTP_DATE$
277 etag: W/"*" (glob)
281 etag: W/"*" (glob)
278 server: testing stub value
282 server: testing stub value
279 transfer-encoding: chunked
283 transfer-encoding: chunked
280
284
281 body: size=(1377|1461|1489), sha1=(677b14d3d048778d5eb5552c14a67e6192068650|be6d3983aa13dfe930361b2569291cdedd02b537|1897e496871aa89ad685a92b936f5fa0d008b9e8) (re)
285 body: size=(1377|1461|1489), sha1=(677b14d3d048778d5eb5552c14a67e6192068650|be6d3983aa13dfe930361b2569291cdedd02b537|1897e496871aa89ad685a92b936f5fa0d008b9e8) (re)
282 % tar.gz and tar.bz2 disallowed should both give 403
286 % tar.gz and tar.bz2 disallowed should both give 403
283 403 Archive type not allowed: gz
287 403 Archive type not allowed: gz
284 content-type: text/html; charset=ascii
288 content-type: text/html; charset=ascii
285 date: $HTTP_DATE$
289 date: $HTTP_DATE$
286 etag: W/"*" (glob)
290 etag: W/"*" (glob)
287 server: testing stub value
291 server: testing stub value
288 transfer-encoding: chunked
292 transfer-encoding: chunked
289
293
290 body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
294 body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
291 403 Archive type not allowed: bz2
295 403 Archive type not allowed: bz2
292 content-type: text/html; charset=ascii
296 content-type: text/html; charset=ascii
293 date: $HTTP_DATE$
297 date: $HTTP_DATE$
294 etag: W/"*" (glob)
298 etag: W/"*" (glob)
295 server: testing stub value
299 server: testing stub value
296 transfer-encoding: chunked
300 transfer-encoding: chunked
297
301
298 body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
302 body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
299
303
300 $ echo "allow-archive = gz bz2 zip" >> .hg/hgrc
304 $ echo "allow-archive = gz bz2 zip" >> .hg/hgrc
301 $ hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log
305 $ hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log
302 $ cat hg.pid >> $DAEMON_PIDS
306 $ cat hg.pid >> $DAEMON_PIDS
303
307
304 check archive links' order
308 check archive links' order
305
309
306 $ get-with-headers.py localhost:$HGPORT "?revcount=1" | grep '/archive/tip.'
310 $ get-with-headers.py localhost:$HGPORT "?revcount=1" | grep '/archive/tip.'
307 <a href="/archive/tip.zip">zip</a>
311 <a href="/archive/tip.zip">zip</a>
308 <a href="/archive/tip.tar.gz">gz</a>
312 <a href="/archive/tip.tar.gz">gz</a>
309 <a href="/archive/tip.tar.bz2">bz2</a>
313 <a href="/archive/tip.tar.bz2">bz2</a>
310
314
311 invalid arch type should give 404
315 invalid arch type should give 404
312
316
313 $ get-with-headers.py localhost:$HGPORT "archive/tip.invalid" | head -n 1
317 $ get-with-headers.py localhost:$HGPORT "archive/tip.invalid" | head -n 1
314 404 Unsupported archive type: None
318 404 Unsupported archive type: None
315
319
316 $ TIP=`hg id -v | cut -f1 -d' '`
320 $ TIP=`hg id -v | cut -f1 -d' '`
317 $ QTIP=`hg id -q`
321 $ QTIP=`hg id -q`
318 $ cat > getarchive.py <<EOF
322 $ cat > getarchive.py <<EOF
319 > from __future__ import absolute_import
323 > from __future__ import absolute_import
320 > import os
324 > import os
321 > import sys
325 > import sys
322 > from mercurial import (
326 > from mercurial import (
323 > util,
327 > util,
324 > )
328 > )
325 > try:
329 > try:
326 > # Set stdout to binary mode for win32 platforms
330 > # Set stdout to binary mode for win32 platforms
327 > import msvcrt
331 > import msvcrt
328 > msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
332 > msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
329 > except ImportError:
333 > except ImportError:
330 > pass
334 > pass
331 > if len(sys.argv) <= 3:
335 > if len(sys.argv) <= 3:
332 > node, archive = sys.argv[1:]
336 > node, archive = sys.argv[1:]
333 > requeststr = 'cmd=archive;node=%s;type=%s' % (node, archive)
337 > requeststr = 'cmd=archive;node=%s;type=%s' % (node, archive)
334 > else:
338 > else:
335 > node, archive, file = sys.argv[1:]
339 > node, archive, file = sys.argv[1:]
336 > requeststr = 'cmd=archive;node=%s;type=%s;file=%s' % (node, archive, file)
340 > requeststr = 'cmd=archive;node=%s;type=%s;file=%s' % (node, archive, file)
337 > try:
341 > try:
338 > stdout = sys.stdout.buffer
342 > stdout = sys.stdout.buffer
339 > except AttributeError:
343 > except AttributeError:
340 > stdout = sys.stdout
344 > stdout = sys.stdout
341 > try:
345 > try:
342 > f = util.urlreq.urlopen('http://$LOCALIP:%s/?%s'
346 > f = util.urlreq.urlopen('http://$LOCALIP:%s/?%s'
343 > % (os.environ['HGPORT'], requeststr))
347 > % (os.environ['HGPORT'], requeststr))
344 > stdout.write(f.read())
348 > stdout.write(f.read())
345 > except util.urlerr.httperror as e:
349 > except util.urlerr.httperror as e:
346 > sys.stderr.write(str(e) + '\n')
350 > sys.stderr.write(str(e) + '\n')
347 > EOF
351 > EOF
348 $ "$PYTHON" getarchive.py "$TIP" gz | gunzip | tar tf - 2>/dev/null
352 $ "$PYTHON" getarchive.py "$TIP" gz | gunzip | tar tf - 2>/dev/null
349 test-archive-1701ef1f1510/.hg_archival.txt
353 test-archive-1701ef1f1510/.hg_archival.txt
350 test-archive-1701ef1f1510/.hgsub
354 test-archive-1701ef1f1510/.hgsub
351 test-archive-1701ef1f1510/.hgsubstate
355 test-archive-1701ef1f1510/.hgsubstate
352 test-archive-1701ef1f1510/bar
356 test-archive-1701ef1f1510/bar
353 test-archive-1701ef1f1510/baz/bletch
357 test-archive-1701ef1f1510/baz/bletch
354 test-archive-1701ef1f1510/foo
358 test-archive-1701ef1f1510/foo
355 test-archive-1701ef1f1510/subrepo/sub
359 test-archive-1701ef1f1510/subrepo/sub
356 $ "$PYTHON" getarchive.py "$TIP" bz2 | bunzip2 | tar tf - 2>/dev/null
360 $ "$PYTHON" getarchive.py "$TIP" bz2 | bunzip2 | tar tf - 2>/dev/null
357 test-archive-1701ef1f1510/.hg_archival.txt
361 test-archive-1701ef1f1510/.hg_archival.txt
358 test-archive-1701ef1f1510/.hgsub
362 test-archive-1701ef1f1510/.hgsub
359 test-archive-1701ef1f1510/.hgsubstate
363 test-archive-1701ef1f1510/.hgsubstate
360 test-archive-1701ef1f1510/bar
364 test-archive-1701ef1f1510/bar
361 test-archive-1701ef1f1510/baz/bletch
365 test-archive-1701ef1f1510/baz/bletch
362 test-archive-1701ef1f1510/foo
366 test-archive-1701ef1f1510/foo
363 test-archive-1701ef1f1510/subrepo/sub
367 test-archive-1701ef1f1510/subrepo/sub
364 $ "$PYTHON" getarchive.py "$TIP" zip > archive.zip
368 $ "$PYTHON" getarchive.py "$TIP" zip > archive.zip
365 $ unzip -t archive.zip
369 $ unzip -t archive.zip
366 Archive: archive.zip
370 Archive: archive.zip
367 testing: test-archive-1701ef1f1510/.hg_archival.txt*OK (glob)
371 testing: test-archive-1701ef1f1510/.hg_archival.txt*OK (glob)
368 testing: test-archive-1701ef1f1510/.hgsub*OK (glob)
372 testing: test-archive-1701ef1f1510/.hgsub*OK (glob)
369 testing: test-archive-1701ef1f1510/.hgsubstate*OK (glob)
373 testing: test-archive-1701ef1f1510/.hgsubstate*OK (glob)
370 testing: test-archive-1701ef1f1510/bar*OK (glob)
374 testing: test-archive-1701ef1f1510/bar*OK (glob)
371 testing: test-archive-1701ef1f1510/baz/bletch*OK (glob)
375 testing: test-archive-1701ef1f1510/baz/bletch*OK (glob)
372 testing: test-archive-1701ef1f1510/foo*OK (glob)
376 testing: test-archive-1701ef1f1510/foo*OK (glob)
373 testing: test-archive-1701ef1f1510/subrepo/sub*OK (glob)
377 testing: test-archive-1701ef1f1510/subrepo/sub*OK (glob)
374 No errors detected in compressed data of archive.zip.
378 No errors detected in compressed data of archive.zip.
375
379
376 test that we can download single directories and files
380 test that we can download single directories and files
377
381
378 $ "$PYTHON" getarchive.py "$TIP" gz baz | gunzip | tar tf - 2>/dev/null
382 $ "$PYTHON" getarchive.py "$TIP" gz baz | gunzip | tar tf - 2>/dev/null
379 test-archive-1701ef1f1510/baz/bletch
383 test-archive-1701ef1f1510/baz/bletch
380 $ "$PYTHON" getarchive.py "$TIP" gz foo | gunzip | tar tf - 2>/dev/null
384 $ "$PYTHON" getarchive.py "$TIP" gz foo | gunzip | tar tf - 2>/dev/null
381 test-archive-1701ef1f1510/foo
385 test-archive-1701ef1f1510/foo
382
386
383 test that we detect file patterns that match no files
387 test that we detect file patterns that match no files
384
388
385 $ "$PYTHON" getarchive.py "$TIP" gz foobar
389 $ "$PYTHON" getarchive.py "$TIP" gz foobar
386 HTTP Error 404: file(s) not found: foobar
390 HTTP Error 404: file(s) not found: foobar
387
391
388 test that we reject unsafe patterns
392 test that we reject unsafe patterns
389
393
390 $ "$PYTHON" getarchive.py "$TIP" gz relre:baz
394 $ "$PYTHON" getarchive.py "$TIP" gz relre:baz
391 HTTP Error 404: file(s) not found: relre:baz
395 HTTP Error 404: file(s) not found: relre:baz
392
396
393 $ killdaemons.py
397 $ killdaemons.py
394
398
395 $ hg archive -t tar test.tar
399 $ hg archive -t tar test.tar
396 $ tar tf test.tar
400 $ tar tf test.tar
397 test/.hg_archival.txt
401 test/.hg_archival.txt
398 test/.hgsub
402 test/.hgsub
399 test/.hgsubstate
403 test/.hgsubstate
400 test/bar
404 test/bar
401 test/baz/bletch
405 test/baz/bletch
402 test/foo
406 test/foo
403
407
404 $ hg archive --debug -t tbz2 -X baz test.tar.bz2 --config progress.debug=true
408 $ hg archive --debug -t tbz2 -X baz test.tar.bz2 --config progress.debug=true
405 archiving: 0/4 files (0.00%)
409 archiving: 0/4 files (0.00%)
406 archiving: .hgsub 1/4 files (25.00%)
410 archiving: .hgsub 1/4 files (25.00%)
407 archiving: .hgsubstate 2/4 files (50.00%)
411 archiving: .hgsubstate 2/4 files (50.00%)
408 archiving: bar 3/4 files (75.00%)
412 archiving: bar 3/4 files (75.00%)
409 archiving: foo 4/4 files (100.00%)
413 archiving: foo 4/4 files (100.00%)
410 $ bunzip2 -dc test.tar.bz2 | tar tf - 2>/dev/null
414 $ bunzip2 -dc test.tar.bz2 | tar tf - 2>/dev/null
411 test/.hg_archival.txt
415 test/.hg_archival.txt
412 test/.hgsub
416 test/.hgsub
413 test/.hgsubstate
417 test/.hgsubstate
414 test/bar
418 test/bar
415 test/foo
419 test/foo
416
420
417 $ hg archive -t tgz -p %b-%h test-%h.tar.gz
421 $ hg archive -t tgz -p %b-%h test-%h.tar.gz
418 $ gzip -dc test-$QTIP.tar.gz | tar tf - 2>/dev/null
422 $ gzip -dc test-$QTIP.tar.gz | tar tf - 2>/dev/null
419 test-1701ef1f1510/.hg_archival.txt
423 test-1701ef1f1510/.hg_archival.txt
420 test-1701ef1f1510/.hgsub
424 test-1701ef1f1510/.hgsub
421 test-1701ef1f1510/.hgsubstate
425 test-1701ef1f1510/.hgsubstate
422 test-1701ef1f1510/bar
426 test-1701ef1f1510/bar
423 test-1701ef1f1510/baz/bletch
427 test-1701ef1f1510/baz/bletch
424 test-1701ef1f1510/foo
428 test-1701ef1f1510/foo
425
429
426 $ hg archive autodetected_test.tar
430 $ hg archive autodetected_test.tar
427 $ tar tf autodetected_test.tar
431 $ tar tf autodetected_test.tar
428 autodetected_test/.hg_archival.txt
432 autodetected_test/.hg_archival.txt
429 autodetected_test/.hgsub
433 autodetected_test/.hgsub
430 autodetected_test/.hgsubstate
434 autodetected_test/.hgsubstate
431 autodetected_test/bar
435 autodetected_test/bar
432 autodetected_test/baz/bletch
436 autodetected_test/baz/bletch
433 autodetected_test/foo
437 autodetected_test/foo
434
438
435 The '-t' should override autodetection
439 The '-t' should override autodetection
436
440
437 $ hg archive -t tar autodetect_override_test.zip
441 $ hg archive -t tar autodetect_override_test.zip
438 $ tar tf autodetect_override_test.zip
442 $ tar tf autodetect_override_test.zip
439 autodetect_override_test.zip/.hg_archival.txt
443 autodetect_override_test.zip/.hg_archival.txt
440 autodetect_override_test.zip/.hgsub
444 autodetect_override_test.zip/.hgsub
441 autodetect_override_test.zip/.hgsubstate
445 autodetect_override_test.zip/.hgsubstate
442 autodetect_override_test.zip/bar
446 autodetect_override_test.zip/bar
443 autodetect_override_test.zip/baz/bletch
447 autodetect_override_test.zip/baz/bletch
444 autodetect_override_test.zip/foo
448 autodetect_override_test.zip/foo
445
449
446 $ for ext in tar tar.gz tgz tar.bz2 tbz2 zip; do
450 $ for ext in tar tar.gz tgz tar.bz2 tbz2 zip; do
447 > hg archive auto_test.$ext
451 > hg archive auto_test.$ext
448 > if [ -d auto_test.$ext ]; then
452 > if [ -d auto_test.$ext ]; then
449 > echo "extension $ext was not autodetected."
453 > echo "extension $ext was not autodetected."
450 > fi
454 > fi
451 > done
455 > done
452
456
453 $ cat > md5comp.py <<EOF
457 $ cat > md5comp.py <<EOF
454 > from __future__ import absolute_import, print_function
458 > from __future__ import absolute_import, print_function
455 > import hashlib
459 > import hashlib
456 > import sys
460 > import sys
457 > f1, f2 = sys.argv[1:3]
461 > f1, f2 = sys.argv[1:3]
458 > h1 = hashlib.md5(open(f1, 'rb').read()).hexdigest()
462 > h1 = hashlib.md5(open(f1, 'rb').read()).hexdigest()
459 > h2 = hashlib.md5(open(f2, 'rb').read()).hexdigest()
463 > h2 = hashlib.md5(open(f2, 'rb').read()).hexdigest()
460 > print(h1 == h2 or "md5 differ: " + repr((h1, h2)))
464 > print(h1 == h2 or "md5 differ: " + repr((h1, h2)))
461 > EOF
465 > EOF
462
466
463 archive name is stored in the archive, so create similar archives and
467 archive name is stored in the archive, so create similar archives and
464 rename them afterwards.
468 rename them afterwards.
465
469
466 $ hg archive -t tgz tip.tar.gz
470 $ hg archive -t tgz tip.tar.gz
467 $ mv tip.tar.gz tip1.tar.gz
471 $ mv tip.tar.gz tip1.tar.gz
468 $ sleep 1
472 $ sleep 1
469 $ hg archive -t tgz tip.tar.gz
473 $ hg archive -t tgz tip.tar.gz
470 $ mv tip.tar.gz tip2.tar.gz
474 $ mv tip.tar.gz tip2.tar.gz
471 $ "$PYTHON" md5comp.py tip1.tar.gz tip2.tar.gz
475 $ "$PYTHON" md5comp.py tip1.tar.gz tip2.tar.gz
472 True
476 True
473
477
474 $ hg archive -t zip -p /illegal test.zip
478 $ hg archive -t zip -p /illegal test.zip
475 abort: archive prefix contains illegal components
479 abort: archive prefix contains illegal components
476 [255]
480 [255]
477 $ hg archive -t zip -p very/../bad test.zip
481 $ hg archive -t zip -p very/../bad test.zip
478
482
479 $ hg archive --config ui.archivemeta=false -t zip -r 2 test.zip
483 $ hg archive --config ui.archivemeta=false -t zip -r 2 test.zip
480 $ unzip -t test.zip
484 $ unzip -t test.zip
481 Archive: test.zip
485 Archive: test.zip
482 testing: test/bar*OK (glob)
486 testing: test/bar*OK (glob)
483 testing: test/baz/bletch*OK (glob)
487 testing: test/baz/bletch*OK (glob)
484 testing: test/foo*OK (glob)
488 testing: test/foo*OK (glob)
485 No errors detected in compressed data of test.zip.
489 No errors detected in compressed data of test.zip.
486
490
487 $ hg archive -t tar - | tar tf - 2>/dev/null
491 $ hg archive -t tar - | tar tf - 2>/dev/null
488 test-1701ef1f1510/.hg_archival.txt
492 test-1701ef1f1510/.hg_archival.txt
489 test-1701ef1f1510/.hgsub
493 test-1701ef1f1510/.hgsub
490 test-1701ef1f1510/.hgsubstate
494 test-1701ef1f1510/.hgsubstate
491 test-1701ef1f1510/bar
495 test-1701ef1f1510/bar
492 test-1701ef1f1510/baz/bletch
496 test-1701ef1f1510/baz/bletch
493 test-1701ef1f1510/foo
497 test-1701ef1f1510/foo
494
498
495 $ hg archive -r 0 -t tar rev-%r.tar
499 $ hg archive -r 0 -t tar rev-%r.tar
496 $ [ -f rev-0.tar ]
500 $ [ -f rev-0.tar ]
497
501
498 test .hg_archival.txt
502 test .hg_archival.txt
499
503
500 $ hg archive ../test-tags
504 $ hg archive ../test-tags
501 $ cat ../test-tags/.hg_archival.txt
505 $ cat ../test-tags/.hg_archival.txt
502 repo: daa7f7c60e0a224faa4ff77ca41b2760562af264
506 repo: daa7f7c60e0a224faa4ff77ca41b2760562af264
503 node: 1701ef1f151069b8747038e93b5186bb43a47504
507 node: 1701ef1f151069b8747038e93b5186bb43a47504
504 branch: default
508 branch: default
505 latesttag: null
509 latesttag: null
506 latesttagdistance: 4
510 latesttagdistance: 4
507 changessincelatesttag: 4
511 changessincelatesttag: 4
508 $ hg tag -r 2 mytag
512 $ hg tag -r 2 mytag
509 $ hg tag -r 2 anothertag
513 $ hg tag -r 2 anothertag
510 $ hg archive -r 2 ../test-lasttag
514 $ hg archive -r 2 ../test-lasttag
511 $ cat ../test-lasttag/.hg_archival.txt
515 $ cat ../test-lasttag/.hg_archival.txt
512 repo: daa7f7c60e0a224faa4ff77ca41b2760562af264
516 repo: daa7f7c60e0a224faa4ff77ca41b2760562af264
513 node: 2c0277f05ed49d1c8328fb9ba92fba7a5ebcb33e
517 node: 2c0277f05ed49d1c8328fb9ba92fba7a5ebcb33e
514 branch: default
518 branch: default
515 tag: anothertag
519 tag: anothertag
516 tag: mytag
520 tag: mytag
517
521
518 $ hg archive -t bogus test.bogus
522 $ hg archive -t bogus test.bogus
519 abort: unknown archive type 'bogus'
523 abort: unknown archive type 'bogus'
520 [255]
524 [255]
521
525
522 enable progress extension:
526 enable progress extension:
523
527
524 $ cp $HGRCPATH $HGRCPATH.no-progress
528 $ cp $HGRCPATH $HGRCPATH.no-progress
525 $ cat >> $HGRCPATH <<EOF
529 $ cat >> $HGRCPATH <<EOF
526 > [progress]
530 > [progress]
527 > assume-tty = 1
531 > assume-tty = 1
528 > format = topic bar number
532 > format = topic bar number
529 > delay = 0
533 > delay = 0
530 > refresh = 0
534 > refresh = 0
531 > width = 60
535 > width = 60
532 > EOF
536 > EOF
533
537
534 $ hg archive ../with-progress
538 $ hg archive ../with-progress
535 \r (no-eol) (esc)
539 \r (no-eol) (esc)
536 archiving [ ] 0/6\r (no-eol) (esc)
540 archiving [ ] 0/6\r (no-eol) (esc)
537 archiving [======> ] 1/6\r (no-eol) (esc)
541 archiving [======> ] 1/6\r (no-eol) (esc)
538 archiving [=============> ] 2/6\r (no-eol) (esc)
542 archiving [=============> ] 2/6\r (no-eol) (esc)
539 archiving [====================> ] 3/6\r (no-eol) (esc)
543 archiving [====================> ] 3/6\r (no-eol) (esc)
540 archiving [===========================> ] 4/6\r (no-eol) (esc)
544 archiving [===========================> ] 4/6\r (no-eol) (esc)
541 archiving [==================================> ] 5/6\r (no-eol) (esc)
545 archiving [==================================> ] 5/6\r (no-eol) (esc)
542 archiving [==========================================>] 6/6\r (no-eol) (esc)
546 archiving [==========================================>] 6/6\r (no-eol) (esc)
543 \r (no-eol) (esc)
547 \r (no-eol) (esc)
544
548
545 cleanup after progress extension test:
549 cleanup after progress extension test:
546
550
547 $ cp $HGRCPATH.no-progress $HGRCPATH
551 $ cp $HGRCPATH.no-progress $HGRCPATH
548
552
549 server errors
553 server errors
550
554
551 $ cat errors.log
555 $ cat errors.log
552
556
553 empty repo
557 empty repo
554
558
555 $ hg init ../empty
559 $ hg init ../empty
556 $ cd ../empty
560 $ cd ../empty
557 $ hg archive ../test-empty
561 $ hg archive ../test-empty
558 abort: no working directory: please specify a revision
562 abort: no working directory: please specify a revision
559 [255]
563 [255]
560
564
561 old file -- date clamped to 1980
565 old file -- date clamped to 1980
562
566
563 $ touch -t 197501010000 old
567 $ touch -t 197501010000 old
564 $ hg add old
568 $ hg add old
565 $ hg commit -m old
569 $ hg commit -m old
566 $ hg archive ../old.zip
570 $ hg archive ../old.zip
567 $ unzip -l ../old.zip | grep -v -- ----- | egrep -v files$
571 $ unzip -l ../old.zip | grep -v -- ----- | egrep -v files$
568 Archive: ../old.zip
572 Archive: ../old.zip
569 \s*Length.* (re)
573 \s*Length.* (re)
570 *172*80*00:00*old/.hg_archival.txt (glob)
574 *172*80*00:00*old/.hg_archival.txt (glob)
571 *0*80*00:00*old/old (glob)
575 *0*80*00:00*old/old (glob)
572
576
573 test xz support only available in Python 3.4
577 test xz support only available in Python 3.4
574
578
575 #if py3
579 #if py3
576 $ hg archive ../archive.txz
580 $ hg archive ../archive.txz
577 $ which xz >/dev/null && xz -l ../archive.txz | head -n1 || true
581 $ which xz >/dev/null && xz -l ../archive.txz | head -n1 || true
578 Strms Blocks Compressed Uncompressed Ratio Check Filename (xz !)
582 Strms Blocks Compressed Uncompressed Ratio Check Filename (xz !)
579 $ rm -f ../archive.txz
583 $ rm -f ../archive.txz
580 #else
584 #else
581 $ hg archive ../archive.txz
585 $ hg archive ../archive.txz
582 abort: xz compression is only available in Python 3
586 abort: xz compression is only available in Python 3
583 [255]
587 [255]
584 #endif
588 #endif
585
589
586 show an error when a provided pattern matches no files
590 show an error when a provided pattern matches no files
587
591
588 $ hg archive -I file_that_does_not_exist.foo ../empty.zip
592 $ hg archive -I file_that_does_not_exist.foo ../empty.zip
589 abort: no files match the archive pattern
593 abort: no files match the archive pattern
590 [255]
594 [255]
591
595
592 $ hg archive -X * ../empty.zip
596 $ hg archive -X * ../empty.zip
593 abort: no files match the archive pattern
597 abort: no files match the archive pattern
594 [255]
598 [255]
595
599
596 $ cd ..
600 $ cd ..
597
601
598 issue3600: check whether "hg archive" can create archive files which
602 issue3600: check whether "hg archive" can create archive files which
599 are extracted with expected timestamp, even though TZ is not
603 are extracted with expected timestamp, even though TZ is not
600 configured as GMT.
604 configured as GMT.
601
605
602 $ mkdir issue3600
606 $ mkdir issue3600
603 $ cd issue3600
607 $ cd issue3600
604
608
605 $ hg init repo
609 $ hg init repo
606 $ echo a > repo/a
610 $ echo a > repo/a
607 $ hg -R repo add repo/a
611 $ hg -R repo add repo/a
608 $ hg -R repo commit -m '#0' -d '456789012 21600'
612 $ hg -R repo commit -m '#0' -d '456789012 21600'
609 $ cat > show_mtime.py <<EOF
613 $ cat > show_mtime.py <<EOF
610 > from __future__ import absolute_import, print_function
614 > from __future__ import absolute_import, print_function
611 > import os
615 > import os
612 > import sys
616 > import sys
613 > print(int(os.stat(sys.argv[1]).st_mtime))
617 > print(int(os.stat(sys.argv[1]).st_mtime))
614 > EOF
618 > EOF
615
619
616 $ hg -R repo archive --prefix tar-extracted archive.tar
620 $ hg -R repo archive --prefix tar-extracted archive.tar
617 $ (TZ=UTC-3; export TZ; tar xf archive.tar)
621 $ (TZ=UTC-3; export TZ; tar xf archive.tar)
618 $ "$PYTHON" show_mtime.py tar-extracted/a
622 $ "$PYTHON" show_mtime.py tar-extracted/a
619 456789012
623 456789012
620
624
621 $ hg -R repo archive --prefix zip-extracted archive.zip
625 $ hg -R repo archive --prefix zip-extracted archive.zip
622 $ (TZ=UTC-3; export TZ; unzip -q archive.zip)
626 $ (TZ=UTC-3; export TZ; unzip -q archive.zip)
623 $ "$PYTHON" show_mtime.py zip-extracted/a
627 $ "$PYTHON" show_mtime.py zip-extracted/a
624 456789012
628 456789012
625
629
626 $ cd ..
630 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now