tests/test-journal-exists.t
author Simon Sapin <simon.sapin@octobus.net>
Fri, 21 Jan 2022 17:54:03 +0100
changeset 48745 94e36b230990
parent 45906 95c4cca641f6
child 49621 55c6ebd11cb9
permissions -rw-r--r--
status: prefer relative paths in Rust code … when the repository root is under the current directory, so the kernel needs to traverse fewer directory in every call to `read_dir` or `symlink_metadata`. Better yet would be to use libc functions like `openat` and `fstatat` to remove such repeated traversals entirely, but the standard library does not provide APIs based on those. Maybe with a crate like https://crates.io/crates/openat instead? Benchmarks of `rhg status` show that this patch is neutral in some configurations, and makes the command up to ~20% faster in others. Below is semi-arbitrary subset of results. The four numeric columns are: time (in seconds) with this changeset’s parent, time with this changeset, time difference (negative is better), time ratio (less than 1 is better). ``` mercurial-dirstate-v1 | default-plain-clean.no-iu.pbr | 0.0061 -> 0.0059: -0.0002 (0.97) mercurial-dirstate-v2 | default-plain-clean.no-iu.pbr | 0.0029 -> 0.0028: -0.0001 (0.97) mozilla-dirstate-v1 | default-plain-clean.no-iu.pbr | 0.2110 -> 0.2102: -0.0007 (1.00) mozilla-dirstate-v2 | default-copies-clean.ignored.pbr | 0.0489 -> 0.0401: -0.0088 (0.82) mozilla-dirstate-v2 | default-copies-clean.no-iu.pbr | 0.0479 -> 0.0393: -0.0085 (0.82) mozilla-dirstate-v2 | default-copies-large.all.pbr | 0.1262 -> 0.1210: -0.0051 (0.96) mozilla-dirstate-v2 | default-copies-small.ignored-unknown.pbr | 0.1262 -> 0.1200: -0.0062 (0.95) mozilla-dirstate-v2 | default-copies-small.ignored.pbr | 0.0536 -> 0.0417: -0.0119 (0.78) mozilla-dirstate-v2 | default-copies-small.no-iu.pbr | 0.0482 -> 0.0393: -0.0089 (0.81) mozilla-dirstate-v2 | default-plain-clean.ignored.pbr | 0.0518 -> 0.0402: -0.0116 (0.78) mozilla-dirstate-v2 | default-plain-clean.no-iu.pbr | 0.0481 -> 0.0392: -0.0088 (0.82) mozilla-dirstate-v2 | default-plain-large.all.pbr | 0.1271 -> 0.1218: -0.0052 (0.96) mozilla-dirstate-v2 | default-plain-small.ignored-unknown.pbr | 0.1225 -> 0.1202: -0.0022 (0.98) mozilla-dirstate-v2 | default-plain-small.ignored.pbr | 0.0510 -> 0.0418: -0.0092 (0.82) mozilla-dirstate-v2 | default-plain-small.no-iu.pbr | 0.0480 -> 0.0394: -0.0086 (0.82) netbeans-dirstate-v1 | default-plain-clean.no-iu.pbr | 0.1442 -> 0.1422: -0.0020 (0.99) netbeans-dirstate-v2 | default-plain-clean.no-iu.pbr | 0.0325 -> 0.0282: -0.0043 (0.87) ``` Differential Revision: https://phab.mercurial-scm.org/D12175
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12205
b4d0d646b3f7 tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents: 9693
diff changeset
     1
  $ hg init
b4d0d646b3f7 tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents: 9693
diff changeset
     2
  $ echo a > a
b4d0d646b3f7 tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents: 9693
diff changeset
     3
  $ hg ci -Am0
b4d0d646b3f7 tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents: 9693
diff changeset
     4
  adding a
5865
e7127f669edb transactions: don't show a backtrace when journal exists
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     5
12205
b4d0d646b3f7 tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents: 9693
diff changeset
     6
  $ hg -q clone . foo
b4d0d646b3f7 tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents: 9693
diff changeset
     7
b4d0d646b3f7 tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents: 9693
diff changeset
     8
  $ touch .hg/store/journal
5865
e7127f669edb transactions: don't show a backtrace when journal exists
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     9
12205
b4d0d646b3f7 tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents: 9693
diff changeset
    10
  $ echo foo > a
b4d0d646b3f7 tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents: 9693
diff changeset
    11
  $ hg ci -Am0
45906
95c4cca641f6 errors: remove trailing "!" from some error messages for consistency
Martin von Zweigbergk <martinvonz@google.com>
parents: 44355
diff changeset
    12
  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
    13
  (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
    14
  [255]
5865
e7127f669edb transactions: don't show a backtrace when journal exists
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    15
12205
b4d0d646b3f7 tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents: 9693
diff changeset
    16
  $ hg recover
b4d0d646b3f7 tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents: 9693
diff changeset
    17
  rolling back interrupted transaction
44355
7a4e1d245f19 recover: don't verify by default
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents: 44134
diff changeset
    18
  (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
    19
44134
e96ed3a61899 recover: fix typos
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents: 42144
diff changeset
    20
recover, explicit verify
42144
013de80bf90e recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41420
diff changeset
    21
013de80bf90e recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41420
diff changeset
    22
  $ touch .hg/store/journal
013de80bf90e recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41420
diff changeset
    23
  $ hg ci -Am0
45906
95c4cca641f6 errors: remove trailing "!" from some error messages for consistency
Martin von Zweigbergk <martinvonz@google.com>
parents: 44355
diff changeset
    24
  abort: abandoned transaction found
42144
013de80bf90e recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41420
diff changeset
    25
  (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
    26
  [255]
013de80bf90e recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41420
diff changeset
    27
  $ hg recover --verify
013de80bf90e recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41420
diff changeset
    28
  rolling back interrupted transaction
013de80bf90e recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41420
diff changeset
    29
  checking changesets
013de80bf90e recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41420
diff changeset
    30
  checking manifests
013de80bf90e recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41420
diff changeset
    31
  crosschecking files in changesets and manifests
013de80bf90e recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41420
diff changeset
    32
  checking files
013de80bf90e recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41420
diff changeset
    33
  checked 1 changesets with 1 changes to 1 files
013de80bf90e recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41420
diff changeset
    34
013de80bf90e recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41420
diff changeset
    35
recover, no verify
013de80bf90e recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41420
diff changeset
    36
013de80bf90e recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41420
diff changeset
    37
  $ touch .hg/store/journal
013de80bf90e recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41420
diff changeset
    38
  $ hg ci -Am0
45906
95c4cca641f6 errors: remove trailing "!" from some error messages for consistency
Martin von Zweigbergk <martinvonz@google.com>
parents: 44355
diff changeset
    39
  abort: abandoned transaction found
42144
013de80bf90e recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41420
diff changeset
    40
  (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
    41
  [255]
013de80bf90e recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41420
diff changeset
    42
  $ hg recover --no-verify
013de80bf90e recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41420
diff changeset
    43
  rolling back interrupted transaction
44134
e96ed3a61899 recover: fix typos
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents: 42144
diff changeset
    44
  (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
    45
013de80bf90e recover: add a --[no-]verify flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 41420
diff changeset
    46
12205
b4d0d646b3f7 tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents: 9693
diff changeset
    47
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
    48
20008
e54a078153f7 tests: skip tests that require not having root (issue4089)
Matt Mackall <mpm@selenic.com>
parents: 16959
diff changeset
    49
#if unix-permissions no-root
12205
b4d0d646b3f7 tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents: 9693
diff changeset
    50
  $ hg bundle -qa repo.hg
b4d0d646b3f7 tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents: 9693
diff changeset
    51
  $ chmod -w foo/.hg/store/00changelog.i
b4d0d646b3f7 tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents: 9693
diff changeset
    52
b4d0d646b3f7 tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents: 9693
diff changeset
    53
  $ hg -R foo unbundle repo.hg
b4d0d646b3f7 tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents: 9693
diff changeset
    54
  adding changesets
41420
b6673e9bdcf6 dispatch: quote filename in IOError as well
Yuya Nishihara <yuya@tcha.org>
parents: 39489
diff changeset
    55
  abort: Permission denied: '$TESTTMP/foo/.hg/store/.00changelog.i-*' (glob)
12316
4134686b83e1 tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents: 12205
diff changeset
    56
  [255]
12205
b4d0d646b3f7 tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents: 9693
diff changeset
    57
b4d0d646b3f7 tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents: 9693
diff changeset
    58
  $ 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
    59
#endif
12205
b4d0d646b3f7 tests: unify test-journal-exists
Adrian Buehlmann <adrian@cadifra.com>
parents: 9693
diff changeset
    60