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