# HG changeset patch # User Adrian Buehlmann # Date 2010-09-15 14:27:39 # Node ID 41dd368b6fe80e3237ada449aaf0ad34740d5a2c # Parent 4ab87473029d67cb6182da50689b07a6064d5fdf tests: unify test-extdiff diff --git a/tests/test-extdiff.out b/tests/test-extdiff.out deleted file mode 100644 --- a/tests/test-extdiff.out +++ /dev/null @@ -1,77 +0,0 @@ -adding a -adding b -Only in a: a -Only in a: b -diffing a.000000000000 a -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 -diffing a.8a5febb7f867/a a.34eed99112ab/a -1 files updated, 0 files merged, 0 files removed, 0 files unresolved -created new head -1 files updated, 0 files merged, 0 files removed, 0 files unresolved -(branch merge, don't forget to commit) -diffing a.2a13a4d2da36/a [tmp]/test-extdiff/a/a -diffing a.8a5febb7f867/a a.34eed99112ab/a -diffing a.2a13a4d2da36/a a.46c0e4daeb72/a -diff-like tools yield a non-zero exit code - -% test extdiff of multiple files in tmp dir: -% diff in working directory, before -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 -% diff in working directory, after -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 -this a.8a5febb7f867/a a.34eed99112ab/a -diffing this a.8a5febb7f867/a a.34eed99112ab/a - diff --git a/tests/test-extdiff b/tests/test-extdiff.t old mode 100755 new mode 100644 rename from tests/test-extdiff rename to tests/test-extdiff.t --- a/tests/test-extdiff +++ b/tests/test-extdiff.t @@ -1,73 +1,166 @@ -#!/bin/sh + $ echo "[extensions]" >> $HGRCPATH + $ echo "extdiff=" >> $HGRCPATH -echo "[extensions]" >> $HGRCPATH -echo "extdiff=" >> $HGRCPATH + $ hg init a + $ cd a + $ echo a > a + $ echo b > b + $ hg add + adding a + adding b -hg init a -cd a -echo a > a -echo b > b -hg add -# should diff cloned directories -hg extdiff -o -r $opt +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 -echo "[extdiff]" >> $HGRCPATH -echo "cmd.falabala=echo" >> $HGRCPATH -echo "opts.falabala=diffing" >> $HGRCPATH + $ 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 falabala - -hg help falabala + $ hg ci -d '0 0' -mtest1 -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: -echo b >> a -hg ci -d '1 0' -mtest2 + $ 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 files directly -hg falabala -r 0:1 +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: -# test diff during merge -hg update -C 0 -echo c >> c -hg add c -hg ci -m "new branch" -d '1 0' -hg merge 1 -# 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 -# test --change option -hg ci -d '2 0' -mtest3 -hg falabala -c 1 -# check diff are made from the first parent -hg falabala -c 3 || echo "diff-like tools yield a non-zero exit code" -#hg log + $ 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: -echo -echo '% test extdiff of multiple files in tmp dir:' -hg update -C 0 > /dev/null -echo changed > a -echo changed > b -chmod +x b -echo '% diff in working directory, before' -hg diff --git -echo '% 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' -hg extdiff -p "`pwd`/diff tool.py" # will change to /tmp/extdiff.TMP and populate directories a.TMP and a and start tool -echo '% diff in working directory, after' -hg diff --git + $ 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: -echo -echo % test extdiff with --option -hg extdiff -p echo -o this -c 1 -hg falabala -o this -c 1 -echo + $ 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 +