tests/test-mq-qgoto.t
author Manuel Jacob <me@manueljacob.de>
Mon, 11 Jul 2022 01:51:20 +0200
branchstable
changeset 49378 094a5fa3cf52
parent 26780 bbf544b5f2e9
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:
12324
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
     1
  $ echo "[extensions]" >> $HGRCPATH
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
     2
  $ echo "mq=" >> $HGRCPATH
4432
905397be7688 mq: add qgoto command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
     3
12324
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
     4
  $ hg init a
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
     5
  $ cd a
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
     6
  $ echo a > a
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
     7
  $ hg ci -Ama
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
     8
  adding a
4432
905397be7688 mq: add qgoto command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
     9
12324
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    10
  $ hg qnew a.patch
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    11
  $ echo a >> a
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    12
  $ hg qrefresh
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    13
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    14
  $ hg qnew b.patch
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    15
  $ echo b > b
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    16
  $ hg add b
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    17
  $ hg qrefresh
4432
905397be7688 mq: add qgoto command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
    18
12324
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    19
  $ hg qnew c.patch
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    20
  $ echo c > c
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    21
  $ hg add c
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    22
  $ hg qrefresh
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    23
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    24
  $ hg qgoto a.patch
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    25
  popping c.patch
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    26
  popping b.patch
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    27
  now at: a.patch
4432
905397be7688 mq: add qgoto command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
    28
12324
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    29
  $ hg qgoto c.patch
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    30
  applying b.patch
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    31
  applying c.patch
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    32
  now at: c.patch
4432
905397be7688 mq: add qgoto command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
    33
12324
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    34
  $ hg qgoto b.patch
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    35
  popping c.patch
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    36
  now at: b.patch
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    37
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    38
Using index:
4432
905397be7688 mq: add qgoto command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff changeset
    39
12324
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    40
  $ hg qgoto 0
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    41
  popping b.patch
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    42
  now at: a.patch
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    43
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    44
  $ hg qgoto 2
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    45
  applying b.patch
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    46
  applying c.patch
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    47
  now at: c.patch
7568
12df451ce205 mq: don't warn about ambiguous patch name when using patch index (issue1439)
Jason Orendorff <jorendorff@mozilla.com>
parents: 4432
diff changeset
    48
18342
de99de39ba28 mq: fix qpop of working directory parent patch when not at qtip
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
    49
No warnings when using index ... and update from non-qtip and with pending
de99de39ba28 mq: fix qpop of working directory parent patch when not at qtip
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
    50
changes in unrelated files:
12324
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    51
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    52
  $ hg qnew bug314159
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    53
  $ echo d >> c
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    54
  $ hg qrefresh
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    55
  $ hg qnew bug141421
18342
de99de39ba28 mq: fix qpop of working directory parent patch when not at qtip
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
    56
  $ echo e >> b
12324
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    57
  $ hg qrefresh
7568
12df451ce205 mq: don't warn about ambiguous patch name when using patch index (issue1439)
Jason Orendorff <jorendorff@mozilla.com>
parents: 4432
diff changeset
    58
18342
de99de39ba28 mq: fix qpop of working directory parent patch when not at qtip
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
    59
  $ hg up -r bug314159
de99de39ba28 mq: fix qpop of working directory parent patch when not at qtip
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
    60
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
de99de39ba28 mq: fix qpop of working directory parent patch when not at qtip
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
    61
  $ echo f >> a
de99de39ba28 mq: fix qpop of working directory parent patch when not at qtip
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
    62
  $ echo f >> b
de99de39ba28 mq: fix qpop of working directory parent patch when not at qtip
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
    63
  $ echo f >> c
de99de39ba28 mq: fix qpop of working directory parent patch when not at qtip
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
    64
12324
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    65
  $ hg qgoto 1
26780
bbf544b5f2e9 mq: consistently use qrefresh
timeless@mozdev.org
parents: 18342
diff changeset
    66
  abort: local changes found, qrefresh first
18342
de99de39ba28 mq: fix qpop of working directory parent patch when not at qtip
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
    67
  [255]
de99de39ba28 mq: fix qpop of working directory parent patch when not at qtip
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
    68
  $ hg qgoto 1 -f
12324
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    69
  popping bug141421
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    70
  popping bug314159
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    71
  popping c.patch
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    72
  now at: b.patch
18342
de99de39ba28 mq: fix qpop of working directory parent patch when not at qtip
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
    73
  $ hg st
de99de39ba28 mq: fix qpop of working directory parent patch when not at qtip
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
    74
  M a
de99de39ba28 mq: fix qpop of working directory parent patch when not at qtip
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
    75
  M b
de99de39ba28 mq: fix qpop of working directory parent patch when not at qtip
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
    76
  ? c.orig
de99de39ba28 mq: fix qpop of working directory parent patch when not at qtip
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
    77
  $ hg up -qCr.
7568
12df451ce205 mq: don't warn about ambiguous patch name when using patch index (issue1439)
Jason Orendorff <jorendorff@mozilla.com>
parents: 4432
diff changeset
    78
12324
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    79
  $ hg qgoto 3
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    80
  applying c.patch
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    81
  applying bug314159
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    82
  now at: bug314159
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    83
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    84
Detect ambiguous non-index:
7568
12df451ce205 mq: don't warn about ambiguous patch name when using patch index (issue1439)
Jason Orendorff <jorendorff@mozilla.com>
parents: 4432
diff changeset
    85
12324
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    86
  $ hg qgoto 14
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    87
  patch name "14" is ambiguous:
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    88
    bug314159
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    89
    bug141421
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    90
  abort: patch 14 not in series
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    91
  [255]
b701610f6c56 tests: unify some of test-mq*
Adrian Buehlmann <adrian@cadifra.com>
parents: 7568
diff changeset
    92
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 12324
diff changeset
    93
  $ cd ..