Mercurial > hg
diff tests/test-extdiff.t @ 12304:41dd368b6fe8
tests: unify test-extdiff
author | Adrian Buehlmann <adrian@cadifra.com> |
---|---|
date | Wed, 15 Sep 2010 16:27:39 +0200 |
parents | tests/test-extdiff@c52057614c72 |
children | 4134686b83e1 |
line wrap: on
line diff
--- /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 +