##// END OF EJS Templates
tests: fix inline extension in test-fncache.t for Python 3...
Augie Fackler -
r40298:c8f16406 default
parent child Browse files
Show More
@@ -1,628 +1,629
1 1 test-abort-checkin.t
2 2 test-absorb-filefixupstate.py
3 3 test-absorb-phase.t
4 4 test-absorb-rename.t
5 5 test-absorb-strip.t
6 6 test-absorb.t
7 7 test-add.t
8 8 test-addremove-similar.t
9 9 test-addremove.t
10 10 test-alias.t
11 11 test-amend-subrepo.t
12 12 test-amend.t
13 13 test-ancestor.py
14 14 test-annotate.py
15 15 test-annotate.t
16 16 test-archive-symlinks.t
17 17 test-archive.t
18 18 test-atomictempfile.py
19 19 test-audit-path.t
20 20 test-audit-subrepo.t
21 21 test-automv.t
22 22 test-backout.t
23 23 test-backwards-remove.t
24 24 test-bad-extension.t
25 25 test-bad-pull.t
26 26 test-basic.t
27 27 test-bdiff.py
28 28 test-bheads.t
29 29 test-bisect.t
30 30 test-bisect2.t
31 31 test-bisect3.t
32 32 test-blackbox.t
33 33 test-bookmarks-current.t
34 34 test-bookmarks-merge.t
35 35 test-bookmarks-pushpull.t
36 36 test-bookmarks-rebase.t
37 37 test-bookmarks-strip.t
38 38 test-bookmarks.t
39 39 test-branch-change.t
40 40 test-branch-option.t
41 41 test-branch-tag-confict.t
42 42 test-branches.t
43 43 test-bundle-phases.t
44 44 test-bundle-r.t
45 45 test-bundle-type.t
46 46 test-bundle-vs-outgoing.t
47 47 test-bundle.t
48 48 test-bundle2-exchange.t
49 49 test-bundle2-format.t
50 50 test-bundle2-multiple-changegroups.t
51 51 test-bundle2-pushback.t
52 52 test-bundle2-remote-changegroup.t
53 53 test-cache-abuse.t
54 54 test-cappedreader.py
55 55 test-casecollision.t
56 56 test-cat.t
57 57 test-cbor.py
58 58 test-censor.t
59 59 test-changelog-exec.t
60 60 test-check-code.t
61 61 test-check-commit.t
62 62 test-check-config.py
63 63 test-check-config.t
64 64 test-check-execute.t
65 65 test-check-interfaces.py
66 66 test-check-module-imports.t
67 67 test-check-py3-compat.t
68 68 test-check-pyflakes.t
69 69 test-check-pylint.t
70 70 test-check-shbang.t
71 71 test-children.t
72 72 test-churn.t
73 73 test-clone-cgi.t
74 74 test-clone-pull-corruption.t
75 75 test-clone-r.t
76 76 test-clone-uncompressed.t
77 77 test-clone-update-order.t
78 78 test-clone.t
79 79 test-clonebundles.t
80 80 test-close-head.t
81 81 test-commit-amend.t
82 82 test-commit-interactive.t
83 83 test-commit-multiple.t
84 84 test-commit-unresolved.t
85 85 test-commit.t
86 86 test-committer.t
87 87 test-completion.t
88 88 test-config-env.py
89 89 test-config.t
90 90 test-conflict.t
91 91 test-confused-revert.t
92 92 test-context.py
93 93 test-contrib-check-code.t
94 94 test-contrib-check-commit.t
95 95 test-contrib-dumprevlog.t
96 96 test-contrib-perf.t
97 97 test-contrib-relnotes.t
98 98 test-contrib-testparseutil.t
99 99 test-contrib.t
100 100 test-convert-authormap.t
101 101 test-convert-clonebranches.t
102 102 test-convert-cvs-branch.t
103 103 test-convert-cvs-detectmerge.t
104 104 test-convert-cvs-synthetic.t
105 105 test-convert-cvs.t
106 106 test-convert-cvsnt-mergepoints.t
107 107 test-convert-datesort.t
108 108 test-convert-filemap.t
109 109 test-convert-hg-sink.t
110 110 test-convert-hg-source.t
111 111 test-convert-hg-startrev.t
112 112 test-convert-splicemap.t
113 113 test-convert-tagsbranch-topology.t
114 114 test-copy-move-merge.t
115 115 test-copy.t
116 116 test-copytrace-heuristics.t
117 117 test-debugbuilddag.t
118 118 test-debugbundle.t
119 119 test-debugcommands.t
120 120 test-debugextensions.t
121 121 test-debugindexdot.t
122 122 test-debugrename.t
123 123 test-default-push.t
124 124 test-diff-antipatience.t
125 125 test-diff-binary-file.t
126 126 test-diff-change.t
127 127 test-diff-copy-depth.t
128 128 test-diff-hashes.t
129 129 test-diff-ignore-whitespace.t
130 130 test-diff-indent-heuristic.t
131 131 test-diff-issue2761.t
132 132 test-diff-newlines.t
133 133 test-diff-reverse.t
134 134 test-diff-subdir.t
135 135 test-diff-unified.t
136 136 test-diff-upgrade.t
137 137 test-diffdir.t
138 138 test-diffstat.t
139 139 test-directaccess.t
140 140 test-dirstate-backup.t
141 141 test-dirstate-nonnormalset.t
142 142 test-dirstate.t
143 143 test-dispatch.py
144 144 test-doctest.py
145 145 test-double-merge.t
146 146 test-drawdag.t
147 147 test-duplicateoptions.py
148 148 test-editor-filename.t
149 149 test-empty-dir.t
150 150 test-empty-file.t
151 151 test-empty-group.t
152 152 test-empty.t
153 153 test-encode.t
154 154 test-encoding-func.py
155 155 test-encoding.t
156 156 test-eol-add.t
157 157 test-eol-clone.t
158 158 test-eol-hook.t
159 159 test-eol-patch.t
160 160 test-eol-tag.t
161 161 test-eol-update.t
162 162 test-eol.t
163 163 test-eolfilename.t
164 164 test-excessive-merge.t
165 165 test-exchange-obsmarkers-case-A1.t
166 166 test-exchange-obsmarkers-case-A2.t
167 167 test-exchange-obsmarkers-case-A3.t
168 168 test-exchange-obsmarkers-case-A4.t
169 169 test-exchange-obsmarkers-case-A5.t
170 170 test-exchange-obsmarkers-case-A6.t
171 171 test-exchange-obsmarkers-case-A7.t
172 172 test-exchange-obsmarkers-case-B1.t
173 173 test-exchange-obsmarkers-case-B2.t
174 174 test-exchange-obsmarkers-case-B3.t
175 175 test-exchange-obsmarkers-case-B4.t
176 176 test-exchange-obsmarkers-case-B5.t
177 177 test-exchange-obsmarkers-case-B6.t
178 178 test-exchange-obsmarkers-case-B7.t
179 179 test-exchange-obsmarkers-case-C1.t
180 180 test-exchange-obsmarkers-case-C2.t
181 181 test-exchange-obsmarkers-case-C3.t
182 182 test-exchange-obsmarkers-case-C4.t
183 183 test-exchange-obsmarkers-case-D1.t
184 184 test-exchange-obsmarkers-case-D2.t
185 185 test-exchange-obsmarkers-case-D3.t
186 186 test-exchange-obsmarkers-case-D4.t
187 187 test-execute-bit.t
188 188 test-export.t
189 189 test-extdata.t
190 190 test-extdiff.t
191 191 test-extensions-afterloaded.t
192 192 test-extensions-wrapfunction.py
193 193 test-extra-filelog-entry.t
194 194 test-fetch.t
195 195 test-filebranch.t
196 196 test-filecache.py
197 197 test-filelog.py
198 198 test-fileset-generated.t
199 199 test-fileset.t
200 200 test-fix-topology.t
201 201 test-fix.t
202 202 test-flags.t
203 test-fncache.t
203 204 test-generaldelta.t
204 205 test-getbundle.t
205 206 test-git-export.t
206 207 test-globalopts.t
207 208 test-glog-beautifygraph.t
208 209 test-glog-topological.t
209 210 test-glog.t
210 211 test-gpg.t
211 212 test-graft.t
212 213 test-grep.t
213 214 test-hg-parseurl.py
214 215 test-hghave.t
215 216 test-hgignore.t
216 217 test-hgk.t
217 218 test-hgrc.t
218 219 test-hgweb-annotate-whitespace.t
219 220 test-hgweb-bundle.t
220 221 test-hgweb-csp.t
221 222 test-hgweb-descend-empties.t
222 223 test-hgweb-diffs.t
223 224 test-hgweb-empty.t
224 225 test-hgweb-filelog.t
225 226 test-hgweb-non-interactive.t
226 227 test-hgweb-raw.t
227 228 test-hgweb-removed.t
228 229 test-hgweb.t
229 230 test-hgwebdir-paths.py
230 231 test-hgwebdirsym.t
231 232 test-histedit-arguments.t
232 233 test-histedit-base.t
233 234 test-histedit-bookmark-motion.t
234 235 test-histedit-commute.t
235 236 test-histedit-drop.t
236 237 test-histedit-edit.t
237 238 test-histedit-fold-non-commute.t
238 239 test-histedit-fold.t
239 240 test-histedit-no-backup.t
240 241 test-histedit-no-change.t
241 242 test-histedit-non-commute-abort.t
242 243 test-histedit-non-commute.t
243 244 test-histedit-obsolete.t
244 245 test-histedit-outgoing.t
245 246 test-histedit-templates.t
246 247 test-http-branchmap.t
247 248 test-http-bundle1.t
248 249 test-http-clone-r.t
249 250 test-http-permissions.t
250 251 test-http.t
251 252 test-hybridencode.py
252 253 test-i18n.t
253 254 test-identify.t
254 255 test-impexp-branch.t
255 256 test-import-bypass.t
256 257 test-import-eol.t
257 258 test-import-merge.t
258 259 test-import-unknown.t
259 260 test-import.t
260 261 test-imports-checker.t
261 262 test-incoming-outgoing.t
262 263 test-infinitepush-bundlestore.t
263 264 test-infinitepush-ci.t
264 265 test-infinitepush.t
265 266 test-inherit-mode.t
266 267 test-init.t
267 268 test-issue1089.t
268 269 test-issue1102.t
269 270 test-issue1175.t
270 271 test-issue1306.t
271 272 test-issue1438.t
272 273 test-issue1502.t
273 274 test-issue1802.t
274 275 test-issue1877.t
275 276 test-issue1993.t
276 277 test-issue2137.t
277 278 test-issue3084.t
278 279 test-issue4074.t
279 280 test-issue522.t
280 281 test-issue586.t
281 282 test-issue5979.t
282 283 test-issue612.t
283 284 test-issue619.t
284 285 test-issue660.t
285 286 test-issue672.t
286 287 test-issue842.t
287 288 test-journal-exists.t
288 289 test-journal-share.t
289 290 test-journal.t
290 291 test-known.t
291 292 test-largefiles-cache.t
292 293 test-largefiles-misc.t
293 294 test-largefiles-small-disk.t
294 295 test-largefiles-update.t
295 296 test-largefiles.t
296 297 test-lfs-largefiles.t
297 298 test-lfs-pointer.py
298 299 test-linelog.py
299 300 test-linerange.py
300 301 test-locate.t
301 302 test-lock-badness.t
302 303 test-log-linerange.t
303 304 test-log.t
304 305 test-logexchange.t
305 306 test-lrucachedict.py
306 307 test-mactext.t
307 308 test-mailmap.t
308 309 test-manifest-merging.t
309 310 test-manifest.py
310 311 test-manifest.t
311 312 test-match.py
312 313 test-mdiff.py
313 314 test-merge-changedelete.t
314 315 test-merge-closedheads.t
315 316 test-merge-commit.t
316 317 test-merge-criss-cross.t
317 318 test-merge-default.t
318 319 test-merge-force.t
319 320 test-merge-halt.t
320 321 test-merge-internal-tools-pattern.t
321 322 test-merge-local.t
322 323 test-merge-no-file-change.t
323 324 test-merge-remove.t
324 325 test-merge-revert.t
325 326 test-merge-revert2.t
326 327 test-merge-subrepos.t
327 328 test-merge-symlinks.t
328 329 test-merge-tools.t
329 330 test-merge-types.t
330 331 test-merge1.t
331 332 test-merge10.t
332 333 test-merge2.t
333 334 test-merge4.t
334 335 test-merge5.t
335 336 test-merge6.t
336 337 test-merge7.t
337 338 test-merge8.t
338 339 test-merge9.t
339 340 test-minifileset.py
340 341 test-minirst.py
341 342 test-mq-git.t
342 343 test-mq-guards.t
343 344 test-mq-header-date.t
344 345 test-mq-header-from.t
345 346 test-mq-merge.t
346 347 test-mq-pull-from-bundle.t
347 348 test-mq-qclone-http.t
348 349 test-mq-qdelete.t
349 350 test-mq-qdiff.t
350 351 test-mq-qfold.t
351 352 test-mq-qgoto.t
352 353 test-mq-qimport-fail-cleanup.t
353 354 test-mq-qnew.t
354 355 test-mq-qpush-exact.t
355 356 test-mq-qpush-fail.t
356 357 test-mq-qqueue.t
357 358 test-mq-qrefresh-interactive.t
358 359 test-mq-qrefresh-replace-log-message.t
359 360 test-mq-qrefresh.t
360 361 test-mq-qrename.t
361 362 test-mq-qsave.t
362 363 test-mq-safety.t
363 364 test-mq-subrepo.t
364 365 test-mq-symlinks.t
365 366 test-mq.t
366 367 test-mv-cp-st-diff.t
367 368 test-narrow-acl.t
368 369 test-narrow-archive.t
369 370 test-narrow-clone-no-ellipsis.t
370 371 test-narrow-clone-non-narrow-server.t
371 372 test-narrow-clone-nonlinear.t
372 373 test-narrow-clone.t
373 374 test-narrow-commit.t
374 375 test-narrow-copies.t
375 376 test-narrow-debugcommands.t
376 377 test-narrow-debugrebuilddirstate.t
377 378 test-narrow-exchange-merges.t
378 379 test-narrow-exchange.t
379 380 test-narrow-expanddirstate.t
380 381 test-narrow-merge.t
381 382 test-narrow-patch.t
382 383 test-narrow-patterns.t
383 384 test-narrow-pull.t
384 385 test-narrow-rebase.t
385 386 test-narrow-shallow-merges.t
386 387 test-narrow-shallow.t
387 388 test-narrow-strip.t
388 389 test-narrow-trackedcmd.t
389 390 test-narrow-update.t
390 391 test-narrow-widen-no-ellipsis.t
391 392 test-narrow-widen.t
392 393 test-narrow.t
393 394 test-nested-repo.t
394 395 test-newbranch.t
395 396 test-newercgi.t
396 397 test-nointerrupt.t
397 398 test-obshistory.t
398 399 test-obsmarker-template.t
399 400 test-obsmarkers-effectflag.t
400 401 test-obsolete-bounds-checking.t
401 402 test-obsolete-bundle-strip.t
402 403 test-obsolete-changeset-exchange.t
403 404 test-obsolete-checkheads.t
404 405 test-obsolete-distributed.t
405 406 test-obsolete-divergent.t
406 407 test-obsolete-tag-cache.t
407 408 test-obsolete.t
408 409 test-origbackup-conflict.t
409 410 test-pager-legacy.t
410 411 test-pager.t
411 412 test-parents.t
412 413 test-parse-date.t
413 414 test-parseindex2.py
414 415 test-patch-offset.t
415 416 test-patch.t
416 417 test-patchbomb-bookmark.t
417 418 test-patchbomb-tls.t
418 419 test-patchbomb.t
419 420 test-pathconflicts-basic.t
420 421 test-pathconflicts-merge.t
421 422 test-pathconflicts-update.t
422 423 test-pathencode.py
423 424 test-pending.t
424 425 test-permissions.t
425 426 test-phases-exchange.t
426 427 test-phases.t
427 428 test-profile.t
428 429 test-progress.t
429 430 test-pull-branch.t
430 431 test-pull-http.t
431 432 test-pull-permission.t
432 433 test-pull-pull-corruption.t
433 434 test-pull-r.t
434 435 test-pull-update.t
435 436 test-pull.t
436 437 test-purge.t
437 438 test-push-cgi.t
438 439 test-push-checkheads-partial-C1.t
439 440 test-push-checkheads-partial-C2.t
440 441 test-push-checkheads-partial-C3.t
441 442 test-push-checkheads-partial-C4.t
442 443 test-push-checkheads-pruned-B1.t
443 444 test-push-checkheads-pruned-B2.t
444 445 test-push-checkheads-pruned-B3.t
445 446 test-push-checkheads-pruned-B4.t
446 447 test-push-checkheads-pruned-B5.t
447 448 test-push-checkheads-pruned-B6.t
448 449 test-push-checkheads-pruned-B7.t
449 450 test-push-checkheads-pruned-B8.t
450 451 test-push-checkheads-superceed-A1.t
451 452 test-push-checkheads-superceed-A2.t
452 453 test-push-checkheads-superceed-A3.t
453 454 test-push-checkheads-superceed-A4.t
454 455 test-push-checkheads-superceed-A5.t
455 456 test-push-checkheads-superceed-A6.t
456 457 test-push-checkheads-superceed-A7.t
457 458 test-push-checkheads-superceed-A8.t
458 459 test-push-checkheads-unpushed-D1.t
459 460 test-push-checkheads-unpushed-D2.t
460 461 test-push-checkheads-unpushed-D3.t
461 462 test-push-checkheads-unpushed-D4.t
462 463 test-push-checkheads-unpushed-D5.t
463 464 test-push-checkheads-unpushed-D6.t
464 465 test-push-checkheads-unpushed-D7.t
465 466 test-push-http.t
466 467 test-push-warn.t
467 468 test-push.t
468 469 test-pushvars.t
469 470 test-qrecord.t
470 471 test-rebase-abort.t
471 472 test-rebase-backup.t
472 473 test-rebase-base-flag.t
473 474 test-rebase-bookmarks.t
474 475 test-rebase-brute-force.t
475 476 test-rebase-cache.t
476 477 test-rebase-check-restore.t
477 478 test-rebase-collapse.t
478 479 test-rebase-conflicts.t
479 480 test-rebase-dest.t
480 481 test-rebase-detach.t
481 482 test-rebase-emptycommit.t
482 483 test-rebase-inmemory.t
483 484 test-rebase-interruptions.t
484 485 test-rebase-issue-noparam-single-rev.t
485 486 test-rebase-legacy.t
486 487 test-rebase-mq-skip.t
487 488 test-rebase-mq.t
488 489 test-rebase-named-branches.t
489 490 test-rebase-newancestor.t
490 491 test-rebase-obsolete.t
491 492 test-rebase-parameters.t
492 493 test-rebase-partial.t
493 494 test-rebase-pull.t
494 495 test-rebase-rename.t
495 496 test-rebase-scenario-global.t
496 497 test-rebase-templates.t
497 498 test-rebase-transaction.t
498 499 test-rebuildstate.t
499 500 test-record.t
500 501 test-releasenotes-formatting.t
501 502 test-releasenotes-merging.t
502 503 test-releasenotes-parsing.t
503 504 test-relink.t
504 505 test-remove.t
505 506 test-removeemptydirs.t
506 507 test-rename-after-merge.t
507 508 test-rename-dir-merge.t
508 509 test-rename-merge1.t
509 510 test-rename-merge2.t
510 511 test-rename.t
511 512 test-repair-strip.t
512 513 test-repo-compengines.t
513 514 test-requires.t
514 515 test-resolve.t
515 516 test-revert-flags.t
516 517 test-revert-interactive.t
517 518 test-revert-unknown.t
518 519 test-revert.t
519 520 test-revisions.t
520 521 test-revlog-ancestry.py
521 522 test-revlog-group-emptyiter.t
522 523 test-revlog-mmapindex.t
523 524 test-revlog-packentry.t
524 525 test-revlog-raw.py
525 526 test-revlog-v2.t
526 527 test-revset-dirstate-parents.t
527 528 test-revset-legacy-lookup.t
528 529 test-revset-outgoing.t
529 530 test-rollback.t
530 531 test-run-tests.py
531 532 test-run-tests.t
532 533 test-schemes.t
533 534 test-serve.t
534 535 test-setdiscovery.t
535 536 test-share.t
536 537 test-shelve.t
537 538 test-show-stack.t
538 539 test-show-work.t
539 540 test-show.t
540 541 test-simple-update.t
541 542 test-simplekeyvaluefile.py
542 543 test-simplemerge.py
543 544 test-single-head.t
544 545 test-sparse-clear.t
545 546 test-sparse-clone.t
546 547 test-sparse-import.t
547 548 test-sparse-merges.t
548 549 test-sparse-profiles.t
549 550 test-sparse-requirement.t
550 551 test-sparse-verbose-json.t
551 552 test-sparse.t
552 553 test-split.t
553 554 test-ssh-bundle1.t
554 555 test-ssh-clone-r.t
555 556 test-ssh-proto-unbundle.t
556 557 test-ssh-proto.t
557 558 test-ssh-repoerror.t
558 559 test-ssh.t
559 560 test-sshserver.py
560 561 test-stack.t
561 562 test-status-color.t
562 563 test-status-inprocess.py
563 564 test-status-rev.t
564 565 test-status-terse.t
565 566 test-storage.py
566 567 test-stream-bundle-v2.t
567 568 test-strict.t
568 569 test-strip-cross.t
569 570 test-strip.t
570 571 test-subrepo-deep-nested-change.t
571 572 test-subrepo-missing.t
572 573 test-subrepo-paths.t
573 574 test-subrepo-recursion.t
574 575 test-subrepo-relative-path.t
575 576 test-subrepo.t
576 577 test-symlink-os-yes-fs-no.py
577 578 test-symlink-placeholder.t
578 579 test-symlinks.t
579 580 test-tag.t
580 581 test-tags.t
581 582 test-template-basic.t
582 583 test-template-functions.t
583 584 test-template-keywords.t
584 585 test-template-map.t
585 586 test-tools.t
586 587 test-transplant.t
587 588 test-treemanifest.t
588 589 test-ui-color.py
589 590 test-ui-config.py
590 591 test-ui-verbosity.py
591 592 test-unamend.t
592 593 test-unbundlehash.t
593 594 test-uncommit.t
594 595 test-unified-test.t
595 596 test-unionrepo.t
596 597 test-unrelated-pull.t
597 598 test-up-local-change.t
598 599 test-update-branches.t
599 600 test-update-dest.t
600 601 test-update-issue1456.t
601 602 test-update-names.t
602 603 test-update-reverse.t
603 604 test-upgrade-repo.t
604 605 test-url-download.t
605 606 test-url-rev.t
606 607 test-url.py
607 608 test-username-newline.t
608 609 test-util.py
609 610 test-verify.t
610 611 test-walk.t
611 612 test-walkrepo.py
612 613 test-websub.t
613 614 test-win32text.t
614 615 test-wireproto-clientreactor.py
615 616 test-wireproto-command-branchmap.t
616 617 test-wireproto-command-changesetdata.t
617 618 test-wireproto-command-filedata.t
618 619 test-wireproto-command-filesdata.t
619 620 test-wireproto-command-heads.t
620 621 test-wireproto-command-listkeys.t
621 622 test-wireproto-command-lookup.t
622 623 test-wireproto-command-manifestdata.t
623 624 test-wireproto-command-pushkey.t
624 625 test-wireproto-framing.py
625 626 test-wireproto-serverreactor.py
626 627 test-wireproto.py
627 628 test-wsgirequest.py
628 629 test-xdg.t
@@ -1,510 +1,510
1 1 #require repofncache
2 2
3 3 Init repo1:
4 4
5 5 $ hg init repo1
6 6 $ cd repo1
7 7 $ echo "some text" > a
8 8 $ hg add
9 9 adding a
10 10 $ hg ci -m first
11 11 $ cat .hg/store/fncache | sort
12 12 data/a.i
13 13
14 14 Testing a.i/b:
15 15
16 16 $ mkdir a.i
17 17 $ echo "some other text" > a.i/b
18 18 $ hg add
19 19 adding a.i/b
20 20 $ hg ci -m second
21 21 $ cat .hg/store/fncache | sort
22 22 data/a.i
23 23 data/a.i.hg/b.i
24 24
25 25 Testing a.i.hg/c:
26 26
27 27 $ mkdir a.i.hg
28 28 $ echo "yet another text" > a.i.hg/c
29 29 $ hg add
30 30 adding a.i.hg/c
31 31 $ hg ci -m third
32 32 $ cat .hg/store/fncache | sort
33 33 data/a.i
34 34 data/a.i.hg.hg/c.i
35 35 data/a.i.hg/b.i
36 36
37 37 Testing verify:
38 38
39 39 $ hg verify
40 40 checking changesets
41 41 checking manifests
42 42 crosschecking files in changesets and manifests
43 43 checking files
44 44 checked 3 changesets with 3 changes to 3 files
45 45
46 46 $ rm .hg/store/fncache
47 47
48 48 $ hg verify
49 49 checking changesets
50 50 checking manifests
51 51 crosschecking files in changesets and manifests
52 52 checking files
53 53 warning: revlog 'data/a.i' not in fncache!
54 54 warning: revlog 'data/a.i.hg/c.i' not in fncache!
55 55 warning: revlog 'data/a.i/b.i' not in fncache!
56 56 checked 3 changesets with 3 changes to 3 files
57 57 3 warnings encountered!
58 58 hint: run "hg debugrebuildfncache" to recover from corrupt fncache
59 59
60 60 Follow the hint to make sure it works
61 61
62 62 $ hg debugrebuildfncache
63 63 adding data/a.i
64 64 adding data/a.i.hg/c.i
65 65 adding data/a.i/b.i
66 66 3 items added, 0 removed from fncache
67 67
68 68 $ hg verify
69 69 checking changesets
70 70 checking manifests
71 71 crosschecking files in changesets and manifests
72 72 checking files
73 73 checked 3 changesets with 3 changes to 3 files
74 74
75 75 $ cd ..
76 76
77 77 Non store repo:
78 78
79 79 $ hg --config format.usestore=False init foo
80 80 $ cd foo
81 81 $ mkdir tst.d
82 82 $ echo foo > tst.d/foo
83 83 $ hg ci -Amfoo
84 84 adding tst.d/foo
85 85 $ find .hg | sort
86 86 .hg
87 87 .hg/00changelog.i
88 88 .hg/00manifest.i
89 89 .hg/cache
90 90 .hg/cache/branch2-served
91 91 .hg/cache/manifestfulltextcache (reporevlogstore !)
92 92 .hg/cache/rbc-names-v1
93 93 .hg/cache/rbc-revs-v1
94 94 .hg/data
95 95 .hg/data/tst.d.hg
96 96 .hg/data/tst.d.hg/foo.i
97 97 .hg/dirstate
98 98 .hg/fsmonitor.state (fsmonitor !)
99 99 .hg/last-message.txt
100 100 .hg/phaseroots
101 101 .hg/requires
102 102 .hg/undo
103 103 .hg/undo.backup.dirstate
104 104 .hg/undo.backupfiles
105 105 .hg/undo.bookmarks
106 106 .hg/undo.branch
107 107 .hg/undo.desc
108 108 .hg/undo.dirstate
109 109 .hg/undo.phaseroots
110 110 $ cd ..
111 111
112 112 Non fncache repo:
113 113
114 114 $ hg --config format.usefncache=False init bar
115 115 $ cd bar
116 116 $ mkdir tst.d
117 117 $ echo foo > tst.d/Foo
118 118 $ hg ci -Amfoo
119 119 adding tst.d/Foo
120 120 $ find .hg | sort
121 121 .hg
122 122 .hg/00changelog.i
123 123 .hg/cache
124 124 .hg/cache/branch2-served
125 125 .hg/cache/manifestfulltextcache (reporevlogstore !)
126 126 .hg/cache/rbc-names-v1
127 127 .hg/cache/rbc-revs-v1
128 128 .hg/dirstate
129 129 .hg/fsmonitor.state (fsmonitor !)
130 130 .hg/last-message.txt
131 131 .hg/requires
132 132 .hg/store
133 133 .hg/store/00changelog.i
134 134 .hg/store/00manifest.i
135 135 .hg/store/data
136 136 .hg/store/data/tst.d.hg
137 137 .hg/store/data/tst.d.hg/_foo.i
138 138 .hg/store/phaseroots
139 139 .hg/store/undo
140 140 .hg/store/undo.backupfiles
141 141 .hg/store/undo.phaseroots
142 142 .hg/undo.backup.dirstate
143 143 .hg/undo.bookmarks
144 144 .hg/undo.branch
145 145 .hg/undo.desc
146 146 .hg/undo.dirstate
147 147 $ cd ..
148 148
149 149 Encoding of reserved / long paths in the store
150 150
151 151 $ hg init r2
152 152 $ cd r2
153 153 $ cat <<EOF > .hg/hgrc
154 154 > [ui]
155 155 > portablefilenames = ignore
156 156 > EOF
157 157
158 158 $ hg import -q --bypass - <<EOF
159 159 > # HG changeset patch
160 160 > # User test
161 161 > # Date 0 0
162 162 > # Node ID 1c7a2f7cb77be1a0def34e4c7cabc562ad98fbd7
163 163 > # Parent 0000000000000000000000000000000000000000
164 164 > 1
165 165 >
166 166 > diff --git a/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-12345-ABCDEFGHIJKLMNOPRSTUVWXYZ-abcdefghjiklmnopqrstuvwxyz b/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-12345-ABCDEFGHIJKLMNOPRSTUVWXYZ-abcdefghjiklmnopqrstuvwxyz
167 167 > new file mode 100644
168 168 > --- /dev/null
169 169 > +++ b/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-12345-ABCDEFGHIJKLMNOPRSTUVWXYZ-abcdefghjiklmnopqrstuvwxyz
170 170 > @@ -0,0 +1,1 @@
171 171 > +foo
172 172 > diff --git a/AUX/SECOND/X.PRN/FOURTH/FI:FTH/SIXTH/SEVENTH/EIGHTH/NINETH/TENTH/ELEVENTH/LOREMIPSUM.TXT b/AUX/SECOND/X.PRN/FOURTH/FI:FTH/SIXTH/SEVENTH/EIGHTH/NINETH/TENTH/ELEVENTH/LOREMIPSUM.TXT
173 173 > new file mode 100644
174 174 > --- /dev/null
175 175 > +++ b/AUX/SECOND/X.PRN/FOURTH/FI:FTH/SIXTH/SEVENTH/EIGHTH/NINETH/TENTH/ELEVENTH/LOREMIPSUM.TXT
176 176 > @@ -0,0 +1,1 @@
177 177 > +foo
178 178 > diff --git a/Project Planning/Resources/AnotherLongDirectoryName/Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt b/Project Planning/Resources/AnotherLongDirectoryName/Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt
179 179 > new file mode 100644
180 180 > --- /dev/null
181 181 > +++ b/Project Planning/Resources/AnotherLongDirectoryName/Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt
182 182 > @@ -0,0 +1,1 @@
183 183 > +foo
184 184 > diff --git a/bla.aux/prn/PRN/lpt/com3/nul/coma/foo.NUL/normal.c b/bla.aux/prn/PRN/lpt/com3/nul/coma/foo.NUL/normal.c
185 185 > new file mode 100644
186 186 > --- /dev/null
187 187 > +++ b/bla.aux/prn/PRN/lpt/com3/nul/coma/foo.NUL/normal.c
188 188 > @@ -0,0 +1,1 @@
189 189 > +foo
190 190 > diff --git a/enterprise/openesbaddons/contrib-imola/corba-bc/netbeansplugin/wsdlExtension/src/main/java/META-INF/services/org.netbeans.modules.xml.wsdl.bindingsupport.spi.ExtensibilityElementTemplateProvider b/enterprise/openesbaddons/contrib-imola/corba-bc/netbeansplugin/wsdlExtension/src/main/java/META-INF/services/org.netbeans.modules.xml.wsdl.bindingsupport.spi.ExtensibilityElementTemplateProvider
191 191 > new file mode 100644
192 192 > --- /dev/null
193 193 > +++ b/enterprise/openesbaddons/contrib-imola/corba-bc/netbeansplugin/wsdlExtension/src/main/java/META-INF/services/org.netbeans.modules.xml.wsdl.bindingsupport.spi.ExtensibilityElementTemplateProvider
194 194 > @@ -0,0 +1,1 @@
195 195 > +foo
196 196 > EOF
197 197
198 198 $ find .hg/store -name *.i | sort
199 199 .hg/store/00changelog.i
200 200 .hg/store/00manifest.i
201 201 .hg/store/data/bla.aux/pr~6e/_p_r_n/lpt/co~6d3/nu~6c/coma/foo._n_u_l/normal.c.i
202 202 .hg/store/dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxx168e07b38e65eff86ab579afaaa8e30bfbe0f35f.i
203 203 .hg/store/dh/au~78/second/x.prn/fourth/fi~3afth/sixth/seventh/eighth/nineth/tenth/loremia20419e358ddff1bf8751e38288aff1d7c32ec05.i
204 204 .hg/store/dh/enterpri/openesba/contrib-/corba-bc/netbeans/wsdlexte/src/main/java/org.net7018f27961fdf338a598a40c4683429e7ffb9743.i
205 205 .hg/store/dh/project_/resource/anotherl/followed/andanoth/andthenanextremelylongfilename0d8e1f4187c650e2f1fdca9fd90f786bc0976b6b.i
206 206
207 207 $ cd ..
208 208
209 209 Aborting lock does not prevent fncache writes
210 210
211 211 $ cat > exceptionext.py <<EOF
212 212 > from __future__ import absolute_import
213 213 > import os
214 214 > from mercurial import commands, error, extensions
215 215 >
216 216 > def lockexception(orig, vfs, lockname, wait, releasefn, *args, **kwargs):
217 217 > def releasewrap():
218 218 > l.held = False # ensure __del__ is a noop
219 219 > raise error.Abort("forced lock failure")
220 220 > l = orig(vfs, lockname, wait, releasewrap, *args, **kwargs)
221 221 > return l
222 222 >
223 223 > def reposetup(ui, repo):
224 224 > extensions.wrapfunction(repo, '_lock', lockexception)
225 225 >
226 226 > cmdtable = {}
227 227 >
228 228 > # wrap "commit" command to prevent wlock from being '__del__()'-ed
229 229 > # at the end of dispatching (for intentional "forced lcok failure")
230 230 > def commitwrap(orig, ui, repo, *pats, **opts):
231 231 > repo = repo.unfiltered() # to use replaced repo._lock certainly
232 232 > wlock = repo.wlock()
233 233 > try:
234 234 > return orig(ui, repo, *pats, **opts)
235 235 > finally:
236 236 > # multiple 'relase()' is needed for complete releasing wlock,
237 237 > # because "forced" abort at last releasing store lock
238 238 > # prevents wlock from being released at same 'lockmod.release()'
239 239 > for i in range(wlock.held):
240 240 > wlock.release()
241 241 >
242 242 > def extsetup(ui):
243 243 > extensions.wrapcommand(commands.table, b"commit", commitwrap)
244 244 > EOF
245 245 $ extpath=`pwd`/exceptionext.py
246 246 $ hg init fncachetxn
247 247 $ cd fncachetxn
248 248 $ printf "[extensions]\nexceptionext=$extpath\n" >> .hg/hgrc
249 249 $ touch y
250 250 $ hg ci -qAm y
251 251 abort: forced lock failure
252 252 [255]
253 253 $ cat .hg/store/fncache
254 254 data/y.i
255 255
256 256 Aborting transaction prevents fncache change
257 257
258 258 $ cat > ../exceptionext.py <<EOF
259 259 > from __future__ import absolute_import
260 260 > import os
261 261 > from mercurial import commands, error, extensions, localrepo
262 262 >
263 263 > def wrapper(orig, self, *args, **kwargs):
264 264 > tr = orig(self, *args, **kwargs)
265 265 > def fail(tr):
266 266 > raise error.Abort(b"forced transaction failure")
267 267 > # zzz prefix to ensure it sorted after store.write
268 268 > tr.addfinalize(b'zzz-forcefails', fail)
269 269 > return tr
270 270 >
271 271 > def uisetup(ui):
272 272 > extensions.wrapfunction(
273 273 > localrepo.localrepository, b'transaction', wrapper)
274 274 >
275 275 > cmdtable = {}
276 276 >
277 277 > EOF
278 278
279 279 Clean cached version
280 280 $ rm -f "${extpath}c"
281 281 $ rm -Rf "`dirname $extpath`/__pycache__"
282 282
283 283 $ touch z
284 284 $ hg ci -qAm z
285 285 transaction abort!
286 286 rollback completed
287 287 abort: forced transaction failure
288 288 [255]
289 289 $ cat .hg/store/fncache
290 290 data/y.i
291 291
292 292 Aborted transactions can be recovered later
293 293
294 294 $ cat > ../exceptionext.py <<EOF
295 295 > from __future__ import absolute_import
296 296 > import os
297 297 > from mercurial import (
298 298 > commands,
299 299 > error,
300 300 > extensions,
301 301 > localrepo,
302 302 > transaction,
303 303 > )
304 304 >
305 305 > def trwrapper(orig, self, *args, **kwargs):
306 306 > tr = orig(self, *args, **kwargs)
307 307 > def fail(tr):
308 > raise error.Abort("forced transaction failure")
308 > raise error.Abort(b"forced transaction failure")
309 309 > # zzz prefix to ensure it sorted after store.write
310 > tr.addfinalize('zzz-forcefails', fail)
310 > tr.addfinalize(b'zzz-forcefails', fail)
311 311 > return tr
312 312 >
313 313 > def abortwrapper(orig, self, *args, **kwargs):
314 > raise error.Abort("forced transaction failure")
314 > raise error.Abort(b"forced transaction failure")
315 315 >
316 316 > def uisetup(ui):
317 317 > extensions.wrapfunction(localrepo.localrepository, 'transaction',
318 318 > trwrapper)
319 319 > extensions.wrapfunction(transaction.transaction, '_abort',
320 320 > abortwrapper)
321 321 >
322 322 > cmdtable = {}
323 323 >
324 324 > EOF
325 325
326 326 Clean cached versions
327 327 $ rm -f "${extpath}c"
328 328 $ rm -Rf "`dirname $extpath`/__pycache__"
329 329
330 330 $ hg up -q 1
331 331 $ touch z
332 332 $ hg ci -qAm z 2>/dev/null
333 333 [255]
334 334 $ cat .hg/store/fncache | sort
335 335 data/y.i
336 336 data/z.i
337 337 $ hg recover
338 338 rolling back interrupted transaction
339 339 checking changesets
340 340 checking manifests
341 341 crosschecking files in changesets and manifests
342 342 checking files
343 343 checked 1 changesets with 1 changes to 1 files
344 344 $ cat .hg/store/fncache
345 345 data/y.i
346 346
347 347 $ cd ..
348 348
349 349 debugrebuildfncache does nothing unless repo has fncache requirement
350 350
351 351 $ hg --config format.usefncache=false init nofncache
352 352 $ cd nofncache
353 353 $ hg debugrebuildfncache
354 354 (not rebuilding fncache because repository does not support fncache)
355 355
356 356 $ cd ..
357 357
358 358 debugrebuildfncache works on empty repository
359 359
360 360 $ hg init empty
361 361 $ cd empty
362 362 $ hg debugrebuildfncache
363 363 fncache already up to date
364 364 $ cd ..
365 365
366 366 debugrebuildfncache on an up to date repository no-ops
367 367
368 368 $ hg init repo
369 369 $ cd repo
370 370 $ echo initial > foo
371 371 $ echo initial > .bar
372 372 $ hg commit -A -m initial
373 373 adding .bar
374 374 adding foo
375 375
376 376 $ cat .hg/store/fncache | sort
377 377 data/.bar.i
378 378 data/foo.i
379 379
380 380 $ hg debugrebuildfncache
381 381 fncache already up to date
382 382
383 383 debugrebuildfncache restores deleted fncache file
384 384
385 385 $ rm -f .hg/store/fncache
386 386 $ hg debugrebuildfncache
387 387 adding data/.bar.i
388 388 adding data/foo.i
389 389 2 items added, 0 removed from fncache
390 390
391 391 $ cat .hg/store/fncache | sort
392 392 data/.bar.i
393 393 data/foo.i
394 394
395 395 Rebuild after rebuild should no-op
396 396
397 397 $ hg debugrebuildfncache
398 398 fncache already up to date
399 399
400 400 A single missing file should get restored, an extra file should be removed
401 401
402 402 $ cat > .hg/store/fncache << EOF
403 403 > data/foo.i
404 404 > data/bad-entry.i
405 405 > EOF
406 406
407 407 $ hg debugrebuildfncache
408 408 removing data/bad-entry.i
409 409 adding data/.bar.i
410 410 1 items added, 1 removed from fncache
411 411
412 412 $ cat .hg/store/fncache | sort
413 413 data/.bar.i
414 414 data/foo.i
415 415
416 416 $ cd ..
417 417
418 418 Try a simple variation without dotencode to ensure fncache is ignorant of encoding
419 419
420 420 $ hg --config format.dotencode=false init nodotencode
421 421 $ cd nodotencode
422 422 $ echo initial > foo
423 423 $ echo initial > .bar
424 424 $ hg commit -A -m initial
425 425 adding .bar
426 426 adding foo
427 427
428 428 $ cat .hg/store/fncache | sort
429 429 data/.bar.i
430 430 data/foo.i
431 431
432 432 $ rm .hg/store/fncache
433 433 $ hg debugrebuildfncache
434 434 adding data/.bar.i
435 435 adding data/foo.i
436 436 2 items added, 0 removed from fncache
437 437
438 438 $ cat .hg/store/fncache | sort
439 439 data/.bar.i
440 440 data/foo.i
441 441
442 442 $ cd ..
443 443
444 444 In repositories that have accumulated a large number of files over time, the
445 445 fncache file is going to be large. If we possibly can avoid loading it, so much the better.
446 446 The cache should not loaded when committing changes to existing files, or when unbundling
447 447 changesets that only contain changes to existing files:
448 448
449 449 $ cat > fncacheloadwarn.py << EOF
450 450 > from __future__ import absolute_import
451 451 > from mercurial import extensions, localrepo
452 452 >
453 453 > def extsetup(ui):
454 454 > def wrapstore(orig, requirements, *args):
455 455 > store = orig(requirements, *args)
456 > if 'store' in requirements and 'fncache' in requirements:
456 > if b'store' in requirements and b'fncache' in requirements:
457 457 > instrumentfncachestore(store, ui)
458 458 > return store
459 459 > extensions.wrapfunction(localrepo, 'makestore', wrapstore)
460 460 >
461 461 > def instrumentfncachestore(fncachestore, ui):
462 462 > class instrumentedfncache(type(fncachestore.fncache)):
463 463 > def _load(self):
464 > ui.warn('fncache load triggered!\n')
464 > ui.warn(b'fncache load triggered!\n')
465 465 > super(instrumentedfncache, self)._load()
466 466 > fncachestore.fncache.__class__ = instrumentedfncache
467 467 > EOF
468 468
469 469 $ fncachextpath=`pwd`/fncacheloadwarn.py
470 470 $ hg init nofncacheload
471 471 $ cd nofncacheload
472 472 $ printf "[extensions]\nfncacheloadwarn=$fncachextpath\n" >> .hg/hgrc
473 473
474 474 A new file should trigger a load, as we'd want to update the fncache set in that case:
475 475
476 476 $ touch foo
477 477 $ hg ci -qAm foo
478 478 fncache load triggered!
479 479
480 480 But modifying that file should not:
481 481
482 482 $ echo bar >> foo
483 483 $ hg ci -qm foo
484 484
485 485 If a transaction has been aborted, the zero-size truncated index file will
486 486 not prevent the fncache from being loaded; rather than actually abort
487 487 a transaction, we simulate the situation by creating a zero-size index file:
488 488
489 489 $ touch .hg/store/data/bar.i
490 490 $ touch bar
491 491 $ hg ci -qAm bar
492 492 fncache load triggered!
493 493
494 494 Unbundling should follow the same rules; existing files should not cause a load:
495 495
496 496 $ hg clone -q . tobundle
497 497 $ echo 'new line' > tobundle/bar
498 498 $ hg -R tobundle ci -qm bar
499 499 $ hg -R tobundle bundle -q barupdated.hg
500 500 $ hg unbundle -q barupdated.hg
501 501
502 502 but adding new files should:
503 503
504 504 $ touch tobundle/newfile
505 505 $ hg -R tobundle ci -qAm newfile
506 506 $ hg -R tobundle bundle -q newfile.hg
507 507 $ hg unbundle -q newfile.hg
508 508 fncache load triggered!
509 509
510 510 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now