Mercurial > hg
view tests/pdiff @ 45883:1817b66897ad
errors: create "similarity hint" for UnknownIdentifier eagerly in constructor
No code wanted to do anything but to produce a hint from it anyway, so
we might as well just store the hint in the exception (which already
extended `Hint`). That way we can easily convert it to a
`ConfigException` when it's parsing of configuration that fails.
I was wondering if the purpose of lazily creating the string was so we
don't create it in cases where it won't get printed anyway. However, I
couldn't find any places where that could happen. If we do find such
places, we could instead revert to making it lazy but add a function
on `UnknownIdentifier` for creating the hint string.
I dropped the comment saying "make sure to check fileset first, as
revset can invoke fileset", which was added in 4e240d6ab898 (dispatch:
offer near-edit-distance suggestions for {file,rev}set functions,
2015-01-26). I couldn't figure out what it meant. The author of that
patch also did not remember the reason for it. Perhaps changes that
have happened since then made it so it no longer matters.
Differential Revision: https://phab.mercurial-scm.org/D9346
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Thu, 19 Nov 2020 11:23:59 -0800 |
parents | a2b55ee62803 |
children |
line wrap: on
line source
#!/bin/sh # Script to get stable diff output on any platform. # # Output of this script is almost equivalent to GNU diff with "-Nru". # # Use this script as "hg pdiff" via extdiff extension with preparation # below in test scripts: # # $ cat >> $HGRCPATH <<EOF # > [extdiff] # > pdiff = sh "$RUNTESTDIR/pdiff" # > EOF filediff(){ # USAGE: filediff file1 file2 [header] # compare with /dev/null if file doesn't exist (as "-N" option) file1="$1" if test ! -f "$file1"; then file1=/dev/null fi file2="$2" if test ! -f "$file2"; then file2=/dev/null fi if cmp -s "$file1" "$file2" 2> /dev/null; then # Return immediately, because comparison isn't needed. This # also avoids redundant message of diff like "No differences # encountered" (on Solaris) return fi if test -n "$3"; then # show header only in recursive case echo "$3" fi # replace "/dev/null" by corresponded filename (as "-N" option) diff -u "$file1" "$file2" | sed "s@^--- /dev/null\(.*\)\$@--- $1\1@" | sed "s@^\+\+\+ /dev/null\(.*\)\$@+++ $2\1@" # in this case, files differ from each other return 1 } if test -d "$1" -o -d "$2"; then # ensure comparison in dictionary order ( if test -d "$1"; then (cd "$1" && find . -type f); fi if test -d "$2"; then (cd "$2" && find . -type f); fi ) | sed 's@^\./@@g' | sort | uniq | while read file; do filediff "$1/$file" "$2/$file" "diff -Nru $1/$file $2/$file" done # TODO: there is no portable way for current while-read based # implementation to return 1 at detecting changes. # # On bash and dash, assignment to variable inside while-block # doesn't affect outside, because inside while-block is executed # in sub-shell. BTW, it affects outside while-block on ksh (as sh # on Solaris). else filediff "$1" "$2" fi