tests/test-journal-exists.t
author Manuel Jacob <me@manueljacob.de>
Mon, 11 Jul 2022 01:51:20 +0200
branchstable
changeset 49378 094a5fa3cf52
parent 45906 95c4cca641f6
child 49621 55c6ebd11cb9
permissions -rw-r--r--
procutil: make stream detection in make_line_buffered more correct and strict In make_line_buffered(), we don’t want to wrap the stream if we know that lines get flushed to the underlying raw stream already. Previously, the heuristic was too optimistic. It assumed that any stream which is not an instance of io.BufferedIOBase doesn’t need wrapping. However, there are buffered streams that aren’t instances of io.BufferedIOBase, like Mercurial’s own winstdout. The new logic is different in two ways: First, only for the check, if unwraps any combination of WriteAllWrapper and winstdout. Second, it skips wrapping the stream only if it is an instance of io.RawIOBase (or already wrapped). If it is an instance of io.BufferedIOBase, it gets wrapped. In any other case, the function raises an exception. This ensures that, if an unknown stream is passed or we add another wrapper in the future, we don’t wrap the stream if it’s already line buffered or not wrap the stream if it’s not line buffered. In fact, this was already helpful during development of this change. Without it, I possibly would have forgot that WriteAllWrapper needs to be ignored for the check, leading to unnecessary wrapping if stdout is unbuffered. The alternative would have been to always wrap unknown streams. However, I don’t think that anyone would benefit from being less strict. We can expect streams from the standard library to be subclassing either io.RawIOBase or io.BufferedIOBase, so running Mercurial in the standard way should not regress by this change. Py2exe might replace sys.stdout and sys.stderr, but that currently breaks Mercurial anyway and also these streams don’t claim to be interactive, so this function is not called for them.
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