tests/test-eol-add.t
author Manuel Jacob <me@manueljacob.de>
Mon, 29 Jun 2020 15:03:36 +0200
branchstable
changeset 45022 e3b19004087a
parent 13519 43b3b761d9d1
permissions -rw-r--r--
convert: correctly convert paths to UTF-8 for Subversion The previous code using encoding.tolocal() only worked by chance in these situations: * The string is ASCII: The fast path was triggered and the string was returned unmodified. * The local encoding is UTF-8: The source and target encoding is the same. * The string is not valid UTF-8 and the native encoding is ISO-8859-1: If the string doesn’t decode using UTF-8, ISO-8859-1 is tried as a fallback. During `hg convert`, the local encoding is always UTF-8. The irony is that in this case, encoding.tolocal() behaves like what someone would expect the reverse function, encoding.fromlocal(), to do. When the locale encoding is ISO-8859-15, trying to convert a SVN repo `/tmp/a€` failed before like this: file:///tmp/a%C2%A4 does not look like a Subversion repository to libsvn version 1.14.0 The correct URL is `file:///tmp/a%E2%82%AC`. Unlike previously (with the ISO-8859-1 fallback), decoding the path using the locale encoding can fail. In this case, we have to bail out, as Subversion won’t be able to do anything useful with the path.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12421
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
     1
Test adding .hgeol
11249
0bb67503ad4b eol: extension for managing file EOLs
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
     2
13519
43b3b761d9d1 tests: don't overwrite HGRCPATH
Martin Geisler <mg@aragost.com>
parents: 12943
diff changeset
     3
  $ cat >> $HGRCPATH <<EOF
12421
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
     4
  > [diff]
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
     5
  > git = 1
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
     6
  > EOF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
     7
  $ seteol () {
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
     8
  >     if [ $1 = "LF" ]; then
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
     9
  >         EOL='\n'
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    10
  >     else
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    11
  >         EOL='\r\n'
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    12
  >     fi
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    13
  > }
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    14
  $ makerepo () {
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    15
  >     echo
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    16
  >     echo "# ==== setup repository ===="
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    17
  >     echo '% hg init'
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    18
  >     hg init repo
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    19
  >     cd repo
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    20
  >     printf "first\nsecond\nthird\n" > a.txt
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    21
  >     hg commit -d '100 0' --addremove -m 'LF commit'
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    22
  >     cd ..
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    23
  > }
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    24
  $ dotest () {
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    25
  >     seteol $1
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    26
  >     echo
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    27
  >     echo "% hg clone repo repo-$1"
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    28
  >     hg clone repo repo-$1
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    29
  >     cd repo-$1
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    30
  >     cat > .hg/hgrc <<EOF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    31
  > [extensions]
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    32
  > eol =
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    33
  > [eol]
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    34
  > native = LF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    35
  > EOF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    36
  >     cat > .hgeol <<EOF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    37
  > [patterns]
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    38
  > **.txt = native
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    39
  > [repository]
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    40
  > native = $1
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    41
  > EOF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    42
  >     echo '% hg add .hgeol'
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    43
  >     hg add .hgeol
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    44
  >     echo '% hg status'
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    45
  >     hg status
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    46
  >     echo '% hg commit'
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    47
  >     hg commit -d '200 0' -m 'Added .hgeol file'
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    48
  >     echo '% hg status'
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    49
  >     hg status
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    50
  >     echo '% hg tip -p'
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12421
diff changeset
    51
  >     hg tip -p
12421
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    52
  >     cd ..
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    53
  >     rm -r repo-$1
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    54
  > }
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    55
  $ makerepo
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    56
  
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    57
  # ==== setup repository ====
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    58
  % hg init
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    59
  adding a.txt
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    60
  $ dotest LF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    61
  
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    62
  % hg clone repo repo-LF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    63
  updating to branch default
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    64
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    65
  % hg add .hgeol
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    66
  % hg status
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    67
  A .hgeol
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    68
  % hg commit
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    69
  % hg status
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    70
  % hg tip -p
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    71
  changeset:   1:33503edb53b0
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    72
  tag:         tip
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    73
  user:        test
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    74
  date:        Thu Jan 01 00:03:20 1970 +0000
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    75
  summary:     Added .hgeol file
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    76
  
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    77
  diff --git a/.hgeol b/.hgeol
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    78
  new file mode 100644
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    79
  --- /dev/null
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    80
  +++ b/.hgeol
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    81
  @@ -0,0 +1,4 @@
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    82
  +[patterns]
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    83
  +**.txt = native
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    84
  +[repository]
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    85
  +native = LF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    86
  
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    87
  $ dotest CRLF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    88
  
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    89
  % hg clone repo repo-CRLF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    90
  updating to branch default
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    91
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    92
  % hg add .hgeol
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    93
  % hg status
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    94
  M a.txt
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    95
  A .hgeol
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    96
  % hg commit
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    97
  % hg status
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    98
  % hg tip -p
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    99
  changeset:   1:6e64eaa9eb23
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   100
  tag:         tip
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   101
  user:        test
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   102
  date:        Thu Jan 01 00:03:20 1970 +0000
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   103
  summary:     Added .hgeol file
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   104
  
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   105
  diff --git a/.hgeol b/.hgeol
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   106
  new file mode 100644
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   107
  --- /dev/null
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   108
  +++ b/.hgeol
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   109
  @@ -0,0 +1,4 @@
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   110
  +[patterns]
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   111
  +**.txt = native
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   112
  +[repository]
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   113
  +native = CRLF
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   114
  diff --git a/a.txt b/a.txt
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   115
  --- a/a.txt
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   116
  +++ b/a.txt
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   117
  @@ -1,3 +1,3 @@
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   118
  -first
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   119
  -second
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   120
  -third
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12421
diff changeset
   121
  +first\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12421
diff changeset
   122
  +second\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12421
diff changeset
   123
  +third\r (esc)
12421
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   124
  
0ae7cad68842 tests: unify test-eol-add
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   125
  $ rm -r repo