--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-extdiff.t Wed Sep 15 16:27:39 2010 +0200
@@ -0,0 +1,166 @@
+ $ echo "[extensions]" >> $HGRCPATH
+ $ echo "extdiff=" >> $HGRCPATH
+
+ $ hg init a
+ $ cd a
+ $ echo a > a
+ $ echo b > b
+ $ hg add
+ adding a
+ adding b
+
+Should diff cloned directories:
+
+ $ hg extdiff -o -r $opt
+ Only in a: a
+ Only in a: b
+
+ $ echo "[extdiff]" >> $HGRCPATH
+ $ echo "cmd.falabala=echo" >> $HGRCPATH
+ $ echo "opts.falabala=diffing" >> $HGRCPATH
+
+ $ hg falabala
+ diffing a.000000000000 a
+
+ $ hg help falabala
+ hg falabala [OPTION]... [FILE]...
+
+ use 'echo' to diff repository (or selected files)
+
+ Show differences between revisions for the specified files, using the
+ 'echo' program.
+
+ When two revision arguments are given, then changes are shown between
+ those revisions. If only one revision is specified then that revision is
+ compared to the working directory, and, when no revisions are specified,
+ the working directory files are compared to its parent.
+
+ options:
+
+ -o --option OPT [+] pass option to comparison program
+ -r --rev REV [+] revision
+ -c --change REV change made by revision
+ -I --include PATTERN [+] include names matching the given patterns
+ -X --exclude PATTERN [+] exclude names matching the given patterns
+
+ [+] marked option can be specified multiple times
+
+ use "hg -v help falabala" to show global options
+
+ $ hg ci -d '0 0' -mtest1
+
+ $ echo b >> a
+ $ hg ci -d '1 0' -mtest2
+
+Should diff cloned files directly:
+
+ $ hg falabala -r 0:1
+ diffing a.8a5febb7f867/a a.34eed99112ab/a
+
+Test diff during merge:
+
+ $ hg update -C 0
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ echo c >> c
+ $ hg add c
+ $ hg ci -m "new branch" -d '1 0'
+ created new head
+ $ hg merge 1
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ (branch merge, don't forget to commit)
+
+Should diff cloned file against wc file:
+
+ $ hg falabala > out
+
+Cleanup the output since the wc is a tmp directory:
+
+ $ sed 's:\(diffing [^ ]* \).*\(\/test-extdiff\):\1[tmp]\2:' out
+ diffing a.2a13a4d2da36/a [tmp]/test-extdiff.t/a/a
+
+Test --change option:
+
+ $ hg ci -d '2 0' -mtest3
+ $ hg falabala -c 1
+ diffing a.8a5febb7f867/a a.34eed99112ab/a
+
+Check diff are made from the first parent:
+
+ $ hg falabala -c 3 || echo "diff-like tools yield a non-zero exit code"
+ diffing a.2a13a4d2da36/a a.46c0e4daeb72/a
+ diff-like tools yield a non-zero exit code
+
+Test extdiff of multiple files in tmp dir:
+
+ $ hg update -C 0 > /dev/null
+ $ echo changed > a
+ $ echo changed > b
+ $ chmod +x b
+
+Diff in working directory, before:
+
+ $ hg diff --git
+ diff --git a/a b/a
+ --- a/a
+ +++ b/a
+ @@ -1,1 +1,1 @@
+ -a
+ +changed
+ diff --git a/b b/b
+ old mode 100644
+ new mode 100755
+ --- a/b
+ +++ b/b
+ @@ -1,1 +1,1 @@
+ -b
+ +changed
+
+
+Edit with extdiff -p:
+
+Prepare custom diff/edit tool:
+
+ $ cat > 'diff tool.py' << EOT
+ > #!/usr/bin/env python
+ > import time
+ > time.sleep(1) # avoid unchanged-timestamp problems
+ > file('a/a', 'ab').write('edited\n')
+ > file('a/b', 'ab').write('edited\n')
+ > EOT
+
+ $ chmod +x 'diff tool.py'
+
+# will change to /tmp/extdiff.TMP and populate directories a.TMP and a
+# and start tool
+ $ hg extdiff -p "`pwd`/diff tool.py"
+
+Diff in working directory, after:
+
+ $ hg diff --git
+ diff --git a/a b/a
+ --- a/a
+ +++ b/a
+ @@ -1,1 +1,2 @@
+ -a
+ +changed
+ +edited
+ diff --git a/b b/b
+ old mode 100644
+ new mode 100755
+ --- a/b
+ +++ b/b
+ @@ -1,1 +1,2 @@
+ -b
+ +changed
+ +edited
+
+Test extdiff with --option:
+
+ $ hg extdiff -p echo -o this -c 1
+ this a.8a5febb7f867/a a.34eed99112ab/a
+
+ $ hg falabala -o this -c 1
+ diffing this a.8a5febb7f867/a a.34eed99112ab/a
+
+ $ true
+