tests/test-patch.t
author Gregory Szorc <gregory.szorc@gmail.com>
Tue, 01 Mar 2022 20:46:06 -0800
changeset 48916 bac59722c5a3
parent 48876 42d2b31cee0b
permissions -rw-r--r--
largefiles: remove pycompat.iteritems() Differential Revision: https://phab.mercurial-scm.org/D12321
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11784
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
     1
  $ cat > patchtool.py <<EOF
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
     2
  > import sys
33972
b1f75d8e887a tests: update test-patch to pass our import checker
Augie Fackler <raf@durin42.com>
parents: 32940
diff changeset
     3
  > print('Using custom patch')
11784
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
     4
  > if '--binary' in sys.argv:
33972
b1f75d8e887a tests: update test-patch to pass our import checker
Augie Fackler <raf@durin42.com>
parents: 32940
diff changeset
     5
  >     print('--binary found !')
11784
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
     6
  > EOF
4645
0de7e6e27fe4 Add tests for ui.patch regression.
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     7
11784
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
     8
  $ echo "[ui]" >> $HGRCPATH
39707
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 38305
diff changeset
     9
  $ echo "patch=\"$PYTHON\" ../patchtool.py" >> $HGRCPATH
4645
0de7e6e27fe4 Add tests for ui.patch regression.
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    10
11784
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    11
  $ hg init a
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    12
  $ cd a
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    13
  $ echo a > a
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    14
  $ hg commit -Ama -d '1 0'
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    15
  adding a
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    16
  $ echo b >> a
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    17
  $ hg commit -Amb -d '2 0'
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    18
  $ cd ..
4645
0de7e6e27fe4 Add tests for ui.patch regression.
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    19
11815
20a88cf7ee92 test-patch.t: typos
Christian Ebert <blacktrash@gmx.net>
parents: 11784
diff changeset
    20
This test checks that:
20a88cf7ee92 test-patch.t: typos
Christian Ebert <blacktrash@gmx.net>
parents: 11784
diff changeset
    21
 - custom patch commands with arguments actually work
11784
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    22
 - patch code does not try to add weird arguments like
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    23
 --binary when custom patch commands are used. For instance
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    24
 --binary is added by default under win32.
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    25
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    26
check custom patch options are honored
4645
0de7e6e27fe4 Add tests for ui.patch regression.
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    27
11784
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    28
  $ hg --cwd a export -o ../a.diff tip
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    29
  $ hg clone -r 0 a b
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    30
  adding changesets
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    31
  adding manifests
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    32
  adding file changes
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    33
  added 1 changesets with 1 changes to 1 files
34661
eb586ed5d8ce transaction-summary: show the range of new revisions upon pull/unbundle (BC)
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 33972
diff changeset
    34
  new changesets 8580ff50825a
11784
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    35
  updating to branch default
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    36
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
4645
0de7e6e27fe4 Add tests for ui.patch regression.
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
    37
11784
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    38
  $ hg --cwd b import -v ../a.diff
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    39
  applying ../a.diff
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    40
  Using custom patch
15194
0705f2ac79d6 import: simplify status reporting logic (and make it more I18N-friendly)
Greg Ward <greg@gerg.ca>
parents: 14832
diff changeset
    41
  applied to working directory
12645
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    42
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    43
Issue2417: hg import with # comments in description
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    44
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    45
Prepare source repo and patch:
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    46
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    47
  $ rm $HGRCPATH
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    48
  $ hg init c
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    49
  $ cd c
14832
d60e4f227d75 patch: fix parsing patch files containing CRs not followed by LFs
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 12847
diff changeset
    50
  $ printf "a\rc" > a
12645
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    51
  $ hg ci -A -m 0 a -d '0 0'
14832
d60e4f227d75 patch: fix parsing patch files containing CRs not followed by LFs
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 12847
diff changeset
    52
  $ printf "a\rb\rc" > a
12645
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    53
  $ cat << eof > log
12728
80a3d1121c10 import: only the first hg patch marker should be processed (issue2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 12645
diff changeset
    54
  > first line which can't start with '# '
80a3d1121c10 import: only the first hg patch marker should be processed (issue2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 12645
diff changeset
    55
  > # second line is a comment but that shouldn't be a problem.
80a3d1121c10 import: only the first hg patch marker should be processed (issue2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 12645
diff changeset
    56
  > A patch marker like this was more problematic even after d7452292f9d3:
80a3d1121c10 import: only the first hg patch marker should be processed (issue2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 12645
diff changeset
    57
  > # HG changeset patch
80a3d1121c10 import: only the first hg patch marker should be processed (issue2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 12645
diff changeset
    58
  > # User lines looks like this - but it _is_ just a comment
12645
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    59
  > eof
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    60
  $ hg ci -l log -d '0 0'
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    61
  $ hg export -o p 1
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    62
  $ cd ..
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    63
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    64
Clone and apply patch:
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    65
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    66
  $ hg clone -r 0 c d
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    67
  adding changesets
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    68
  adding manifests
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    69
  adding file changes
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    70
  added 1 changesets with 1 changes to 1 files
34661
eb586ed5d8ce transaction-summary: show the range of new revisions upon pull/unbundle (BC)
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 33972
diff changeset
    71
  new changesets 7fadb901d403
12645
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    72
  updating to branch default
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    73
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    74
  $ cd d
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    75
  $ hg import ../c/p
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    76
  applying ../c/p
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    77
  $ hg log -v -r 1
14832
d60e4f227d75 patch: fix parsing patch files containing CRs not followed by LFs
Wagner Bruna <wbruna@softwareexpress.com.br>
parents: 12847
diff changeset
    78
  changeset:   1:cd0bde79c428
12645
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    79
  tag:         tip
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    80
  user:        test
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    81
  date:        Thu Jan 01 00:00:00 1970 +0000
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    82
  files:       a
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    83
  description:
12728
80a3d1121c10 import: only the first hg patch marker should be processed (issue2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 12645
diff changeset
    84
  first line which can't start with '# '
80a3d1121c10 import: only the first hg patch marker should be processed (issue2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 12645
diff changeset
    85
  # second line is a comment but that shouldn't be a problem.
80a3d1121c10 import: only the first hg patch marker should be processed (issue2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 12645
diff changeset
    86
  A patch marker like this was more problematic even after d7452292f9d3:
80a3d1121c10 import: only the first hg patch marker should be processed (issue2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 12645
diff changeset
    87
  # HG changeset patch
80a3d1121c10 import: only the first hg patch marker should be processed (issue2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 12645
diff changeset
    88
  # User lines looks like this - but it _is_ just a comment
12645
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    89
  
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    90
  
37459
90c5ca718781 procutil: rewrite popen() as a subprocess.Popen wrapper (issue4746) (API)
Yuya Nishihara <yuya@tcha.org>
parents: 34661
diff changeset
    91
90c5ca718781 procutil: rewrite popen() as a subprocess.Popen wrapper (issue4746) (API)
Yuya Nishihara <yuya@tcha.org>
parents: 34661
diff changeset
    92
Error exit (issue4746)
90c5ca718781 procutil: rewrite popen() as a subprocess.Popen wrapper (issue4746) (API)
Yuya Nishihara <yuya@tcha.org>
parents: 34661
diff changeset
    93
38292
6cc5d01a58a6 tests: fix test-patch.t on pickier /bin/sh implementations
Augie Fackler <augie@google.com>
parents: 37459
diff changeset
    94
  $ cat >> exit1.py <<EOF
6cc5d01a58a6 tests: fix test-patch.t on pickier /bin/sh implementations
Augie Fackler <augie@google.com>
parents: 37459
diff changeset
    95
  > import sys
6cc5d01a58a6 tests: fix test-patch.t on pickier /bin/sh implementations
Augie Fackler <augie@google.com>
parents: 37459
diff changeset
    96
  > sys.exit(1)
6cc5d01a58a6 tests: fix test-patch.t on pickier /bin/sh implementations
Augie Fackler <augie@google.com>
parents: 37459
diff changeset
    97
  > EOF
6cc5d01a58a6 tests: fix test-patch.t on pickier /bin/sh implementations
Augie Fackler <augie@google.com>
parents: 37459
diff changeset
    98
6cc5d01a58a6 tests: fix test-patch.t on pickier /bin/sh implementations
Augie Fackler <augie@google.com>
parents: 37459
diff changeset
    99
  $ hg import ../c/p --config ui.patch="\"$PYTHON\" \"`pwd`/exit1.py\""
37459
90c5ca718781 procutil: rewrite popen() as a subprocess.Popen wrapper (issue4746) (API)
Yuya Nishihara <yuya@tcha.org>
parents: 34661
diff changeset
   100
  applying ../c/p
90c5ca718781 procutil: rewrite popen() as a subprocess.Popen wrapper (issue4746) (API)
Yuya Nishihara <yuya@tcha.org>
parents: 34661
diff changeset
   101
  abort: patch command failed: exited with status 1
90c5ca718781 procutil: rewrite popen() as a subprocess.Popen wrapper (issue4746) (API)
Yuya Nishihara <yuya@tcha.org>
parents: 34661
diff changeset
   102
  [255]
90c5ca718781 procutil: rewrite popen() as a subprocess.Popen wrapper (issue4746) (API)
Yuya Nishihara <yuya@tcha.org>
parents: 34661
diff changeset
   103
12645
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
   104
  $ cd ..