Mercurial > hg
annotate tests/test-journal-exists.t @ 51181:dcaa2df1f688
changelog: never inline changelog
The test suite mostly use small repositories, that implies that most changelog in the
tests are inlined. As a result, non-inlined changelog are quite poorly tested.
Since non-inline changelog are most common case for serious repositories, this
lack of testing is a significant problem that results in high profile issue like
the one recently fixed by 66417f55ea33 and 849745d7da89.
Inlining the changelog does not bring much to the table, the number of total
file saved is negligible, and the changelog will be read by most operation
anyway.
So this changeset is make it so we never inline the changelog, and de-inline the
one that are still inlined whenever we touch them.
By doing that, we remove the "dual code path" situation for writing new entry to
the changelog and move to a "single code path" situation. Having a single
code path simplify the code and make sure it is covered by test (if test cover
that situation obviously)
This impact all tests that care about the number of file and the exchange size,
but there is nothing too complicated in them just a lot of churn.
The churn is made "worse" by the fact rust will use the persistent nodemap on
any changelog now. Which is overall a win as it means testing the persistent
nodemap more and having less special cases.
In short, having inline changelog is mostly useless and an endless source of
pain. We get rid of it.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 11 Dec 2023 22:27:59 +0100 |
parents | adecb1ab4a0d |
children |
rev | line source |
---|---|
49621
55c6ebd11cb9
tests: run many tests in $TESTTMP/repo instead of $TESTTMP
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
45906
diff
changeset
|
1 $ hg init repo |
55c6ebd11cb9
tests: run many tests in $TESTTMP/repo instead of $TESTTMP
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
45906
diff
changeset
|
2 $ cd repo |
12205
b4d0d646b3f7
tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents:
9693
diff
changeset
|
3 $ echo a > a |
b4d0d646b3f7
tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents:
9693
diff
changeset
|
4 $ hg ci -Am0 |
b4d0d646b3f7
tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents:
9693
diff
changeset
|
5 adding a |
5865
e7127f669edb
transactions: don't show a backtrace when journal exists
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
6 |
12205
b4d0d646b3f7
tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents:
9693
diff
changeset
|
7 $ hg -q clone . foo |
b4d0d646b3f7
tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents:
9693
diff
changeset
|
8 |
b4d0d646b3f7
tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents:
9693
diff
changeset
|
9 $ touch .hg/store/journal |
5865
e7127f669edb
transactions: don't show a backtrace when journal exists
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
10 |
12205
b4d0d646b3f7
tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents:
9693
diff
changeset
|
11 $ echo foo > a |
b4d0d646b3f7
tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents:
9693
diff
changeset
|
12 $ hg ci -Am0 |
45906
95c4cca641f6
errors: remove trailing "!" from some error messages for consistency
Martin von Zweigbergk <martinvonz@google.com>
parents:
44355
diff
changeset
|
13 abort: abandoned transaction found |
21274
3b4c75690206
journal: set Abort hint when failing due to an abandoned transaction
Johan Bjork <jbjoerk@gmail.com>
parents:
20008
diff
changeset
|
14 (run 'hg recover' to clean up transaction) |
12316
4134686b83e1
tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents:
12205
diff
changeset
|
15 [255] |
5865
e7127f669edb
transactions: don't show a backtrace when journal exists
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
16 |
12205
b4d0d646b3f7
tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents:
9693
diff
changeset
|
17 $ hg recover |
b4d0d646b3f7
tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents:
9693
diff
changeset
|
18 rolling back interrupted transaction |
44355
7a4e1d245f19
recover: don't verify by default
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
44134
diff
changeset
|
19 (verify step skipped, run `hg verify` to check your repository content) |
5865
e7127f669edb
transactions: don't show a backtrace when journal exists
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
20 |
44134
e96ed3a61899
recover: fix typos
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
42144
diff
changeset
|
21 recover, explicit verify |
42144
013de80bf90e
recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41420
diff
changeset
|
22 |
013de80bf90e
recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41420
diff
changeset
|
23 $ touch .hg/store/journal |
013de80bf90e
recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41420
diff
changeset
|
24 $ hg ci -Am0 |
45906
95c4cca641f6
errors: remove trailing "!" from some error messages for consistency
Martin von Zweigbergk <martinvonz@google.com>
parents:
44355
diff
changeset
|
25 abort: abandoned transaction found |
42144
013de80bf90e
recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41420
diff
changeset
|
26 (run 'hg recover' to clean up transaction) |
013de80bf90e
recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41420
diff
changeset
|
27 [255] |
49825
2f2682f40ea0
tests: use the `--quiet` flag for verify when applicable
Raphaël Gomès <rgomes@octobus.net>
parents:
49621
diff
changeset
|
28 $ hg recover --verify -q |
42144
013de80bf90e
recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41420
diff
changeset
|
29 |
013de80bf90e
recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41420
diff
changeset
|
30 recover, no verify |
013de80bf90e
recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41420
diff
changeset
|
31 |
013de80bf90e
recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41420
diff
changeset
|
32 $ touch .hg/store/journal |
013de80bf90e
recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41420
diff
changeset
|
33 $ hg ci -Am0 |
45906
95c4cca641f6
errors: remove trailing "!" from some error messages for consistency
Martin von Zweigbergk <martinvonz@google.com>
parents:
44355
diff
changeset
|
34 abort: abandoned transaction found |
42144
013de80bf90e
recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41420
diff
changeset
|
35 (run 'hg recover' to clean up transaction) |
013de80bf90e
recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41420
diff
changeset
|
36 [255] |
013de80bf90e
recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41420
diff
changeset
|
37 $ hg recover --no-verify |
013de80bf90e
recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41420
diff
changeset
|
38 rolling back interrupted transaction |
44134
e96ed3a61899
recover: fix typos
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
42144
diff
changeset
|
39 (verify step skipped, run `hg verify` to check your repository content) |
42144
013de80bf90e
recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41420
diff
changeset
|
40 |
013de80bf90e
recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41420
diff
changeset
|
41 |
12205
b4d0d646b3f7
tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents:
9693
diff
changeset
|
42 Check that zero-size journals are correctly aborted: |
9693
c40a1ee20aa5
transaction: always remove empty journal on abort
Sune Foldager <cryo@cyanite.org>
parents:
5867
diff
changeset
|
43 |
20008
e54a078153f7
tests: skip tests that require not having root (issue4089)
Matt Mackall <mpm@selenic.com>
parents:
16959
diff
changeset
|
44 #if unix-permissions no-root |
12205
b4d0d646b3f7
tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents:
9693
diff
changeset
|
45 $ hg bundle -qa repo.hg |
b4d0d646b3f7
tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents:
9693
diff
changeset
|
46 $ chmod -w foo/.hg/store/00changelog.i |
b4d0d646b3f7
tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents:
9693
diff
changeset
|
47 |
b4d0d646b3f7
tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents:
9693
diff
changeset
|
48 $ hg -R foo unbundle repo.hg |
b4d0d646b3f7
tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents:
9693
diff
changeset
|
49 adding changesets |
51181
dcaa2df1f688
changelog: never inline changelog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50292
diff
changeset
|
50 transaction abort! |
dcaa2df1f688
changelog: never inline changelog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50292
diff
changeset
|
51 rollback completed |
50292
adecb1ab4a0d
tests: add a rewriting step to detect EACCES errors
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49825
diff
changeset
|
52 abort: $EACCES$: '$TESTTMP/repo/foo/.hg/store/.00changelog.i-*' (glob) |
12316
4134686b83e1
tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents:
12205
diff
changeset
|
53 [255] |
12205
b4d0d646b3f7
tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents:
9693
diff
changeset
|
54 |
b4d0d646b3f7
tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents:
9693
diff
changeset
|
55 $ if test -f foo/.hg/store/journal; then echo 'journal exists :-('; fi |
16959
acba1281e064
test-journal-exists: use #if
Adrian Buehlmann <adrian@cadifra.com>
parents:
15443
diff
changeset
|
56 #endif |
12205
b4d0d646b3f7
tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents:
9693
diff
changeset
|
57 |