tests/test-eol.t
author Gregory Szorc <gregory.szorc@gmail.com>
Fri, 13 Apr 2018 11:02:34 -0700
changeset 37631 2f626233859b
parent 36068 b85b0bbed6de
child 38339 ae3f17a87b28
permissions -rw-r--r--
wireproto: implement batching on peer executor interface This is a bit more complicated than non-batch requests because we need to buffer sends until the last request arrives *and* we need to support resolving futures as data arrives from the remote. In a classical concurrent.futures executor model, the future "starts" as soon as it is submitted. However, we have nothing to start until the last command is submitted. If we did nothing, calling result() would deadlock, since the future hasn't "started." So in the case where we queue the command, we return a special future type whose result() will trigger sendcommands(). This eliminates the deadlock potential. It also serves as a check against callers who may be calling result() prematurely, as it will prevent any subsequent callcommands() from working. This behavior is slightly annoying and a bit restrictive. But it's the world that half duplex connections forces on us. In order to support streaming responses, we were previously using a generator. But with a futures-based API, we're using futures and not generators. So in order to get streaming, we need a background thread to read data from the server. The approach taken in this patch is to leverage the ThreadPoolExecutor from concurrent.futures for managing a background thread. We create an executor and future that resolves when all response data is processed (or an error occurs). When exiting the context manager, we wait on that background reading before returning. I was hoping we could manually spin up a threading.Thread and this would be simple. But I ran into a few deadlocks when implementing. After looking at the source code to concurrent.futures, I figured it would just be easier to use a ThreadPoolExecutor than implement all the code needed to manually manage a thread. To prove this works, a use of the batch API in discovery has been updated. Differential Revision: https://phab.mercurial-scm.org/D3269
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
     1
Test EOL extension
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: 13505
diff changeset
     3
  $ cat >> $HGRCPATH <<EOF
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
     4
  > [diff]
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
     5
  > git = True
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
     6
  > EOF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
     7
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
     8
Set up helpers
11249
0bb67503ad4b eol: extension for managing file EOLs
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
     9
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    10
  $ cat > switch-eol.py <<EOF
33973
efa6a420ba57 tests: update test-eol to pass our import checker
Augie Fackler <raf@durin42.com>
parents: 33747
diff changeset
    11
  > from __future__ import absolute_import
efa6a420ba57 tests: update test-eol to pass our import checker
Augie Fackler <raf@durin42.com>
parents: 33747
diff changeset
    12
  > import os
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    13
  > import sys
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    14
  > try:
33973
efa6a420ba57 tests: update test-eol to pass our import checker
Augie Fackler <raf@durin42.com>
parents: 33747
diff changeset
    15
  >     import msvcrt
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    16
  >     msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    17
  >     msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    18
  > except ImportError:
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    19
  >     pass
36068
b85b0bbed6de py3: replace file() with open() in test-eol.t
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33973
diff changeset
    20
  > (old, new) = sys.argv[1] == 'LF' and (b'\n', b'\r\n') or (b'\r\n', b'\n')
33747
24849d53697d tests: clean up many print statements to be print functions instead
Augie Fackler <augie@google.com>
parents: 32958
diff changeset
    21
  > print("%% switching encoding from %r to %r" % (old, new))
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    22
  > for path in sys.argv[2:]:
36068
b85b0bbed6de py3: replace file() with open() in test-eol.t
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33973
diff changeset
    23
  >     data = open(path, 'rb').read()
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    24
  >     data = data.replace(old, new)
36068
b85b0bbed6de py3: replace file() with open() in test-eol.t
Pulkit Goyal <7895pulkit@gmail.com>
parents: 33973
diff changeset
    25
  >     open(path, 'wb').write(data)
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    26
  > EOF
11249
0bb67503ad4b eol: extension for managing file EOLs
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    27
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    28
  $ seteol () {
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    29
  >     if [ $1 = "LF" ]; then
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    30
  >         EOL='\n'
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    31
  >     else
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    32
  >         EOL='\r\n'
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    33
  >     fi
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    34
  > }
11249
0bb67503ad4b eol: extension for managing file EOLs
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    35
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    36
  $ makerepo () {
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    37
  >     seteol $1
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    38
  >     echo "% setup $1 repository"
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    39
  >     hg init repo
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    40
  >     cd repo
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    41
  >     cat > .hgeol <<EOF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    42
  > [repository]
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    43
  > native = $1
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    44
  > [patterns]
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    45
  > mixed.txt = BIN
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    46
  > **.txt = native
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    47
  > EOF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    48
  >     printf "first${EOL}second${EOL}third${EOL}" > a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    49
  >     hg commit --addremove -m 'checkin'
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    50
  >     echo
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    51
  >     cd ..
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    52
  > }
11249
0bb67503ad4b eol: extension for managing file EOLs
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    53
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    54
  $ dotest () {
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    55
  >     seteol $1
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    56
  >     echo "% hg clone repo repo-$1"
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    57
  >     hg clone --noupdate repo repo-$1
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    58
  >     cd repo-$1
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    59
  >     cat > .hg/hgrc <<EOF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    60
  > [extensions]
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    61
  > eol =
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    62
  > [eol]
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    63
  > native = $1
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    64
  > EOF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    65
  >     hg update
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
    66
  >     echo '% a.txt'
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
    67
  >     cat a.txt
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    68
  >     echo '% hg cat a.txt'
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
    69
  >     hg cat a.txt
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    70
  >     printf "fourth${EOL}" >> a.txt
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
    71
  >     echo '% a.txt'
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
    72
  >     cat a.txt
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
    73
  >     hg diff
32958
75be14993fda cleanup: use $PYTHON to run python in many more tests
Augie Fackler <augie@google.com>
parents: 31116
diff changeset
    74
  >     $PYTHON ../switch-eol.py $1 a.txt
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    75
  >     echo '% hg diff only reports a single changed line:'
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
    76
  >     hg diff
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    77
  >     echo "% reverting back to $1 format"
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    78
  >     hg revert a.txt
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
    79
  >     cat a.txt
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    80
  >     printf "first\r\nsecond\n" > mixed.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    81
  >     hg add mixed.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    82
  >     echo "% hg commit of inconsistent .txt file marked as binary (should work)"
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    83
  >     hg commit -m 'binary file'
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    84
  >     echo "% hg commit of inconsistent .txt file marked as native (should fail)"
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    85
  >     printf "first\nsecond\r\nthird\nfourth\r\n" > a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    86
  >     hg commit -m 'inconsistent file'
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    87
  >     echo "% hg commit --config eol.only-consistent=False (should work)"
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    88
  >     hg commit --config eol.only-consistent=False -m 'inconsistent file'
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    89
  >     echo "% hg commit of binary .txt file marked as native (binary files always okay)"
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    90
  >     printf "first${EOL}\0${EOL}third${EOL}" > a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    91
  >     hg commit -m 'binary file'
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    92
  >     cd ..
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    93
  >     rm -r repo-$1
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    94
  > }
11249
0bb67503ad4b eol: extension for managing file EOLs
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
    95
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    96
  $ makemixedrepo () {
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    97
  >     echo
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    98
  >     echo "# setup $1 repository"
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
    99
  >     hg init mixed
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   100
  >     cd mixed
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   101
  >     printf "foo\r\nbar\r\nbaz\r\n" > win.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   102
  >     printf "foo\nbar\nbaz\n" > unix.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   103
  >     #printf "foo\r\nbar\nbaz\r\n" > mixed.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   104
  >     hg commit --addremove -m 'created mixed files'
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   105
  >     echo "# setting repository-native EOLs to $1"
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   106
  >     cat > .hgeol <<EOF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   107
  > [repository]
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   108
  > native = $1
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   109
  > [patterns]
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   110
  > **.txt = native
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   111
  > EOF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   112
  >     hg commit --addremove -m 'added .hgeol'
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   113
  >     cd ..
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   114
  > }
11249
0bb67503ad4b eol: extension for managing file EOLs
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   115
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   116
  $ testmixed () {
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   117
  >     echo
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   118
  >     echo "% hg clone mixed mixed-$1"
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   119
  >     hg clone mixed mixed-$1
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   120
  >     cd mixed-$1
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   121
  >     echo '% hg status (eol extension not yet activated)'
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   122
  >     hg status
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   123
  >     cat > .hg/hgrc <<EOF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   124
  > [extensions]
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   125
  > eol =
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   126
  > [eol]
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   127
  > native = $1
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   128
  > EOF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   129
  >     echo '% hg status (eol activated)'
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   130
  >     hg status
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   131
  >     echo '% hg commit'
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   132
  >     hg commit -m 'synchronized EOLs'
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   133
  >     echo '% hg status'
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   134
  >     hg status
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   135
  >     cd ..
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   136
  >     rm -r mixed-$1
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   137
  > }
11249
0bb67503ad4b eol: extension for managing file EOLs
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   138
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   139
Basic tests
11249
0bb67503ad4b eol: extension for managing file EOLs
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   140
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   141
  $ makerepo LF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   142
  % setup LF repository
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   143
  adding .hgeol
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   144
  adding a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   145
  
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   146
  $ dotest LF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   147
  % hg clone repo repo-LF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   148
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   149
  % a.txt
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   150
  first
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   151
  second
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   152
  third
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   153
  % hg cat a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   154
  first
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   155
  second
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   156
  third
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   157
  % a.txt
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   158
  first
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   159
  second
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   160
  third
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   161
  fourth
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   162
  diff --git a/a.txt b/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   163
  --- a/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   164
  +++ b/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   165
  @@ -1,3 +1,4 @@
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   166
   first
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   167
   second
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   168
   third
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   169
  +fourth
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   170
  % switching encoding from '\n' to '\r\n'
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   171
  % hg diff only reports a single changed line:
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   172
  diff --git a/a.txt b/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   173
  --- a/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   174
  +++ b/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   175
  @@ -1,3 +1,4 @@
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   176
   first
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   177
   second
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   178
   third
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   179
  +fourth
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   180
  % reverting back to LF format
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   181
  first
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   182
  second
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   183
  third
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   184
  % hg commit of inconsistent .txt file marked as binary (should work)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   185
  % hg commit of inconsistent .txt file marked as native (should fail)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   186
  abort: inconsistent newline style in a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   187
  
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   188
  % hg commit --config eol.only-consistent=False (should work)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   189
  % hg commit of binary .txt file marked as native (binary files always okay)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   190
  $ dotest CRLF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   191
  % hg clone repo repo-CRLF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   192
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   193
  % a.txt
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   194
  first\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   195
  second\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   196
  third\r (esc)
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   197
  % hg cat a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   198
  first
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   199
  second
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   200
  third
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   201
  % a.txt
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   202
  first\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   203
  second\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   204
  third\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   205
  fourth\r (esc)
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   206
  diff --git a/a.txt b/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   207
  --- a/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   208
  +++ b/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   209
  @@ -1,3 +1,4 @@
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   210
   first
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   211
   second
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   212
   third
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   213
  +fourth
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   214
  % switching encoding from '\r\n' to '\n'
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   215
  % hg diff only reports a single changed line:
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   216
  diff --git a/a.txt b/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   217
  --- a/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   218
  +++ b/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   219
  @@ -1,3 +1,4 @@
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   220
   first
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   221
   second
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   222
   third
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   223
  +fourth
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   224
  % reverting back to CRLF format
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   225
  first\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   226
  second\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   227
  third\r (esc)
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   228
  % hg commit of inconsistent .txt file marked as binary (should work)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   229
  % hg commit of inconsistent .txt file marked as native (should fail)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   230
  abort: inconsistent newline style in a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   231
  
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   232
  % hg commit --config eol.only-consistent=False (should work)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   233
  % hg commit of binary .txt file marked as native (binary files always okay)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   234
  $ rm -r repo
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   235
  $ makerepo CRLF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   236
  % setup CRLF repository
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   237
  adding .hgeol
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   238
  adding a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   239
  
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   240
  $ dotest LF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   241
  % hg clone repo repo-LF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   242
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   243
  % a.txt
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   244
  first
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   245
  second
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   246
  third
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   247
  % hg cat a.txt
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   248
  first\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   249
  second\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   250
  third\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   251
  % a.txt
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   252
  first
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   253
  second
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   254
  third
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   255
  fourth
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   256
  diff --git a/a.txt b/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   257
  --- a/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   258
  +++ b/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   259
  @@ -1,3 +1,4 @@
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   260
   first\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   261
   second\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   262
   third\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   263
  +fourth\r (esc)
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   264
  % switching encoding from '\n' to '\r\n'
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   265
  % hg diff only reports a single changed line:
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   266
  diff --git a/a.txt b/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   267
  --- a/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   268
  +++ b/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   269
  @@ -1,3 +1,4 @@
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   270
   first\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   271
   second\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   272
   third\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   273
  +fourth\r (esc)
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   274
  % reverting back to LF format
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   275
  first
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   276
  second
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   277
  third
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   278
  % hg commit of inconsistent .txt file marked as binary (should work)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   279
  % hg commit of inconsistent .txt file marked as native (should fail)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   280
  abort: inconsistent newline style in a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   281
  
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   282
  % hg commit --config eol.only-consistent=False (should work)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   283
  % hg commit of binary .txt file marked as native (binary files always okay)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   284
  $ dotest CRLF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   285
  % hg clone repo repo-CRLF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   286
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   287
  % a.txt
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   288
  first\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   289
  second\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   290
  third\r (esc)
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   291
  % hg cat a.txt
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   292
  first\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   293
  second\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   294
  third\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   295
  % a.txt
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   296
  first\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   297
  second\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   298
  third\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   299
  fourth\r (esc)
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   300
  diff --git a/a.txt b/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   301
  --- a/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   302
  +++ b/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   303
  @@ -1,3 +1,4 @@
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   304
   first\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   305
   second\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   306
   third\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   307
  +fourth\r (esc)
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   308
  % switching encoding from '\r\n' to '\n'
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   309
  % hg diff only reports a single changed line:
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   310
  diff --git a/a.txt b/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   311
  --- a/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   312
  +++ b/a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   313
  @@ -1,3 +1,4 @@
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   314
   first\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   315
   second\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   316
   third\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   317
  +fourth\r (esc)
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   318
  % reverting back to CRLF format
12943
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   319
  first\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   320
  second\r (esc)
7439ea4146f8 tests: use (esc) instead of other kinds of string escaping
Mads Kiilerich <mads@kiilerich.com>
parents: 12419
diff changeset
   321
  third\r (esc)
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   322
  % hg commit of inconsistent .txt file marked as binary (should work)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   323
  % hg commit of inconsistent .txt file marked as native (should fail)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   324
  abort: inconsistent newline style in a.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   325
  
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   326
  % hg commit --config eol.only-consistent=False (should work)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   327
  % hg commit of binary .txt file marked as native (binary files always okay)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   328
  $ rm -r repo
11249
0bb67503ad4b eol: extension for managing file EOLs
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   329
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   330
Mixed tests
11249
0bb67503ad4b eol: extension for managing file EOLs
Martin Geisler <mg@lazybytes.net>
parents:
diff changeset
   331
12419
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   332
  $ makemixedrepo LF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   333
  
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   334
  # setup LF repository
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   335
  adding unix.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   336
  adding win.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   337
  # setting repository-native EOLs to LF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   338
  adding .hgeol
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   339
  $ testmixed LF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   340
  
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   341
  % hg clone mixed mixed-LF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   342
  updating to branch default
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   343
  3 files updated, 0 files merged, 0 files removed, 0 files unresolved
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   344
  % hg status (eol extension not yet activated)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   345
  % hg status (eol activated)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   346
  M win.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   347
  % hg commit
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   348
  % hg status
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   349
  $ testmixed CRLF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   350
  
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   351
  % hg clone mixed mixed-CRLF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   352
  updating to branch default
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   353
  3 files updated, 0 files merged, 0 files removed, 0 files unresolved
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   354
  % hg status (eol extension not yet activated)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   355
  % hg status (eol activated)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   356
  M win.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   357
  % hg commit
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   358
  % hg status
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   359
  $ rm -r mixed
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   360
  $ makemixedrepo CRLF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   361
  
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   362
  # setup CRLF repository
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   363
  adding unix.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   364
  adding win.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   365
  # setting repository-native EOLs to CRLF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   366
  adding .hgeol
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   367
  $ testmixed LF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   368
  
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   369
  % hg clone mixed mixed-LF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   370
  updating to branch default
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   371
  3 files updated, 0 files merged, 0 files removed, 0 files unresolved
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   372
  % hg status (eol extension not yet activated)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   373
  % hg status (eol activated)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   374
  M unix.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   375
  % hg commit
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   376
  % hg status
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   377
  $ testmixed CRLF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   378
  
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   379
  % hg clone mixed mixed-CRLF
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   380
  updating to branch default
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   381
  3 files updated, 0 files merged, 0 files removed, 0 files unresolved
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   382
  % hg status (eol extension not yet activated)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   383
  % hg status (eol activated)
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   384
  M unix.txt
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   385
  % hg commit
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   386
  % hg status
f6a91fcd189a tests: unify test-eol
Matt Mackall <mpm@selenic.com>
parents: 11249
diff changeset
   387
  $ rm -r mixed
13475
c7bef25ca393 eol: handle LockUnavailable error (issue2569)
Martin Geisler <mg@aragost.com>
parents: 12943
diff changeset
   388
16986
79902f7e27df tests: convert some hghave unix-permissions to #if
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
   389
  $ echo '[extensions]' >> $HGRCPATH
79902f7e27df tests: convert some hghave unix-permissions to #if
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
   390
  $ echo 'eol =' >> $HGRCPATH
79902f7e27df tests: convert some hghave unix-permissions to #if
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
   391
79902f7e27df tests: convert some hghave unix-permissions to #if
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
   392
#if unix-permissions
79902f7e27df tests: convert some hghave unix-permissions to #if
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
   393
13475
c7bef25ca393 eol: handle LockUnavailable error (issue2569)
Martin Geisler <mg@aragost.com>
parents: 12943
diff changeset
   394
Test issue2569 -- eol extension takes write lock on reading:
c7bef25ca393 eol: handle LockUnavailable error (issue2569)
Martin Geisler <mg@aragost.com>
parents: 12943
diff changeset
   395
c7bef25ca393 eol: handle LockUnavailable error (issue2569)
Martin Geisler <mg@aragost.com>
parents: 12943
diff changeset
   396
  $ hg init repo
c7bef25ca393 eol: handle LockUnavailable error (issue2569)
Martin Geisler <mg@aragost.com>
parents: 12943
diff changeset
   397
  $ cd repo
c7bef25ca393 eol: handle LockUnavailable error (issue2569)
Martin Geisler <mg@aragost.com>
parents: 12943
diff changeset
   398
  $ touch .hgeol
c7bef25ca393 eol: handle LockUnavailable error (issue2569)
Martin Geisler <mg@aragost.com>
parents: 12943
diff changeset
   399
  $ hg status
c7bef25ca393 eol: handle LockUnavailable error (issue2569)
Martin Geisler <mg@aragost.com>
parents: 12943
diff changeset
   400
  ? .hgeol
c7bef25ca393 eol: handle LockUnavailable error (issue2569)
Martin Geisler <mg@aragost.com>
parents: 12943
diff changeset
   401
  $ chmod -R -w .hg
c7bef25ca393 eol: handle LockUnavailable error (issue2569)
Martin Geisler <mg@aragost.com>
parents: 12943
diff changeset
   402
  $ sleep 1
c7bef25ca393 eol: handle LockUnavailable error (issue2569)
Martin Geisler <mg@aragost.com>
parents: 12943
diff changeset
   403
  $ touch .hgeol
c7bef25ca393 eol: handle LockUnavailable error (issue2569)
Martin Geisler <mg@aragost.com>
parents: 12943
diff changeset
   404
  $ hg status --traceback
c7bef25ca393 eol: handle LockUnavailable error (issue2569)
Martin Geisler <mg@aragost.com>
parents: 12943
diff changeset
   405
  ? .hgeol
13621
c0b0b00f0279 tests: fix permission issue trying to remove test directory
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 13505
diff changeset
   406
  $ chmod -R u+w .hg
13503
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   407
  $ cd ..
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   408
16986
79902f7e27df tests: convert some hghave unix-permissions to #if
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
   409
#endif
79902f7e27df tests: convert some hghave unix-permissions to #if
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
   410
13503
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   411
Test cleverencode: and cleverdecode: aliases for win32text extension
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   412
23172
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 23068
diff changeset
   413
  $ cat <<EOF >> $HGRCPATH
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 23068
diff changeset
   414
  > [encode]
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 23068
diff changeset
   415
  > **.txt = cleverencode:
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 23068
diff changeset
   416
  > [decode]
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 23068
diff changeset
   417
  > **.txt = cleverdecode:
e955549cd045 tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents: 23068
diff changeset
   418
  > EOF
13503
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   419
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   420
  $ hg init win32compat
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   421
  $ cd win32compat
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   422
  $ printf "foo\r\nbar\r\nbaz\r\n" > win.txt
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   423
  $ printf "foo\nbar\nbaz\n" > unix.txt
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   424
  $ hg add
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   425
  adding unix.txt
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   426
  adding win.txt
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   427
  $ hg commit -m checkin
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   428
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   429
Check that both files have LF line-endings in the repository:
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   430
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   431
  $ hg cat win.txt
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   432
  foo
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   433
  bar
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   434
  baz
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   435
  $ hg cat unix.txt
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   436
  foo
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   437
  bar
5007ff32f356 eol: test win32text compatible encode/decode filters
Martin Geisler <mg@aragost.com>
parents: 13475
diff changeset
   438
  baz
13505
9b617c56eb65 eol: do not abort on parse error
Martin Geisler <mg@aragost.com>
parents: 13504
diff changeset
   439
9b617c56eb65 eol: do not abort on parse error
Martin Geisler <mg@aragost.com>
parents: 13504
diff changeset
   440
Test handling of a broken .hgeol file:
9b617c56eb65 eol: do not abort on parse error
Martin Geisler <mg@aragost.com>
parents: 13504
diff changeset
   441
9b617c56eb65 eol: do not abort on parse error
Martin Geisler <mg@aragost.com>
parents: 13504
diff changeset
   442
  $ touch .hgeol
9b617c56eb65 eol: do not abort on parse error
Martin Geisler <mg@aragost.com>
parents: 13504
diff changeset
   443
  $ hg add .hgeol
9b617c56eb65 eol: do not abort on parse error
Martin Geisler <mg@aragost.com>
parents: 13504
diff changeset
   444
  $ hg commit -m 'clean version'
9b617c56eb65 eol: do not abort on parse error
Martin Geisler <mg@aragost.com>
parents: 13504
diff changeset
   445
  $ echo "bad" > .hgeol
9b617c56eb65 eol: do not abort on parse error
Martin Geisler <mg@aragost.com>
parents: 13504
diff changeset
   446
  $ hg status
9b617c56eb65 eol: do not abort on parse error
Martin Geisler <mg@aragost.com>
parents: 13504
diff changeset
   447
  warning: ignoring .hgeol file due to parse error at .hgeol:1: bad
9b617c56eb65 eol: do not abort on parse error
Martin Geisler <mg@aragost.com>
parents: 13504
diff changeset
   448
  M .hgeol
9b617c56eb65 eol: do not abort on parse error
Martin Geisler <mg@aragost.com>
parents: 13504
diff changeset
   449
  $ hg revert .hgeol
9b617c56eb65 eol: do not abort on parse error
Martin Geisler <mg@aragost.com>
parents: 13504
diff changeset
   450
  warning: ignoring .hgeol file due to parse error at .hgeol:1: bad
9b617c56eb65 eol: do not abort on parse error
Martin Geisler <mg@aragost.com>
parents: 13504
diff changeset
   451
  $ hg status
9b617c56eb65 eol: do not abort on parse error
Martin Geisler <mg@aragost.com>
parents: 13504
diff changeset
   452
  ? .hgeol.orig
14854
23c2d7d25329 eol: eol.only-consistent can now be specified in .hgeol
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 13623
diff changeset
   453
23c2d7d25329 eol: eol.only-consistent can now be specified in .hgeol
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 13623
diff changeset
   454
Test eol.only-consistent can be specified in .hgeol
23c2d7d25329 eol: eol.only-consistent can now be specified in .hgeol
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 13623
diff changeset
   455
23c2d7d25329 eol: eol.only-consistent can now be specified in .hgeol
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 13623
diff changeset
   456
  $ cd $TESTTMP
23c2d7d25329 eol: eol.only-consistent can now be specified in .hgeol
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 13623
diff changeset
   457
  $ hg init only-consistent
23c2d7d25329 eol: eol.only-consistent can now be specified in .hgeol
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 13623
diff changeset
   458
  $ cd only-consistent
23c2d7d25329 eol: eol.only-consistent can now be specified in .hgeol
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 13623
diff changeset
   459
  $ printf "first\nsecond\r\n" > a.txt
23c2d7d25329 eol: eol.only-consistent can now be specified in .hgeol
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 13623
diff changeset
   460
  $ hg add a.txt
23c2d7d25329 eol: eol.only-consistent can now be specified in .hgeol
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 13623
diff changeset
   461
  $ cat > .hgeol << EOF
23c2d7d25329 eol: eol.only-consistent can now be specified in .hgeol
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 13623
diff changeset
   462
  > [eol]
23c2d7d25329 eol: eol.only-consistent can now be specified in .hgeol
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 13623
diff changeset
   463
  > only-consistent = True
23c2d7d25329 eol: eol.only-consistent can now be specified in .hgeol
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 13623
diff changeset
   464
  > EOF
23c2d7d25329 eol: eol.only-consistent can now be specified in .hgeol
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 13623
diff changeset
   465
  $ hg commit -m 'inconsistent'
23c2d7d25329 eol: eol.only-consistent can now be specified in .hgeol
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 13623
diff changeset
   466
  abort: inconsistent newline style in a.txt
23c2d7d25329 eol: eol.only-consistent can now be specified in .hgeol
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 13623
diff changeset
   467
  
23c2d7d25329 eol: eol.only-consistent can now be specified in .hgeol
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 13623
diff changeset
   468
  [255]
23c2d7d25329 eol: eol.only-consistent can now be specified in .hgeol
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 13623
diff changeset
   469
  $ cat > .hgeol << EOF
23c2d7d25329 eol: eol.only-consistent can now be specified in .hgeol
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 13623
diff changeset
   470
  > [eol]
23c2d7d25329 eol: eol.only-consistent can now be specified in .hgeol
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 13623
diff changeset
   471
  > only-consistent = False
23c2d7d25329 eol: eol.only-consistent can now be specified in .hgeol
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 13623
diff changeset
   472
  > EOF
23c2d7d25329 eol: eol.only-consistent can now be specified in .hgeol
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 13623
diff changeset
   473
  $ hg commit -m 'consistent'
23c2d7d25329 eol: eol.only-consistent can now be specified in .hgeol
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 13623
diff changeset
   474
31116
b44ab288358e subrepo: run the repo decoders when archiving
Matt Harbison <matt_harbison@yahoo.com>
parents: 23172
diff changeset
   475
  $ hg init subrepo
b44ab288358e subrepo: run the repo decoders when archiving
Matt Harbison <matt_harbison@yahoo.com>
parents: 23172
diff changeset
   476
  $ hg -R subrepo pull -qu .
b44ab288358e subrepo: run the repo decoders when archiving
Matt Harbison <matt_harbison@yahoo.com>
parents: 23172
diff changeset
   477
  $ echo "subrepo = subrepo" > .hgsub
b44ab288358e subrepo: run the repo decoders when archiving
Matt Harbison <matt_harbison@yahoo.com>
parents: 23172
diff changeset
   478
  $ hg ci -Am "add subrepo"
b44ab288358e subrepo: run the repo decoders when archiving
Matt Harbison <matt_harbison@yahoo.com>
parents: 23172
diff changeset
   479
  adding .hgeol
b44ab288358e subrepo: run the repo decoders when archiving
Matt Harbison <matt_harbison@yahoo.com>
parents: 23172
diff changeset
   480
  adding .hgsub
b44ab288358e subrepo: run the repo decoders when archiving
Matt Harbison <matt_harbison@yahoo.com>
parents: 23172
diff changeset
   481
  $ hg archive -S ../archive
b44ab288358e subrepo: run the repo decoders when archiving
Matt Harbison <matt_harbison@yahoo.com>
parents: 23172
diff changeset
   482
  $ find ../archive/* | sort
b44ab288358e subrepo: run the repo decoders when archiving
Matt Harbison <matt_harbison@yahoo.com>
parents: 23172
diff changeset
   483
  ../archive/a.txt
b44ab288358e subrepo: run the repo decoders when archiving
Matt Harbison <matt_harbison@yahoo.com>
parents: 23172
diff changeset
   484
  ../archive/subrepo
b44ab288358e subrepo: run the repo decoders when archiving
Matt Harbison <matt_harbison@yahoo.com>
parents: 23172
diff changeset
   485
  ../archive/subrepo/a.txt
b44ab288358e subrepo: run the repo decoders when archiving
Matt Harbison <matt_harbison@yahoo.com>
parents: 23172
diff changeset
   486
  $ cat ../archive/a.txt ../archive/subrepo/a.txt
b44ab288358e subrepo: run the repo decoders when archiving
Matt Harbison <matt_harbison@yahoo.com>
parents: 23172
diff changeset
   487
  first\r (esc)
b44ab288358e subrepo: run the repo decoders when archiving
Matt Harbison <matt_harbison@yahoo.com>
parents: 23172
diff changeset
   488
  second\r (esc)
b44ab288358e subrepo: run the repo decoders when archiving
Matt Harbison <matt_harbison@yahoo.com>
parents: 23172
diff changeset
   489
  first\r (esc)
b44ab288358e subrepo: run the repo decoders when archiving
Matt Harbison <matt_harbison@yahoo.com>
parents: 23172
diff changeset
   490
  second\r (esc)
14855
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   491
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   492
Test trailing newline
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   493
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   494
  $ cat >> $HGRCPATH <<EOF
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   495
  > [extensions]
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   496
  > eol=
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   497
  > EOF
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   498
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   499
setup repository
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   500
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   501
  $ cd $TESTTMP
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   502
  $ hg init trailing
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   503
  $ cd trailing
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   504
  $ cat > .hgeol <<EOF
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   505
  > [patterns]
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   506
  > **.txt = native
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   507
  > [eol]
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   508
  > fix-trailing-newline = False
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   509
  > EOF
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   510
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   511
add text without trailing newline
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   512
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   513
  $ printf "first\nsecond" > a.txt
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   514
  $ hg commit --addremove -m 'checking in'
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   515
  adding .hgeol
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   516
  adding a.txt
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   517
  $ rm a.txt
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   518
  $ hg update -C -q
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   519
  $ cat a.txt
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   520
  first
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   521
  second (no-eol)
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   522
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   523
  $ cat > .hgeol <<EOF
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   524
  > [patterns]
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   525
  > **.txt = native
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   526
  > [eol]
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   527
  > fix-trailing-newline = True
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   528
  > EOF
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   529
  $ printf "third\nfourth" > a.txt
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   530
  $ hg commit -m 'checking in with newline fix'
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   531
  $ rm a.txt
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   532
  $ hg update -C -q
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   533
  $ cat a.txt
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   534
  third
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   535
  fourth
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   536
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   537
append a line without trailing newline
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   538
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   539
  $ printf "fifth" >> a.txt
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   540
  $ hg commit -m 'adding another line line'
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   541
  $ rm a.txt
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   542
  $ hg update -C -q
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   543
  $ cat a.txt
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   544
  third
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   545
  fourth
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   546
  fifth
f33579435378 eol: fix missing trailing newlines in comitted files
Stepan Koltsov <stepancheg@yandex-team.ru>
parents: 14854
diff changeset
   547
23068
fb3e63c603e8 eol: fix crash when handling removed files
Mads Kiilerich <madski@unity3d.com>
parents: 16986
diff changeset
   548
amend of changesets with renamed/deleted files expose new code paths
fb3e63c603e8 eol: fix crash when handling removed files
Mads Kiilerich <madski@unity3d.com>
parents: 16986
diff changeset
   549
fb3e63c603e8 eol: fix crash when handling removed files
Mads Kiilerich <madski@unity3d.com>
parents: 16986
diff changeset
   550
  $ hg mv a.txt b.txt
fb3e63c603e8 eol: fix crash when handling removed files
Mads Kiilerich <madski@unity3d.com>
parents: 16986
diff changeset
   551
  $ hg ci --amend -q
fb3e63c603e8 eol: fix crash when handling removed files
Mads Kiilerich <madski@unity3d.com>
parents: 16986
diff changeset
   552
  $ hg diff -c.
fb3e63c603e8 eol: fix crash when handling removed files
Mads Kiilerich <madski@unity3d.com>
parents: 16986
diff changeset
   553
  diff --git a/a.txt b/b.txt
fb3e63c603e8 eol: fix crash when handling removed files
Mads Kiilerich <madski@unity3d.com>
parents: 16986
diff changeset
   554
  rename from a.txt
fb3e63c603e8 eol: fix crash when handling removed files
Mads Kiilerich <madski@unity3d.com>
parents: 16986
diff changeset
   555
  rename to b.txt
fb3e63c603e8 eol: fix crash when handling removed files
Mads Kiilerich <madski@unity3d.com>
parents: 16986
diff changeset
   556
  --- a/a.txt
fb3e63c603e8 eol: fix crash when handling removed files
Mads Kiilerich <madski@unity3d.com>
parents: 16986
diff changeset
   557
  +++ b/b.txt
fb3e63c603e8 eol: fix crash when handling removed files
Mads Kiilerich <madski@unity3d.com>
parents: 16986
diff changeset
   558
  @@ -1,2 +1,3 @@
fb3e63c603e8 eol: fix crash when handling removed files
Mads Kiilerich <madski@unity3d.com>
parents: 16986
diff changeset
   559
   third
fb3e63c603e8 eol: fix crash when handling removed files
Mads Kiilerich <madski@unity3d.com>
parents: 16986
diff changeset
   560
   fourth
fb3e63c603e8 eol: fix crash when handling removed files
Mads Kiilerich <madski@unity3d.com>
parents: 16986
diff changeset
   561
  +fifth
fb3e63c603e8 eol: fix crash when handling removed files
Mads Kiilerich <madski@unity3d.com>
parents: 16986
diff changeset
   562
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 15443
diff changeset
   563
  $ cd ..