summaryrefslogtreecommitdiff
path: root/tests/test-eol-patch.t
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-eol-patch.t')
-rw-r--r--tests/test-eol-patch.t400
1 files changed, 400 insertions, 0 deletions
diff --git a/tests/test-eol-patch.t b/tests/test-eol-patch.t
new file mode 100644
index 0000000..e2786f8
--- /dev/null
+++ b/tests/test-eol-patch.t
@@ -0,0 +1,400 @@
+Test EOL patching
+
+ $ cat >> $HGRCPATH <<EOF
+ > [diff]
+ > git = 1
+ > EOF
+
+Set up helpers
+
+ $ seteol () {
+ > if [ $1 = "LF" ]; then
+ > EOL='\n'
+ > else
+ > EOL='\r\n'
+ > fi
+ > }
+
+ $ makerepo () {
+ > seteol $1
+ > echo
+ > echo "# ==== setup $1 repository ===="
+ > echo '% hg init'
+ > hg init repo
+ > cd repo
+ > cat > .hgeol <<EOF
+ > [repository]
+ > native = $1
+ > [patterns]
+ > unix.txt = LF
+ > win.txt = CRLF
+ > **.txt = native
+ > EOF
+ > printf "first\r\nsecond\r\nthird\r\n" > win.txt
+ > printf "first\nsecond\nthird\n" > unix.txt
+ > printf "first${EOL}second${EOL}third${EOL}" > native.txt
+ > hg commit --addremove -m 'checkin'
+ > cd ..
+ > }
+
+ $ dotest () {
+ > seteol $1
+ > echo
+ > echo "% hg clone repo repo-$1"
+ > hg clone --noupdate repo repo-$1
+ > cd repo-$1
+ > cat > .hg/hgrc <<EOF
+ > [extensions]
+ > eol =
+ > [eol]
+ > native = $1
+ > EOF
+ > hg update
+ > echo '% native.txt'
+ > cat native.txt
+ > echo '% unix.txt'
+ > cat unix.txt
+ > echo '% win.txt'
+ > cat win.txt
+ > printf "first${EOL}third${EOL}" > native.txt
+ > printf "first\r\nthird\r\n" > win.txt
+ > printf "first\nthird\n" > unix.txt
+ > echo '% hg diff'
+ > hg diff > p
+ > cat p
+ > echo '% hg revert'
+ > hg revert --all
+ > echo '% hg import'
+ > hg import -m 'patch' p
+ > echo '% native.txt'
+ > cat native.txt
+ > echo '% unix.txt'
+ > cat unix.txt
+ > echo '% win.txt'
+ > cat win.txt
+ > echo '% hg diff -c tip'
+ > hg diff -c tip
+ > cd ..
+ > rm -r repo-$1
+ > }
+
+Run tests
+
+ $ makerepo LF
+
+ # ==== setup LF repository ====
+ % hg init
+ adding .hgeol
+ adding native.txt
+ adding unix.txt
+ adding win.txt
+ $ dotest LF
+
+ % hg clone repo repo-LF
+ 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ % native.txt
+ first
+ second
+ third
+ % unix.txt
+ first
+ second
+ third
+ % win.txt
+ first\r (esc)
+ second\r (esc)
+ third\r (esc)
+ % hg diff
+ diff --git a/native.txt b/native.txt
+ --- a/native.txt
+ +++ b/native.txt
+ @@ -1,3 +1,2 @@
+ first
+ -second
+ third
+ diff --git a/unix.txt b/unix.txt
+ --- a/unix.txt
+ +++ b/unix.txt
+ @@ -1,3 +1,2 @@
+ first
+ -second
+ third
+ diff --git a/win.txt b/win.txt
+ --- a/win.txt
+ +++ b/win.txt
+ @@ -1,3 +1,2 @@
+ first\r (esc)
+ -second\r (esc)
+ third\r (esc)
+ % hg revert
+ reverting native.txt
+ reverting unix.txt
+ reverting win.txt
+ % hg import
+ applying p
+ % native.txt
+ first
+ third
+ % unix.txt
+ first
+ third
+ % win.txt
+ first\r (esc)
+ third\r (esc)
+ % hg diff -c tip
+ diff --git a/native.txt b/native.txt
+ --- a/native.txt
+ +++ b/native.txt
+ @@ -1,3 +1,2 @@
+ first
+ -second
+ third
+ diff --git a/unix.txt b/unix.txt
+ --- a/unix.txt
+ +++ b/unix.txt
+ @@ -1,3 +1,2 @@
+ first
+ -second
+ third
+ diff --git a/win.txt b/win.txt
+ --- a/win.txt
+ +++ b/win.txt
+ @@ -1,3 +1,2 @@
+ first\r (esc)
+ -second\r (esc)
+ third\r (esc)
+ $ dotest CRLF
+
+ % hg clone repo repo-CRLF
+ 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ % native.txt
+ first\r (esc)
+ second\r (esc)
+ third\r (esc)
+ % unix.txt
+ first
+ second
+ third
+ % win.txt
+ first\r (esc)
+ second\r (esc)
+ third\r (esc)
+ % hg diff
+ diff --git a/native.txt b/native.txt
+ --- a/native.txt
+ +++ b/native.txt
+ @@ -1,3 +1,2 @@
+ first
+ -second
+ third
+ diff --git a/unix.txt b/unix.txt
+ --- a/unix.txt
+ +++ b/unix.txt
+ @@ -1,3 +1,2 @@
+ first
+ -second
+ third
+ diff --git a/win.txt b/win.txt
+ --- a/win.txt
+ +++ b/win.txt
+ @@ -1,3 +1,2 @@
+ first\r (esc)
+ -second\r (esc)
+ third\r (esc)
+ % hg revert
+ reverting native.txt
+ reverting unix.txt
+ reverting win.txt
+ % hg import
+ applying p
+ % native.txt
+ first\r (esc)
+ third\r (esc)
+ % unix.txt
+ first
+ third
+ % win.txt
+ first\r (esc)
+ third\r (esc)
+ % hg diff -c tip
+ diff --git a/native.txt b/native.txt
+ --- a/native.txt
+ +++ b/native.txt
+ @@ -1,3 +1,2 @@
+ first
+ -second
+ third
+ diff --git a/unix.txt b/unix.txt
+ --- a/unix.txt
+ +++ b/unix.txt
+ @@ -1,3 +1,2 @@
+ first
+ -second
+ third
+ diff --git a/win.txt b/win.txt
+ --- a/win.txt
+ +++ b/win.txt
+ @@ -1,3 +1,2 @@
+ first\r (esc)
+ -second\r (esc)
+ third\r (esc)
+ $ rm -r repo
+ $ makerepo CRLF
+
+ # ==== setup CRLF repository ====
+ % hg init
+ adding .hgeol
+ adding native.txt
+ adding unix.txt
+ adding win.txt
+ $ dotest LF
+
+ % hg clone repo repo-LF
+ 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ % native.txt
+ first
+ second
+ third
+ % unix.txt
+ first
+ second
+ third
+ % win.txt
+ first\r (esc)
+ second\r (esc)
+ third\r (esc)
+ % hg diff
+ diff --git a/native.txt b/native.txt
+ --- a/native.txt
+ +++ b/native.txt
+ @@ -1,3 +1,2 @@
+ first\r (esc)
+ -second\r (esc)
+ third\r (esc)
+ diff --git a/unix.txt b/unix.txt
+ --- a/unix.txt
+ +++ b/unix.txt
+ @@ -1,3 +1,2 @@
+ first
+ -second
+ third
+ diff --git a/win.txt b/win.txt
+ --- a/win.txt
+ +++ b/win.txt
+ @@ -1,3 +1,2 @@
+ first\r (esc)
+ -second\r (esc)
+ third\r (esc)
+ % hg revert
+ reverting native.txt
+ reverting unix.txt
+ reverting win.txt
+ % hg import
+ applying p
+ % native.txt
+ first
+ third
+ % unix.txt
+ first
+ third
+ % win.txt
+ first\r (esc)
+ third\r (esc)
+ % hg diff -c tip
+ diff --git a/native.txt b/native.txt
+ --- a/native.txt
+ +++ b/native.txt
+ @@ -1,3 +1,2 @@
+ first\r (esc)
+ -second\r (esc)
+ third\r (esc)
+ diff --git a/unix.txt b/unix.txt
+ --- a/unix.txt
+ +++ b/unix.txt
+ @@ -1,3 +1,2 @@
+ first
+ -second
+ third
+ diff --git a/win.txt b/win.txt
+ --- a/win.txt
+ +++ b/win.txt
+ @@ -1,3 +1,2 @@
+ first\r (esc)
+ -second\r (esc)
+ third\r (esc)
+ $ dotest CRLF
+
+ % hg clone repo repo-CRLF
+ 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ % native.txt
+ first\r (esc)
+ second\r (esc)
+ third\r (esc)
+ % unix.txt
+ first
+ second
+ third
+ % win.txt
+ first\r (esc)
+ second\r (esc)
+ third\r (esc)
+ % hg diff
+ diff --git a/native.txt b/native.txt
+ --- a/native.txt
+ +++ b/native.txt
+ @@ -1,3 +1,2 @@
+ first\r (esc)
+ -second\r (esc)
+ third\r (esc)
+ diff --git a/unix.txt b/unix.txt
+ --- a/unix.txt
+ +++ b/unix.txt
+ @@ -1,3 +1,2 @@
+ first
+ -second
+ third
+ diff --git a/win.txt b/win.txt
+ --- a/win.txt
+ +++ b/win.txt
+ @@ -1,3 +1,2 @@
+ first\r (esc)
+ -second\r (esc)
+ third\r (esc)
+ % hg revert
+ reverting native.txt
+ reverting unix.txt
+ reverting win.txt
+ % hg import
+ applying p
+ % native.txt
+ first\r (esc)
+ third\r (esc)
+ % unix.txt
+ first
+ third
+ % win.txt
+ first\r (esc)
+ third\r (esc)
+ % hg diff -c tip
+ diff --git a/native.txt b/native.txt
+ --- a/native.txt
+ +++ b/native.txt
+ @@ -1,3 +1,2 @@
+ first\r (esc)
+ -second\r (esc)
+ third\r (esc)
+ diff --git a/unix.txt b/unix.txt
+ --- a/unix.txt
+ +++ b/unix.txt
+ @@ -1,3 +1,2 @@
+ first
+ -second
+ third
+ diff --git a/win.txt b/win.txt
+ --- a/win.txt
+ +++ b/win.txt
+ @@ -1,3 +1,2 @@
+ first\r (esc)
+ -second\r (esc)
+ third\r (esc)
+ $ rm -r repo