Imported Upstream version 0.18.1.1
[platform/upstream/gettext.git] / gettext-tools / tests / xgettext-perl-4
1 #! /bin/sh
2
3 # Tests for the general string extraction facilities of the Perl backend
4 # (with option --extract-all).
5                                                                                 
6 tmpfiles=""
7 trap 'rm -fr $tmpfiles' 1 2 3 15
8
9 tmpfiles="$tmpfiles xg-pl-4.pl"
10 cat <<\EOPERL > xg-pl-4.pl
11 use strict;
12
13 # A double quoted string.
14 print "'Your command, please?', asked the waiter.\n";
15 # A double quoted string with interpolations.
16 my $polite = 'please';
17 print "'Your recommendation, $polite?', answered the guest.\n";
18 # A reference.
19 my $ref1 = \$polite;
20 my $ref2 = \$ref1;
21 my $ref3 = \$ref2;
22 print "Yes, $$$$ref3!\n";
23 # The qq operator and some of the more esoteric string interpolation
24 # features of Perl.
25 print (qq {\uU\lp \LaNd\E \ldo\lWn, \Uoh\E, yeah\Q!!!\E\\!\n});
26 # The q operator.
27 print q<E-Mail: <no@spam.org>.  >;
28 # Should not be found.
29 { $polite =~ qr?le? }
30
31 # List interpolation.
32 print "Your Perl include path starts with '$INC[0]' and it " .
33       "ends with '$INC[-1]'.  $#INC directories are searched.\n";
34 # Here documents.
35 print <<EOF, <<'EOF';
36 Line 1\nLine 2
37 EOF
38 Line 1\nStill line 1
39 EOF
40 # Perl code inside strings.
41 sub hello_func { return 'Hello' };
42 print "@{[hello_func]} world!\n";
43 # Backticks.
44 print `ls $0`;
45 print qx;ls $0;;
46
47 if (!defined($size = -s $filename)) {
48   # The above s is part of the function -s, not 
49   # the substitution operator!    
50 }
51
52 # The rest requires a Unicode aware Perl.
53 require 5.006;
54 print "\U\x70\LO\154\x{69}\x{004E}a \Q\lRu\LLeS\E\041\n";
55 # FIXME: The following should actually produce 'Polina4ka' in cyrillic letters.
56 #print "\u\x{43f}\L\x{41E}\x{43b}\x{418}\E\x{43d}" .
57 #      "\x{430}\x{447}\x{43a}\x{430}\n";
58 EOPERL
59
60 tmpfiles="$tmpfiles xg-pl-4.tmp.pot xg-pl-4.pot"
61 : ${XGETTEXT=xgettext}
62 LC_MESSAGES=C LC_ALL= \
63 ${XGETTEXT} -a --omit-header --no-location -o xg-pl-4.tmp.pot xg-pl-4.pl
64 test $? = 0 || { rm -fr $tmpfiles; exit 1; }
65 LC_ALL=C tr -d '\r' < xg-pl-4.tmp.pot > xg-pl-4.pot
66 test $? = 0 || { rm -fr $tmpfiles; exit 1; }
67
68 tmpfiles="$tmpfiles xg-pl-4.ok"
69 cat <<\EOF > xg-pl-4.ok
70 msgid "'Your command, please?', asked the waiter.\n"
71 msgstr ""
72
73 msgid "please"
74 msgstr ""
75
76 msgid "'Your recommendation, $polite?', answered the guest.\n"
77 msgstr ""
78
79 msgid "Yes, $$$$ref3!\n"
80 msgstr ""
81
82 msgid "Up and down, OH, yeah\\!\\!\\!\\!\n"
83 msgstr ""
84
85 msgid "E-Mail: <no@spam.org>.  "
86 msgstr ""
87
88 msgid ""
89 "Your Perl include path starts with '$INC[0]' and it ends with '$INC[-1]'.  "
90 "$#INC directories are searched.\n"
91 msgstr ""
92
93 msgid ""
94 "Line 1\n"
95 "Line 2\n"
96 msgstr ""
97
98 msgid "Line 1\\nStill line 1\n"
99 msgstr ""
100
101 msgid "Hello"
102 msgstr ""
103
104 msgid "@{[hello_func]} world!\n"
105 msgstr ""
106
107 msgid "ls $0"
108 msgstr ""
109
110 msgid "Polina rules!\n"
111 msgstr ""
112 EOF
113
114 : ${DIFF=diff}
115 ${DIFF} xg-pl-4.ok xg-pl-4.pot
116 result=$?
117
118 rm -fr $tmpfiles
119
120 exit $result