]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
Improve JavaScript scanner tests.
authorAndreas Stricker <astricker@futurelab.ch>
Wed, 24 Apr 2013 18:37:55 +0000 (20:37 +0200)
committerDaiki Ueno <ueno@gnu.org>
Sun, 12 May 2013 02:35:56 +0000 (11:35 +0900)
gettext-tools/tests/ChangeLog
gettext-tools/tests/Makefile.am
gettext-tools/tests/xgettext-javascript-2
gettext-tools/tests/xgettext-javascript-3
gettext-tools/tests/xgettext-javascript-4
gettext-tools/tests/xgettext-javascript-5 [new file with mode: 0644]

index d90aeb76af5131cac0ec548b0986edf97bc88894..3727ac4d3e09c47418f940f1ee625872c9586569 100644 (file)
@@ -1,3 +1,14 @@
+2013-05-12  Andreas Stricker <astricker@futurelab.ch>
+
+       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  <ueno@gnu.org>
 
        * format-python-brace-2: Fix test for added argument.
index e0133b6464c32b5f2637a9d1c2544d55be1bb89b..f2c48488a7c24be97c8c7b1024108f2126e859eb 100644 (file)
@@ -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 \
index da1e34a9afb6fa771d393081339d09ce0c3ec957..f931b6009e427a8919b5446e42d96d3c2d340f5a 100755 (executable)
@@ -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}
index 2d758f0664df1779df32ba492f9f8b0c817d8998..112edda42af406990aff73c5c1605d0ed956fde1 100755 (executable)
@@ -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
index 7272fb58d11c1a6e5c4fba20960e1294a1625ebd..92805e92561f486ca2e74548ec315b08f5afe7ff 100755 (executable)
@@ -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 (file)
index 0000000..6e6164d
--- /dev/null
@@ -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 <EMAIL@ADDRESS>, 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 <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\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