Home | History | Annotate | Line # | Download | only in tests
      1  1.1  christos #! /bin/sh
      2  1.1  christos 
      3  1.1  christos # Test whether the right number of arguments are extracted.
      4  1.1  christos 
      5  1.1  christos tmpfiles=""
      6  1.1  christos trap 'rm -fr $tmpfiles' 1 2 3 15
      7  1.1  christos 
      8  1.1  christos tmpfiles="$tmpfiles xg-pl-6.pl"
      9  1.1  christos cat <<\EOPERL > xg-pl-6.pl
     10  1.1  christos use strict;
     11  1.1  christos 
     12  1.1  christos # For 'gettext', xgettext needs to extract the first argument.
     13  1.1  christos 
     14  1.1  christos # Don't extract further strings (second argument to gettext or unrelated
     15  1.1  christos # expressions).
     16  1.1  christos print gettext "extracted1", "$shouldnotbeextracted";
     17  1.1  christos print gettext ("extracted2"), "$shouldnotbeextracted";
     18  1.1  christos print gettext ("extracted3")."$notextracted", "$shouldnotbeextracted";
     19  1.1  christos print (gettext ("extracted4")), "$shouldnotbeextracted";
     20  1.1  christos 
     21  1.1  christos # Likewise, inside a call to an arbitrary 'foobar' function.
     22  1.1  christos print foobar gettext "extracted5", "$shouldnotbeextracted";
     23  1.1  christos print foobar gettext ("extracted6"), "$shouldnotbeextracted";
     24  1.1  christos print foobar gettext ("extracted7")."$notextracted", "$shouldnotbeextracted";
     25  1.1  christos print foobar (gettext ("extracted8")), "$shouldnotbeextracted";
     26  1.1  christos print foobar (gettext "extracted9", "$shouldnotbeextracted");
     27  1.1  christos print foobar (gettext ("extracted10"), "$shouldnotbeextracted");
     28  1.1  christos print foobar (gettext ("extracted11")."$notextracted", "$shouldnotbeextracted");
     29  1.1  christos 
     30  1.1  christos # Don't extract strings that are inside a function call to an arbitrary
     31  1.1  christos # 'foobar' function, and don't extract a second argument to gettext
     32  1.1  christos print gettext foobar "$notextracted", "$shouldnotbeextracted";
     33  1.1  christos print gettext foobar ("$notextracted"), "$shouldnotbeextracted";
     34  1.1  christos print gettext foobar ("$notextracted")."$notextracted", "$shouldnotbeextracted";
     35  1.1  christos print (gettext foobar ("$notextracted")), "$shouldnotbeextracted";
     36  1.1  christos print gettext (foobar "$notextracted"), "$shouldnotbeextracted";
     37  1.1  christos print gettext (foobar ("$notextracted")), "$shouldnotbeextracted";
     38  1.1  christos print gettext (foobar ("$notextracted"))."$notextracted", "$shouldnotbeextracted";
     39  1.1  christos print gettext (foobar ("$notextracted")."$notextracted"), "$shouldnotbeextracted";
     40  1.1  christos print (gettext (foobar ("$notextracted"))), "$shouldnotbeextracted";
     41  1.1  christos 
     42  1.1  christos # For 'dgettext', xgettext needs to extract the second argument.
     43  1.1  christos 
     44  1.1  christos # The first argument should not be extracted.
     45  1.1  christos print dgettext "$shouldnotbeextracted", "extracted12";
     46  1.1  christos 
     47  1.1  christos # For a built-in unary function with parentheses, it's clear where dgettext's
     48  1.1  christos # first argument ends.
     49  1.1  christos print dgettext sin (17), "extracted13";
     50  1.1  christos 
     51  1.1  christos # For a built-in unary function, it's clear where dgettext's first argument
     52  1.1  christos # ends.
     53  1.1  christos print dgettext sin 17, "extracted14";
     54  1.1  christos 
     55  1.1  christos # For a function call with parentheses, it's clear where dgettext's first
     56  1.1  christos # argument ends.
     57  1.1  christos print dgettext foo (17), "extracted15";
     58  1.1  christos 
     59  1.1  christos # This one is hairy. If foo is a function with a prototype and one argument,
     60  1.1  christos # this parses like
     61  1.1  christos #   print dgettext (foo (17), "extracted16");
     62  1.1  christos # otherwise it parses like
     63  1.1  christos #   print dgettext (foo (17, "extracted16"));
     64  1.1  christos # But in the latter case dgettext has no second argument at all; this is
     65  1.1  christos # therefore not the interpretation intended by the programmer.
     66  1.1  christos print dgettext foo 17, "extracted16";
     67  1.1  christos EOPERL
     68  1.1  christos 
     69  1.1  christos tmpfiles="$tmpfiles xg-pl-6.pot"
     70  1.1  christos : ${XGETTEXT=xgettext}
     71  1.1  christos LC_MESSAGES=C LC_ALL= \
     72  1.1  christos ${XGETTEXT} --omit-header --no-location -o xg-pl-6.pot xg-pl-6.pl
     73  1.1  christos test $? = 0 || { rm -fr $tmpfiles; exit 1; }
     74  1.1  christos 
     75  1.1  christos tmpfiles="$tmpfiles xg-pl-6.ok"
     76  1.1  christos cat <<\EOF > xg-pl-6.ok
     77  1.1  christos msgid "extracted1"
     78  1.1  christos msgstr ""
     79  1.1  christos 
     80  1.1  christos msgid "extracted2"
     81  1.1  christos msgstr ""
     82  1.1  christos 
     83  1.1  christos msgid "extracted3"
     84  1.1  christos msgstr ""
     85  1.1  christos 
     86  1.1  christos msgid "extracted4"
     87  1.1  christos msgstr ""
     88  1.1  christos 
     89  1.1  christos msgid "extracted5"
     90  1.1  christos msgstr ""
     91  1.1  christos 
     92  1.1  christos msgid "extracted6"
     93  1.1  christos msgstr ""
     94  1.1  christos 
     95  1.1  christos msgid "extracted7"
     96  1.1  christos msgstr ""
     97  1.1  christos 
     98  1.1  christos msgid "extracted8"
     99  1.1  christos msgstr ""
    100  1.1  christos 
    101  1.1  christos msgid "extracted9"
    102  1.1  christos msgstr ""
    103  1.1  christos 
    104  1.1  christos msgid "extracted10"
    105  1.1  christos msgstr ""
    106  1.1  christos 
    107  1.1  christos msgid "extracted11"
    108  1.1  christos msgstr ""
    109  1.1  christos 
    110  1.1  christos msgid "extracted12"
    111  1.1  christos msgstr ""
    112  1.1  christos 
    113  1.1  christos msgid "extracted13"
    114  1.1  christos msgstr ""
    115  1.1  christos 
    116  1.1  christos msgid "extracted14"
    117  1.1  christos msgstr ""
    118  1.1  christos 
    119  1.1  christos msgid "extracted15"
    120  1.1  christos msgstr ""
    121  1.1  christos 
    122  1.1  christos msgid "extracted16"
    123  1.1  christos msgstr ""
    124  1.1  christos EOF
    125  1.1  christos 
    126  1.1  christos : ${DIFF=diff}
    127  1.1  christos ${DIFF} xg-pl-6.ok xg-pl-6.pot
    128  1.1  christos result=$?
    129  1.1  christos 
    130  1.1  christos rm -fr $tmpfiles
    131  1.1  christos 
    132  1.1  christos exit $result
    133