Mercurial > hg
annotate tests/test-username-newline.t @ 29917:f32f8bf5dc4c
streamclone: force @filecache properties to be reloaded from file
Before this patch, consumev1() invokes repo.invalidate() after closing
transaction, to force @filecache properties to be reloaded from files
at next access, because streamclone writes data into files directly.
But this doesn't work as expected in the case below:
1. at closing transaction, repo._refreshfilecachestats() refreshes
file stat of each @filecache properties with streamclone-ed files
This means that in-memory properties are treated as valid.
2. but streamclone doesn't changes in-memory properties
This means that in-memory properties are actually invalid.
3. repo.invalidate() just forces to examine file stat of @filecache
properties at the first access after it
Such examination should concludes that reloading from file isn't
needed, because file stat was already refreshed at (1).
Therefore, invalid in-memory cached properties (2) are
unintentionally treated as valid (1).
This patch invokes repo.invalidate() with clearfilecache=True, to
force @filecache properties to be reloaded from file at next access.
BTW, it is accidental that repo.invalidate() without
clearfilecache=True in streamclone case seems to work as expected
before this patch.
If transaction is started via "filtered repo" object,
repo._refreshfilecachestats() tries to refresh file stat of each
@filecache properties on "filtered repo" object, even though all of
them are stored into "unfiltered repo" object.
In this case, repo._refreshfilecachestats() does nothing
unintentionally, but this unexpected behavior causes reloading
@filecache properties after repo.invalidate().
This is reason why this patch should be applied before making
_refreshfilecachestats() correctly refresh file stat of @filecache
properties.
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Mon, 12 Sep 2016 03:06:28 +0900 |
parents | 3b165c127690 |
children | 5ac845ca059a |
rev | line source |
---|---|
12301
3a082866422a
tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents:
7035
diff
changeset
|
1 $ hg init |
3a082866422a
tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents:
7035
diff
changeset
|
2 $ touch a |
7035
9d023ef7b467
forbid username with '\n' at the changelog level
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
3 |
12301
3a082866422a
tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents:
7035
diff
changeset
|
4 $ unset HGUSER |
3a082866422a
tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents:
7035
diff
changeset
|
5 $ echo "[ui]" >> .hg/hgrc |
3a082866422a
tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents:
7035
diff
changeset
|
6 $ echo "username= foo" >> .hg/hgrc |
3a082866422a
tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents:
7035
diff
changeset
|
7 $ echo " bar1" >> .hg/hgrc |
7035
9d023ef7b467
forbid username with '\n' at the changelog level
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
8 |
12301
3a082866422a
tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents:
7035
diff
changeset
|
9 $ hg ci -Am m |
3a082866422a
tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents:
7035
diff
changeset
|
10 adding a |
3a082866422a
tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents:
7035
diff
changeset
|
11 abort: username 'foo\nbar1' contains a newline |
3a082866422a
tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents:
7035
diff
changeset
|
12 |
12316
4134686b83e1
tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents:
12301
diff
changeset
|
13 [255] |
12301
3a082866422a
tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents:
7035
diff
changeset
|
14 $ rm .hg/hgrc |
7035
9d023ef7b467
forbid username with '\n' at the changelog level
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
15 |
12301
3a082866422a
tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents:
7035
diff
changeset
|
16 $ HGUSER=`(echo foo; echo bar2)` hg ci -Am m |
3a082866422a
tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents:
7035
diff
changeset
|
17 abort: username 'foo\nbar2' contains a newline |
3a082866422a
tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents:
7035
diff
changeset
|
18 |
12316
4134686b83e1
tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents:
12301
diff
changeset
|
19 [255] |
12301
3a082866422a
tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents:
7035
diff
changeset
|
20 $ hg ci -Am m -u "`(echo foo; echo bar3)`" |
3a082866422a
tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents:
7035
diff
changeset
|
21 transaction abort! |
3a082866422a
tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents:
7035
diff
changeset
|
22 rollback completed |
3a082866422a
tests: unify test-username-newline
Adrian Buehlmann <adrian@cadifra.com>
parents:
7035
diff
changeset
|
23 abort: username 'foo\nbar3' contains a newline! |
12316
4134686b83e1
tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents:
12301
diff
changeset
|
24 [255] |
7035
9d023ef7b467
forbid username with '\n' at the changelog level
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
25 |