]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
Tests for qt-plural-format.
authorBruno Haible <bruno@clisp.org>
Wed, 28 Jan 2009 10:19:20 +0000 (10:19 +0000)
committerBruno Haible <bruno@clisp.org>
Tue, 23 Jun 2009 10:16:01 +0000 (12:16 +0200)
gettext-tools/tests/Makefile.am
gettext-tools/tests/format-qt-plural-1 [new file with mode: 0755]
gettext-tools/tests/format-qt-plural-2 [new file with mode: 0755]

index 3330ac28a97a684f57c42c96bb377acdeb289abb..d3af31ae9ea25c3fde0fa129ccff1f7b8aa4ac05 100644 (file)
@@ -1,5 +1,5 @@
 ## Makefile for the gettext-tools/tests subdirectory of GNU gettext
-## Copyright (C) 1995-1997, 2001-2008 Free Software Foundation, Inc.
+## Copyright (C) 1995-1997, 2001-2009 Free Software Foundation, Inc.
 ##
 ## This program is free software: you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -116,6 +116,7 @@ TESTS = gettext-1 gettext-2 gettext-3 gettext-4 gettext-5 gettext-6 gettext-7 \
        format-perl-brace-1 format-perl-brace-2 \
        format-perl-mixed-1 format-perl-mixed-2 \
        format-qt-1 format-qt-2 \
+       format-qt-plural-1 format-qt-plural-2 \
        format-scheme-1 format-scheme-2 \
        format-sh-1 format-sh-2 \
        format-tcl-1 format-tcl-2 \
diff --git a/gettext-tools/tests/format-qt-plural-1 b/gettext-tools/tests/format-qt-plural-1
new file mode 100755 (executable)
index 0000000..6f91d85
--- /dev/null
@@ -0,0 +1,65 @@
+#! /bin/sh
+
+# Test recognition of Qt plural format strings.
+
+tmpfiles=""
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+tmpfiles="$tmpfiles f-qtp-1.data"
+cat <<\EOF > f-qtp-1.data
+# Unrecognized: no argument
+"abcdef"
+# Unrecognized: unterminated
+"abcdef%"
+# Unrecognized: unterminated
+"abcdef%L"
+# Valid: one argument
+"abc%ndef"
+# Valid: unterminated
+"abc%ndef%"
+# Valid: unterminated
+"abc%ndef%L"
+# Valid: multiple uses of same argument
+"abc%ndef%nghi"
+# Valid: an argument with locale-dependency flag
+"abc%Lndef"
+EOF
+
+: ${XGETTEXT=xgettext}
+n=0
+while read comment; do
+  read string
+  n=`expr $n + 1`
+  tmpfiles="$tmpfiles f-qtp-1-$n.in f-qtp-1-$n.po"
+  cat <<EOF > f-qtp-1-$n.in
+_(${string});
+EOF
+  ${XGETTEXT} -L C++ --qt -k_ -o f-qtp-1-$n.po f-qtp-1-$n.in || exit 1
+  test -f f-qtp-1-$n.po || exit 1
+  fail=
+  if echo "$comment" | grep 'Valid:' > /dev/null; then
+    if grep qt-plural-format f-qtp-1-$n.po > /dev/null; then
+      :
+    else
+      fail=yes
+    fi
+  else
+    if grep qt-plural-format f-qtp-1-$n.po > /dev/null; then
+      fail=yes
+    else
+      :
+    fi
+  fi
+  if test -n "$fail"; then
+    echo "Format string recognition error:" 1>&2
+    cat f-qtp-1-$n.in 1>&2
+    echo "Got:" 1>&2
+    cat f-qtp-1-$n.po 1>&2
+    exit 1
+  fi
+  rm -f f-qtp-1-$n.in f-qtp-1-$n.po
+done < f-qtp-1.data
+
+rm -fr $tmpfiles
+
+exit 0
diff --git a/gettext-tools/tests/format-qt-plural-2 b/gettext-tools/tests/format-qt-plural-2
new file mode 100755 (executable)
index 0000000..2fed07b
--- /dev/null
@@ -0,0 +1,73 @@
+#! /bin/sh
+
+# Test checking of Qt plural format strings.
+
+tmpfiles=""
+trap 'rm -fr $tmpfiles' 1 2 3 15
+
+tmpfiles="$tmpfiles f-qtp-2.data"
+cat <<\EOF > f-qtp-2.data
+# Valid: %1 doesn't count
+msgid  "abc%1def"
+msgstr "xyz"
+# Valid: same arguments
+msgid  "abc%ndef"
+msgstr "xyz%n"
+# Valid: same arguments, L option is ignored
+msgid  "abc%Lndef"
+msgstr "xyz%n"
+# Valid: same arguments, L option is ignored
+msgid  "abc%ndef"
+msgstr "xyz%Ln"
+# Valid: repetition of an argument in the translation
+msgid  "abc%ndef"
+msgstr "xyz%nuvw%n"
+# Valid: removing repeated argument in the translation
+msgid  "abc%ndef%n"
+msgstr "xyz%nuvw"
+# Invalid: too few arguments
+msgid  "abc%ndef"
+msgstr "xyz"
+# Invalid: too many arguments
+msgid  "abcdef"
+msgstr "xyz%nuvw"
+EOF
+
+: ${MSGFMT=msgfmt}
+n=0
+while read comment; do
+  read msgid_line
+  read msgstr_line
+  n=`expr $n + 1`
+  tmpfiles="$tmpfiles f-qtp-2-$n.po f-qtp-2-$n.mo"
+  cat <<EOF > f-qtp-2-$n.po
+#, qt-plural-format
+${msgid_line}
+${msgstr_line}
+EOF
+  fail=
+  if echo "$comment" | grep 'Valid:' > /dev/null; then
+    if ${MSGFMT} --check-format -o f-qtp-2-$n.mo f-qtp-2-$n.po; then
+      :
+    else
+      fail=yes
+    fi
+  else
+    ${MSGFMT} --check-format -o f-qtp-2-$n.mo f-qtp-2-$n.po 2> /dev/null
+    if test $? = 1; then
+      :
+    else
+      fail=yes
+    fi
+  fi
+  if test -n "$fail"; then
+    echo "Format string checking error:" 1>&2
+    cat f-qtp-2-$n.po 1>&2
+    exit 1
+  fi
+  rm -f f-qtp-2-$n.po f-qtp-2-$n.mo
+done < f-qtp-2.data
+
+rm -fr $tmpfiles
+
+exit 0