Mercurial > hg
annotate tests/pdiff @ 41163:0101a35deae2
phabricator: warn if unable to amend, instead of aborting after posting
There was a divergence in behavior here between obsolete and strip based
amending. I first noticed the abort when testing outside of the test harness,
but then had trouble recreating it here after reverting the code changes. It
turns out, strip based amend was successfully amending the public commit after
it was posted! It looks like the protection is in the `commit --amend` command,
not in the underlying code that it calls.
I considered doing a preflight check and aborting. But the locks are only
acquired at the end, if amending, and this is too large a section of code to be
wrapped in a maybe-it's-held-or-not context manager for my tastes.
Additionally, some people do post-push reviews, and amending is the default
behavior, so they shouldn't see a misleading error message.
The lack of a 'Differential Revision' entry in the commit message breaks a
{phabreview} test, so it had to be partially conditionalized.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sat, 05 Jan 2019 15:20:33 -0500 |
parents | a2b55ee62803 |
children |
rev | line source |
---|---|
28052
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
1 #!/bin/sh |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
2 |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
3 # Script to get stable diff output on any platform. |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
4 # |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
5 # Output of this script is almost equivalent to GNU diff with "-Nru". |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
6 # |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
7 # Use this script as "hg pdiff" via extdiff extension with preparation |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
8 # below in test scripts: |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
9 # |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
10 # $ cat >> $HGRCPATH <<EOF |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
11 # > [extdiff] |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
12 # > pdiff = sh "$RUNTESTDIR/pdiff" |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
13 # > EOF |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
14 |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
15 filediff(){ |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
16 # USAGE: filediff file1 file2 [header] |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
17 |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
18 # compare with /dev/null if file doesn't exist (as "-N" option) |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
19 file1="$1" |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
20 if test ! -f "$file1"; then |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
21 file1=/dev/null |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
22 fi |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
23 file2="$2" |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
24 if test ! -f "$file2"; then |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
25 file2=/dev/null |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
26 fi |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
27 |
28337
869e65e68aee
tests: Solaris cmp complains about empty files, even with -s
Danek Duvall <danek.duvall@oracle.com>
parents:
28052
diff
changeset
|
28 if cmp -s "$file1" "$file2" 2> /dev/null; then |
28052
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
29 # Return immediately, because comparison isn't needed. This |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
30 # also avoids redundant message of diff like "No differences |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
31 # encountered" (on Solaris) |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
32 return |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
33 fi |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
34 |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
35 if test -n "$3"; then |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
36 # show header only in recursive case |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
37 echo "$3" |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
38 fi |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
39 |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
40 # replace "/dev/null" by corresponded filename (as "-N" option) |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
41 diff -u "$file1" "$file2" | |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
42 sed "s@^--- /dev/null\(.*\)\$@--- $1\1@" | |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
43 sed "s@^\+\+\+ /dev/null\(.*\)\$@+++ $2\1@" |
33611
a2b55ee62803
tests: make pdiff return appropriate exit code at comparison of files
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28337
diff
changeset
|
44 |
a2b55ee62803
tests: make pdiff return appropriate exit code at comparison of files
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28337
diff
changeset
|
45 # in this case, files differ from each other |
a2b55ee62803
tests: make pdiff return appropriate exit code at comparison of files
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28337
diff
changeset
|
46 return 1 |
28052
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
47 } |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
48 |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
49 if test -d "$1" -o -d "$2"; then |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
50 # ensure comparison in dictionary order |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
51 ( |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
52 if test -d "$1"; then (cd "$1" && find . -type f); fi |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
53 if test -d "$2"; then (cd "$2" && find . -type f); fi |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
54 ) | |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
55 sed 's@^\./@@g' | sort | uniq | |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
56 while read file; do |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
57 filediff "$1/$file" "$2/$file" "diff -Nru $1/$file $2/$file" |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
58 done |
33611
a2b55ee62803
tests: make pdiff return appropriate exit code at comparison of files
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28337
diff
changeset
|
59 |
a2b55ee62803
tests: make pdiff return appropriate exit code at comparison of files
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28337
diff
changeset
|
60 # TODO: there is no portable way for current while-read based |
a2b55ee62803
tests: make pdiff return appropriate exit code at comparison of files
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28337
diff
changeset
|
61 # implementation to return 1 at detecting changes. |
a2b55ee62803
tests: make pdiff return appropriate exit code at comparison of files
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28337
diff
changeset
|
62 # |
a2b55ee62803
tests: make pdiff return appropriate exit code at comparison of files
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28337
diff
changeset
|
63 # On bash and dash, assignment to variable inside while-block |
a2b55ee62803
tests: make pdiff return appropriate exit code at comparison of files
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28337
diff
changeset
|
64 # doesn't affect outside, because inside while-block is executed |
a2b55ee62803
tests: make pdiff return appropriate exit code at comparison of files
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28337
diff
changeset
|
65 # in sub-shell. BTW, it affects outside while-block on ksh (as sh |
a2b55ee62803
tests: make pdiff return appropriate exit code at comparison of files
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28337
diff
changeset
|
66 # on Solaris). |
28052
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
67 else |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
68 filediff "$1" "$2" |
b59ef0c21405
tests: use portable diff script via extdiff extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
diff
changeset
|
69 fi |