Bruno Haible f1459a89e2 xgettext: Allow inhibiting the warnings about URLs and email addresses.
Reported at <https://savannah.gnu.org/bugs/?67672>.

* gettext-tools/src/message.h (enum syntax_check_type): Add sc_url, sc_email.
(NSYNTAXCHECKS): Increase by 2.
* gettext-tools/src/message.c (syntax_check_name): Update.
* gettext-tools/src/xgettext.h (default_syntax_check): Add comment.
* gettext-tools/src/xgettext.c (default_syntax_check): Add initializer.
(main): Recognize --no-check option.
(usage): Document --no-check option.
* gettext-tools/src/xg-message.c (decide_syntax_check): Assume that
default_syntax_check[i] != undecided.
* gettext-tools/src/xg-check.c (syntax_check_function): Remove the second
argument.
(string_has_ascii_ellipsis): New function, extracted from
syntax_check_ellipsis_unicode.
(message_has_ascii_ellipsis): New function.
(syntax_check_ellipsis_unicode): Remove the second argument. Simplify. Emit only
a single error for both msgid and msgid_plural.
(string_has_space_ellipsis): New function, extracted from
syntax_check_space_ellipsis.
(message_has_space_ellipsis): New function.
(syntax_check_space_ellipsis): Remove the second argument. Simplify. Emit only
a single error for both msgid and msgid_plural.
(syntax_check_quote_unicode): Remove the second argument.
(syntax_check_bullet_unicode_string): New function, extracted from
syntax_check_bullet_unicode.
(syntax_check_bullet_unicode): Remove the second argument. Simplify.
(string_has_url): Don't recognize 'mailto:' URLs.
(syntax_check_url, syntax_check_email): New functions, extracted from
url_check_message.
(url_check_message): Remove function.
(sc_funcs): Add syntax_check_url, syntax_check_email.
(syntax_check_message): Simplify.
(xgettext_check_message_list): Don't invoke url_check_message.
* gettext-tools/tests/xgettext-14: Update after xg-check.c changesd.
* gettext-tools/tests/xgettext-20: Add more testcases.
* gettext-tools/doc/xgettext.texi: Document the --no-check option.
* gettext-tools/doc/gettext.texi: Bump copyright year.
* NEWS: Mention the change.
2026-01-10 20:16:46 +01:00

76 lines
2.7 KiB
Bash
Executable File

#!/bin/sh
. "${srcdir=.}/init.sh"; path_prepend_ . ../src
# Test checking for URL.
# <https://savannah.gnu.org/bugs/?67000>
cat <<\EOF > xg-test20.c
gettext ("Using the browser to open a mailto: URI");
gettext ("Report bugs to <mailto:foobar@example.com>");
gettext ("Report bugs to: bug-foobar@gnu.org");
gettext ("Report bugs in the bug tracker at <https://savannah.gnu.org/projects/foobar>");
/* xgettext: no-email-check */
gettext ("M2: Report bugs to <mailto:foobar@example.com>");
/* xgettext: no-email-check */
gettext ("M2: Report bugs to: bug-foobar@gnu.org");
/* xgettext: no-url-check */
gettext ("M2: Report bugs in the bug tracker at <https://savannah.gnu.org/projects/foobar>");
/* xgettext: no-url-check */
gettext ("M3: Report bugs to: bug-foobar@gnu.org");
EOF
: ${XGETTEXT=xgettext}
LANGUAGE= LC_ALL=C ${XGETTEXT} --omit-header --add-comments -d xg-test20.tmp xg-test20.c 2>xg-test20.err \
|| Exit 1
cat xg-test20.err; echo
if grep "xg-test20.c:1:.*No-embedded-URLs.html" xg-test20.err >/dev/null; then
Exit 1
fi
grep "xg-test20.c:2:.*No-embedded-URLs.html" xg-test20.err >/dev/null || Exit 1
grep "xg-test20.c:3:.*No-embedded-URLs.html" xg-test20.err >/dev/null || Exit 1
grep "xg-test20.c:4:.*No-embedded-URLs.html" xg-test20.err >/dev/null || Exit 1
if grep "xg-test20.c:6:.*No-embedded-URLs.html" xg-test20.err >/dev/null; then
Exit 1
fi
if grep "xg-test20.c:8:.*No-embedded-URLs.html" xg-test20.err >/dev/null; then
Exit 1
fi
if grep "xg-test20.c:10:.*No-embedded-URLs.html" xg-test20.err >/dev/null; then
Exit 1
fi
grep "xg-test20.c:12:.*No-embedded-URLs.html" xg-test20.err >/dev/null || Exit 1
# Likewise, with --no-check=url option:
LANGUAGE= LC_ALL=C ${XGETTEXT} --omit-header --add-comments --no-check=url -d xg-test20.tmp xg-test20.c 2>xg-test20a.err \
|| Exit 1
cat xg-test20a.err; echo
grep "xg-test20.c:2:.*No-embedded-URLs.html" xg-test20a.err >/dev/null || Exit 1
grep "xg-test20.c:3:.*No-embedded-URLs.html" xg-test20a.err >/dev/null || Exit 1
if grep "xg-test20.c:4:.*No-embedded-URLs.html" xg-test20a.err >/dev/null; then
Exit 1
fi
grep "xg-test20.c:12:.*No-embedded-URLs.html" xg-test20a.err >/dev/null || Exit 1
# Likewise, with --no-check=email option:
LANGUAGE= LC_ALL=C ${XGETTEXT} --omit-header --add-comments --no-check=email -d xg-test20.tmp xg-test20.c 2>xg-test20b.err \
|| Exit 1
cat xg-test20b.err; echo
if grep "xg-test20.c:2:.*No-embedded-URLs.html" xg-test20b.err >/dev/null; then
Exit 1
fi
if grep "xg-test20.c:3:.*No-embedded-URLs.html" xg-test20b.err >/dev/null; then
Exit 1
fi
grep "xg-test20.c:4:.*No-embedded-URLs.html" xg-test20b.err >/dev/null || Exit 1
if grep "xg-test20.c:12:.*No-embedded-URLs.html" xg-test20b.err >/dev/null; then
Exit 1
fi