tests/test-patch.t
author Yuya Nishihara <yuya@tcha.org>
Sat, 27 Jun 2015 17:25:01 +0900
changeset 25705 48919d246a47
parent 15194 0705f2ac79d6
child 32958 75be14993fda
permissions -rw-r--r--
revset: add function to build dict of positional and keyword arguments Keyword arguments will be convenient for functions that will take more than one optional or boolean flags. For example, file(pattern[, subrepos=false]) subrepo([[pattern], status]) Because I don't think all functions should accept key=value syntax, getkwargs() does not support variadic functions such as 'ancestor(*changeset)'. The core logic is placed in the parser module because keyword arguments will be more useful in the templater, where functions take more options. Test cases will be added by the next patch.
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
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
     3
  > print 'Using custom patch'
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
     4
  > if '--binary' in sys.argv:
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
     5
  >     print '--binary found !'
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
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
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
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    34
  updating to branch default
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    35
  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
    36
11784
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    37
  $ hg --cwd b import -v ../a.diff
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    38
  applying ../a.diff
8a1943685dfb tests: unify test-patch
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents: 4645
diff changeset
    39
  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
    40
  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
    41
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    42
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
    43
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    44
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
    45
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    46
  $ rm $HGRCPATH
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    47
  $ hg init c
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    48
  $ 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
    49
  $ 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
    50
  $ 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
    51
  $ 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
    52
  $ 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
    53
  > 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
    54
  > # 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
    55
  > 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
    56
  > # HG changeset patch
80a3d1121c10 import: only the first hg patch marker should be processed (issue2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 12645
diff changeset
    57
  > # 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
    58
  > eof
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    59
  $ 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
    60
  $ 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
    61
  $ cd ..
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    62
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    63
Clone and apply patch:
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    64
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    65
  $ 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
    66
  adding changesets
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    67
  adding manifests
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    68
  adding file changes
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    69
  added 1 changesets with 1 changes to 1 files
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    70
  updating to branch default
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    71
  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
    72
  $ cd d
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    73
  $ hg import ../c/p
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    74
  applying ../c/p
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    75
  $ 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
    76
  changeset:   1:cd0bde79c428
12645
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    77
  tag:         tip
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    78
  user:        test
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    79
  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
    80
  files:       a
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    81
  description:
12728
80a3d1121c10 import: only the first hg patch marker should be processed (issue2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 12645
diff changeset
    82
  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
    83
  # 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
    84
  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
    85
  # HG changeset patch
80a3d1121c10 import: only the first hg patch marker should be processed (issue2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 12645
diff changeset
    86
  # 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
    87
  
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    88
  
d7452292f9d3 import: don't strip '#' lines from patch descriptions (issue 2417)
Mads Kiilerich <mads@kiilerich.com>
parents: 11815
diff changeset
    89
  $ cd ..