##// END OF EJS Templates
largefiles: access to specific fields only if largefiles enabled (issue4547)...
largefiles: access to specific fields only if largefiles enabled (issue4547) Even if largefiles extension is enabled in a repository, "repo" object, which isn't "largefiles.reposetup()"-ed, is passed to overridden functions in the cases below unexpectedly, because extensions are enabled for each repositories strictly. (1) clone without -U: (2) pull with -U: (3) pull with --rebase: combination of "enabled@src", "disabled@dst" and "not-required@src" cause this situation. largefiles requirement @src @dst @src result -------- -------- --------------- -------------------- enabled disabled not-required aborted unexpectedly required requirement error (intentional) -------- -------- --------------- -------------------- enabled enabled * success -------- -------- --------------- -------------------- disabled enabled * success (only for "pull") -------- -------- --------------- -------------------- disabled disabled not-required success required requirement error (intentional) -------- -------- --------------- -------------------- (4) update/revert with a subrepo disabling largefiles In these cases, overridden functions cause accessing to largefiles specific fields of not "largefiles.reposetup()"-ed "repo" object, and execution is aborted. - (1), (2), (4) cause accessing to "_lfstatuswriters" in "getstatuswriter()" invoked via "updatelfiles()" - (3) causes accessing to "_lfcommithooks" in "overriderebase()" For safe accessing to these fields, this patch examines whether passed "repo" object is "largefiles.reposetup()"-ed or not before accessing to them. This patch chooses examining existence of newly introduced "_largefilesenabled" instead of "_lfcommithooks" and "_lfstatuswriters" directly, because the former is better name for the generic "largefiles is enabled in this repo" mark than the latter. In the future, all other overridden functions should avoid largefiles specific processing for efficiency, and "_largefilesenabled" is better also for such purpose. BTW, "lfstatus" can't be used for such purpose, because some code paths set it forcibly regardless of existence of it in specified "repo" object.

File last commit:

r21031:05cfcecb default
r24158:d414c28d stable
Show More
test-blackbox.t
170 lines | 4.9 KiB | text/troff | Tads3Lexer
Durham Goode
blackbox: tests for the blackbox extension...
r18674 setup
$ cat > mock.py <<EOF
> from mercurial import util
>
> def makedate():
> return 0, 0
> def getuser():
> return 'bob'
> # mock the date and user apis so the output is always the same
> def uisetup(ui):
> util.makedate = makedate
Bryan O'Sullivan
blackbox: use util.getuser for portability...
r18787 > util.getuser = getuser
Durham Goode
blackbox: tests for the blackbox extension...
r18674 > EOF
$ cat >> $HGRCPATH <<EOF
> [extensions]
> blackbox=
> mock=`pwd`/mock.py
Durham Goode
blackbox: add backup bundle paths to blackbox logs...
r18766 > mq=
Durham Goode
blackbox: tests for the blackbox extension...
r18674 > EOF
$ hg init blackboxtest
$ cd blackboxtest
command, exit codes, and duration
$ echo a > a
$ hg add a
$ hg blackbox
1970/01/01 00:00:00 bob> add a
Durham Goode
blackbox: fix recording exit codes (issue3938)...
r19229 1970/01/01 00:00:00 bob> add a exited 0 after * seconds (glob)
Durham Goode
blackbox: tests for the blackbox extension...
r18674
Durham Goode
blackbox: only show new heads on incoming...
r18677 incoming change tracking
create two heads to verify that we only see one change in the log later
$ hg commit -ma
$ hg up null
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo b > b
$ hg commit -Amb
adding b
created new head
clone, commit, pull
$ hg clone . ../blackboxtest2
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo c > c
$ hg commit -Amc
adding c
$ cd ../blackboxtest2
$ hg pull
Simon Heimberg
tests: append glob to filename output when required for windows...
r18719 pulling from $TESTTMP/blackboxtest (glob)
Durham Goode
blackbox: only show new heads on incoming...
r18677 searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
(run 'hg update' to get a working copy)
Gregory Szorc
branchmap: log events related to branch cache...
r21031 $ hg blackbox -l 5
Durham Goode
blackbox: only show new heads on incoming...
r18677 1970/01/01 00:00:00 bob> pull
Gregory Szorc
branchmap: log events related to branch cache...
r21031 1970/01/01 00:00:00 bob> updated served branch cache in ?.???? seconds (glob)
1970/01/01 00:00:00 bob> wrote served branch cache with 1 labels and 2 nodes
Simon Heimberg
tests: remove glob lines which unnecessary match / for \ on windows...
r18720 1970/01/01 00:00:00 bob> 1 incoming changes - new heads: d02f48003e62
Durham Goode
blackbox: fix recording exit codes (issue3938)...
r19229 1970/01/01 00:00:00 bob> pull exited 0 after * seconds (glob)
Durham Goode
blackbox: only show new heads on incoming...
r18677
Bryan O'Sullivan
blackbox: prevent failed I/O from causing hg to abort...
r18786 we must not cause a failure if we cannot write to the log
$ hg rollback
repository tip rolled back to revision 1 (undo pull)
Durham Goode
blackbox: don't run permission tests on non-unix systems...
r19082
Matt Mackall
tests: skip tests that require not having root (issue4089)...
r20008 #if unix-permissions no-root
Bryan O'Sullivan
blackbox: prevent failed I/O from causing hg to abort...
r18786 $ chmod 000 .hg/blackbox.log
$ hg --debug incoming
warning: cannot write to blackbox.log: Permission denied
Bryan O'Sullivan
blackbox: fix a few check-code portability errors
r18836 comparing with $TESTTMP/blackboxtest (glob)
Bryan O'Sullivan
blackbox: prevent failed I/O from causing hg to abort...
r18786 query 1; heads
searching for changes
all local heads known remotely
changeset: 2:d02f48003e62c24e2659d97d30f2a83abe5d5d51
tag: tip
phase: draft
parent: 1:6563da9dcf87b1949716e38ff3e3dfaa3198eb06
parent: -1:0000000000000000000000000000000000000000
manifest: 2:ab9d46b053ebf45b7996f2922b9893ff4b63d892
user: test
date: Thu Jan 01 00:00:00 1970 +0000
files+: c
extra: branch=default
description:
c
Durham Goode
blackbox: don't run permission tests on non-unix systems...
r19082 #endif
Bryan O'Sullivan
blackbox: prevent failed I/O from causing hg to abort...
r18786 $ hg pull
Bryan O'Sullivan
blackbox: fix a few check-code portability errors
r18836 pulling from $TESTTMP/blackboxtest (glob)
Bryan O'Sullivan
blackbox: prevent failed I/O from causing hg to abort...
r18786 searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
(run 'hg update' to get a working copy)
a failure reading from the log is fine
Matt Mackall
tests: skip tests that require not having root (issue4089)...
r20008 #if unix-permissions no-root
Bryan O'Sullivan
blackbox: prevent failed I/O from causing hg to abort...
r18786 $ hg blackbox -l 3
abort: Permission denied: $TESTTMP/blackboxtest2/.hg/blackbox.log
[255]
$ chmod 600 .hg/blackbox.log
Durham Goode
blackbox: don't run permission tests on non-unix systems...
r19082 #endif
Bryan O'Sullivan
blackbox: prevent failed I/O from causing hg to abort...
r18786
Durham Goode
blackbox: add backup bundle paths to blackbox logs...
r18766 backup bundles get logged
$ touch d
$ hg commit -Amd
adding d
created new head
$ hg strip tip
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
saved backup bundle to $TESTTMP/blackboxtest2/.hg/strip-backup/*-backup.hg (glob)
Gregory Szorc
branchmap: log events related to branch cache...
r21031 $ hg blackbox -l 5
Durham Goode
blackbox: add backup bundle paths to blackbox logs...
r18766 1970/01/01 00:00:00 bob> strip tip
1970/01/01 00:00:00 bob> saved backup bundle to $TESTTMP/blackboxtest2/.hg/strip-backup/*-backup.hg (glob)
Gregory Szorc
branchmap: log events related to branch cache...
r21031 1970/01/01 00:00:00 bob> updated base branch cache in ?.???? seconds (glob)
1970/01/01 00:00:00 bob> wrote base branch cache with 1 labels and 2 nodes
Durham Goode
blackbox: fix recording exit codes (issue3938)...
r19229 1970/01/01 00:00:00 bob> strip tip exited 0 after * seconds (glob)
Durham Goode
blackbox: add backup bundle paths to blackbox logs...
r18766
Gregory Szorc
tags: log events related to tags cache...
r21030 tags cache gets logged
$ hg up tip
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg tag -m 'create test tag' test-tag
$ hg tags
tip 3:5b5562c08298
test-tag 2:d02f48003e62
$ hg blackbox -l 3
1970/01/01 00:00:00 bob> resolved 1 tags cache entries from 1 manifests in ?.???? seconds (glob)
1970/01/01 00:00:00 bob> writing tags cache file with 2 heads and 1 tags
1970/01/01 00:00:00 bob> tags exited 0 after ?.?? seconds (glob)
Durham Goode
blackbox: tests for the blackbox extension...
r18674 extension and python hooks - use the eol extension for a pythonhook
$ echo '[extensions]' >> .hg/hgrc
$ echo 'eol=' >> .hg/hgrc
$ echo '[hooks]' >> .hg/hgrc
$ echo 'update = echo hooked' >> .hg/hgrc
$ hg update
hooked
Gregory Szorc
tags: log events related to tags cache...
r21030 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
Durham Goode
blackbox: tests for the blackbox extension...
r18674 $ hg blackbox -l 4
1970/01/01 00:00:00 bob> update
1970/01/01 00:00:00 bob> pythonhook-preupdate: hgext.eol.preupdate finished in * seconds (glob)
1970/01/01 00:00:00 bob> exthook-update: echo hooked finished in * seconds (glob)
Durham Goode
blackbox: fix recording exit codes (issue3938)...
r19229 1970/01/01 00:00:00 bob> update exited 0 after * seconds (glob)
Durham Goode
blackbox: tests for the blackbox extension...
r18674
Bryan O'Sullivan
blackbox: automatically rotate log files...
r19066 log rotation
$ echo '[blackbox]' >> .hg/hgrc
$ echo 'maxsize = 20 b' >> .hg/hgrc
$ echo 'maxfiles = 3' >> .hg/hgrc
$ hg status
$ hg status
$ hg status
$ hg tip -q
Gregory Szorc
tags: log events related to tags cache...
r21030 3:5b5562c08298
Bryan O'Sullivan
blackbox: automatically rotate log files...
r19066 $ ls .hg/blackbox.log*
.hg/blackbox.log
.hg/blackbox.log.1
.hg/blackbox.log.2
Durham Goode
blackbox: tests for the blackbox extension...
r18674 cleanup
$ cd ..