tests/test-confused-revert.t
author Manuel Jacob <me@manueljacob.de>
Mon, 11 Jul 2022 01:51:20 +0200
branchstable
changeset 49378 094a5fa3cf52
parent 45827 8d72e29ad1e0
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:
12284
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
     1
  $ hg init
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
     2
  $ echo foo > a
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
     3
  $ hg add a
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
     4
  $ hg commit -m "1"
1449
30146be3437c Add test-confused-revert, fix permissions on test-revert
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     5
12284
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
     6
  $ echo bar > b
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
     7
  $ hg add b
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
     8
  $ hg remove a
1449
30146be3437c Add test-confused-revert, fix permissions on test-revert
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
     9
12284
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    10
Should show a removed and b added:
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    11
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    12
  $ hg status
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    13
  A b
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    14
  R a
1449
30146be3437c Add test-confused-revert, fix permissions on test-revert
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    15
12284
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    16
  $ hg revert --all
39405
cb70501d8b71 revert: fix the inconsistency of status msgs in --interactive mode
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 28963
diff changeset
    17
  forgetting b
12284
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    18
  undeleting a
1449
30146be3437c Add test-confused-revert, fix permissions on test-revert
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    19
12284
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    20
Should show b unknown and a back to normal:
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    21
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    22
  $ hg status
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    23
  ? b
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    24
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    25
  $ rm b
1449
30146be3437c Add test-confused-revert, fix permissions on test-revert
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    26
12284
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    27
  $ hg co -C 0
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    28
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    29
  $ echo foo-a > a
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    30
  $ hg commit -m "2a"
1449
30146be3437c Add test-confused-revert, fix permissions on test-revert
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    31
12284
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    32
  $ hg co -C 0
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    33
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    34
  $ echo foo-b > a
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    35
  $ hg commit -m "2b"
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    36
  created new head
1449
30146be3437c Add test-confused-revert, fix permissions on test-revert
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    37
12284
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    38
  $ HGMERGE=true hg merge 1
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    39
  merging a
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    40
  0 files updated, 1 files merged, 0 files removed, 0 files unresolved
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    41
  (branch merge, don't forget to commit)
1449
30146be3437c Add test-confused-revert, fix permissions on test-revert
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    42
12284
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    43
Should show foo-b:
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    44
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    45
  $ cat a
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    46
  foo-b
1449
30146be3437c Add test-confused-revert, fix permissions on test-revert
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    47
12284
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    48
  $ echo bar > b
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    49
  $ hg add b
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    50
  $ rm a
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    51
  $ hg remove a
1449
30146be3437c Add test-confused-revert, fix permissions on test-revert
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    52
12284
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    53
Should show a removed and b added:
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    54
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    55
  $ hg status
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    56
  A b
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    57
  R a
1449
30146be3437c Add test-confused-revert, fix permissions on test-revert
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    58
12284
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    59
Revert should fail:
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    60
13022
3fd4e4e81382 revert: improve merge advice and favor its error over all
timeless <timeless@gmail.com>
parents: 12316
diff changeset
    61
  $ hg revert
14903
a934b9249574 revert: restore check for uncommitted merge (issue2915) (BC)
Matt Mackall <mpm@selenic.com>
parents: 14721
diff changeset
    62
  abort: uncommitted merge with no revision specified
28963
fc1d75e7a98d graft: use single quotes around command hint
timeless <timeless@mozdev.org>
parents: 14903
diff changeset
    63
  (use 'hg update' or see 'hg help revert')
45827
8d72e29ad1e0 errors: introduce InputError and use it from commands and cmdutil
Martin von Zweigbergk <martinvonz@google.com>
parents: 39405
diff changeset
    64
  [10]
1449
30146be3437c Add test-confused-revert, fix permissions on test-revert
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    65
12284
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    66
Revert should be ok now:
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    67
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    68
  $ hg revert -r2 --all
39405
cb70501d8b71 revert: fix the inconsistency of status msgs in --interactive mode
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 28963
diff changeset
    69
  forgetting b
12284
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    70
  undeleting a
1449
30146be3437c Add test-confused-revert, fix permissions on test-revert
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    71
12284
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    72
Should show b unknown and a marked modified (merged):
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    73
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    74
  $ hg status
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    75
  M a
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    76
  ? b
2214
6c6c0e5595a2 make test-confused-revert check working dir with two parents.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1933
diff changeset
    77
12284
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    78
Should show foo-b:
1449
30146be3437c Add test-confused-revert, fix permissions on test-revert
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    79
12284
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    80
  $ cat a
f7eb190310ef tests: unify test-confused-revert
Adrian Buehlmann <adrian@cadifra.com>
parents: 12156
diff changeset
    81
  foo-b
1449
30146be3437c Add test-confused-revert, fix permissions on test-revert
Matt Mackall <mpm@selenic.com>
parents:
diff changeset
    82