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