From b1b22bbfa17a19ef19aa5b45320d8565a76a585c Mon Sep 17 00:00:00 2001 From: Andreas Stricker Date: Wed, 24 Apr 2013 20:37:55 +0200 Subject: [PATCH] Improve JavaScript scanner tests. --- gettext-tools/tests/ChangeLog | 11 ++++ gettext-tools/tests/Makefile.am | 2 +- gettext-tools/tests/xgettext-javascript-2 | 12 ++++ gettext-tools/tests/xgettext-javascript-3 | 20 +++--- gettext-tools/tests/xgettext-javascript-4 | 20 +++--- gettext-tools/tests/xgettext-javascript-5 | 78 +++++++++++++++++++++++ 6 files changed, 122 insertions(+), 21 deletions(-) create mode 100644 gettext-tools/tests/xgettext-javascript-5 diff --git a/gettext-tools/tests/ChangeLog b/gettext-tools/tests/ChangeLog index d90aeb76a..3727ac4d3 100644 --- a/gettext-tools/tests/ChangeLog +++ b/gettext-tools/tests/ChangeLog @@ -1,3 +1,14 @@ +2013-05-12 Andreas Stricker + + Improve JavaScript scanner tests. + * xgettext-javascript-2: Add tests for backslash escapes and + _(...) call in regular expressions. + * xgettext-javascript-3: Use distinct temporary file names. + * xgettext-javascript-4: Likewise. + * xgettext-javascript-5: Add tests for unbalanced double-quotes in + regular expressions and strings. + * Makefile.am (TESTS): Add xgettext-javascript-5. + 2013-05-02 Daiki Ueno * format-python-brace-2: Fix test for added argument. diff --git a/gettext-tools/tests/Makefile.am b/gettext-tools/tests/Makefile.am index e0133b646..f2c48488a 100644 --- a/gettext-tools/tests/Makefile.am +++ b/gettext-tools/tests/Makefile.am @@ -102,7 +102,7 @@ TESTS = gettext-1 gettext-2 gettext-3 gettext-4 gettext-5 gettext-6 gettext-7 \ xgettext-ycp-1 xgettext-ycp-2 xgettext-ycp-3 xgettext-ycp-4 \ xgettext-lua-1 xgettext-lua-2 \ xgettext-javascript-1 xgettext-javascript-2 xgettext-javascript-3 \ - xgettext-javascript-4 \ + xgettext-javascript-4 xgettext-javascript-5 \ format-awk-1 format-awk-2 \ format-boost-1 format-boost-2 \ format-c-1 format-c-2 format-c-3 format-c-4 format-c-5 \ diff --git a/gettext-tools/tests/xgettext-javascript-2 b/gettext-tools/tests/xgettext-javascript-2 index da1e34a9a..f931b6009 100755 --- a/gettext-tools/tests/xgettext-javascript-2 +++ b/gettext-tools/tests/xgettext-javascript-2 @@ -28,6 +28,9 @@ if (false) /foo/.match(_("RegExp test string #12")); else /foo/.match(_("RegExp test string #13")); +var s7 = /a\/\f\r\n\t\v\0\b\s\S\w\W\d\D\b\Bb/.test(_("RegExp test string #14")); +var s8 = /(?=(a+))a*b\1/.exec(_("RegExp test string #15")); +var s9 = /_("a+")/.exec(_("RegExp test string #16")); EOF tmpfiles="$tmpfiles xg-js-2.err xg-js-2.tmp xg-js-2.pot" @@ -96,6 +99,15 @@ msgstr "" msgid "RegExp test string #13" msgstr "" + +msgid "RegExp test string #14" +msgstr "" + +msgid "RegExp test string #15" +msgstr "" + +msgid "RegExp test string #16" +msgstr "" EOF : ${DIFF=diff} diff --git a/gettext-tools/tests/xgettext-javascript-3 b/gettext-tools/tests/xgettext-javascript-3 index 2d758f066..112edda42 100755 --- a/gettext-tools/tests/xgettext-javascript-3 +++ b/gettext-tools/tests/xgettext-javascript-3 @@ -6,8 +6,8 @@ tmpfiles="" trap 'rm -fr $tmpfiles' 1 2 3 15 -tmpfiles="$tmpfiles xg-js-2.js" -cat <<\EOF > xg-js-2.js +tmpfiles="$tmpfiles xg-js-3.js" +cat <<\EOF > xg-js-3.js // The usual way to concatenate strings is the plus '+' sign var s1 = _("Concatenation #1 " + "- String part added"); var s2 = _('Concatenation #2 ' + '- String part added'); @@ -16,16 +16,16 @@ var s3 = _("This" + " whole " ' should' + " be " + 'extracted'); EOF -tmpfiles="$tmpfiles xg-js-2.err xg-js-2.tmp xg-js-2.pot" +tmpfiles="$tmpfiles xg-js-3.err xg-js-3.tmp xg-js-3.pot" : ${XGETTEXT=xgettext} -${XGETTEXT} --add-comments --no-location -o xg-js-2.tmp xg-js-2.js 2>xg-js-2.err -test $? = 0 || { cat xg-js-2.err; rm -fr $tmpfiles; exit 1; } -# Don't simplify this to "grep ... < xg-js-2.tmp", otherwise OpenBSD 4.0 grep +${XGETTEXT} --add-comments --no-location -o xg-js-3.tmp xg-js-3.js 2>xg-js-3.err +test $? = 0 || { cat xg-js-3.err; rm -fr $tmpfiles; exit 1; } +# Don't simplify this to "grep ... < xg-js-3.tmp", otherwise OpenBSD 4.0 grep # only outputs "Binary file (standard input) matches". -cat xg-js-2.tmp | grep -v 'POT-Creation-Date' | LC_ALL=C tr -d '\r' > xg-js-2.pot +cat xg-js-3.tmp | grep -v 'POT-Creation-Date' | LC_ALL=C tr -d '\r' > xg-js-3.pot -tmpfiles="$tmpfiles xg-js-2.ok" -cat <<\EOF > xg-js-2.ok +tmpfiles="$tmpfiles xg-js-3.ok" +cat <<\EOF > xg-js-3.ok # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. @@ -55,7 +55,7 @@ msgstr "" EOF : ${DIFF=diff} -${DIFF} xg-js-2.ok xg-js-2.pot +${DIFF} xg-js-3.ok xg-js-3.pot result=$? rm -fr $tmpfiles diff --git a/gettext-tools/tests/xgettext-javascript-4 b/gettext-tools/tests/xgettext-javascript-4 index 7272fb58d..92805e925 100755 --- a/gettext-tools/tests/xgettext-javascript-4 +++ b/gettext-tools/tests/xgettext-javascript-4 @@ -5,22 +5,22 @@ tmpfiles="" trap 'rm -fr $tmpfiles' 1 2 3 15 -tmpfiles="$tmpfiles xg-js-1.js" -cat <<\EOF > xg-js-1.js +tmpfiles="$tmpfiles xg-js-4.js" +cat <<\EOF > xg-js-4.js var s1 = _("Unicode escape \u3042"); var s2 = _("Surrogate pair \uD835\uDC9C"); EOF -tmpfiles="$tmpfiles xg-js-1.err xg-js-1.tmp xg-js-1.pot" +tmpfiles="$tmpfiles xg-js-4.err xg-js-4.tmp xg-js-4.pot" : ${XGETTEXT=xgettext} -${XGETTEXT} --add-comments --no-location -o xg-js-1.tmp xg-js-1.js 2>xg-js-1.err -test $? = 0 || { cat xg-js-1.err; rm -fr $tmpfiles; exit 1; } -# Don't simplify this to "grep ... < xg-js-1.tmp", otherwise OpenBSD 4.0 grep +${XGETTEXT} --add-comments --no-location -o xg-js-4.tmp xg-js-4.js 2>xg-js-4.err +test $? = 0 || { cat xg-js-4.err; rm -fr $tmpfiles; exit 1; } +# Don't simplify this to "grep ... < xg-js-4.tmp", otherwise OpenBSD 4.0 grep # only outputs "Binary file (standard input) matches". -cat xg-js-1.tmp | grep -v 'POT-Creation-Date' | LC_ALL=C tr -d '\r' > xg-js-1.pot +cat xg-js-4.tmp | grep -v 'POT-Creation-Date' | LC_ALL=C tr -d '\r' > xg-js-4.pot -tmpfiles="$tmpfiles xg-js-1.ok" -cat <<\EOF > xg-js-1.ok +tmpfiles="$tmpfiles xg-js-4.ok" +cat <<\EOF > xg-js-4.ok # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. @@ -47,7 +47,7 @@ msgstr "" EOF : ${DIFF=diff} -${DIFF} xg-js-1.ok xg-js-1.pot +${DIFF} xg-js-4.ok xg-js-4.pot result=$? rm -fr $tmpfiles diff --git a/gettext-tools/tests/xgettext-javascript-5 b/gettext-tools/tests/xgettext-javascript-5 new file mode 100644 index 000000000..6e6164d49 --- /dev/null +++ b/gettext-tools/tests/xgettext-javascript-5 @@ -0,0 +1,78 @@ +#!/bin/sh + +# Test of JavaScript Unicode support. + +tmpfiles="" +trap 'rm -fr $tmpfiles' 1 2 3 15 + +tmpfiles="$tmpfiles xg-js-5.js" +cat <<\EOF > xg-js-5.js +// the following except is stolen from json2.js +var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + gap, + txt1 = _("Expected translation string #1"), + indent, + meta = { // table of character substitutions + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"' : '\\"', + '\\': '\\\\' + _("Expected translation string #2") + }, + txt2 = _("Expected translation string #3"), + rep; +var matched = curnodepath.match('^\\'+path+'\\/([\\w\\s]+)') \ + + _("Expected translation string #4"); +EOF + +tmpfiles="$tmpfiles xg-js-5.err xg-js-5.tmp xg-js-5.pot" +: ${XGETTEXT=xgettext} +${XGETTEXT} --add-comments --no-location -o xg-js-5.tmp xg-js-5.js 2>xg-js-5.err +test $? = 0 || { cat xg-js-5.err; rm -fr $tmpfiles; exit 1; } +# Don't simplify this to "grep ... < xg-js-5.tmp", otherwise OpenBSD 4.0 grep +# only outputs "Binary file (standard input) matches". +cat xg-js-5.tmp | grep -v 'POT-Creation-Date' | LC_ALL=C tr -d '\r' > xg-js-5.pot + +tmpfiles="$tmpfiles xg-js-5.ok" +cat <<\EOF > xg-js-5.ok +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +msgid "Expected translation string #1" +msgstr "" + +msgid "Expected translation string #2" +msgstr "" + +msgid "Expected translation string #3" +msgstr "" + +msgid "Expected translation string #4" +msgstr "" +EOF + +: ${DIFF=diff} +${DIFF} xg-js-5.ok xg-js-5.pot +result=$? + +rm -fr $tmpfiles + +exit $result -- 2.47.2