3
# Selftest for intltool
5
# Copyright (C) 2000 Free Software Foundation.
7
# This library is free software; you can redistribute it and/or
8
# modify it under the terms of the GNU General Public License as
9
# published by the Free Software Foundation; either version 2 of the
10
# License, or (at your option) any later version.
12
# This script is distributed in the hope that it will be useful,
13
# but WITHOUT ANY WARRANTY; without even the implied warranty of
14
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
# General Public License for more details.
17
# You should have received a copy of the GNU General Public License
18
# along with this library; if not, write to the Free Software
19
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21
# Author(s): Kenneth Christiansen
23
## Release information
24
my $PROGRAM = "selftest";
32
## Always print as the first thing
37
my $srcdir = $ENV{"srcdir"} || ".";
39
sub check_extract_result($)
43
my $result =`diff -u $srcdir/results/$testcase.h cases/$testcase.h`;
45
if ($? == 0 && $result eq "") {
46
print "[OK]\n"; ## diff was empty, ie. files were equal
48
print "[FAILED] ($testcase)\n";
56
sub check_merge_result($)
60
$testcase =~ s/\.in$//;
61
my $result =`diff -u $srcdir/results/$testcase cases/$testcase`;
63
if ($? == 0 && $result eq "") {
64
print "[OK]\n"; ## diff was empty, ie. files were equal
66
print "[FAILED] ($testcase)\n";
79
print "Running self test of the intltool module\n\n";
82
system("cp $srcdir/cases/*.* cases") if $srcdir ne ".";
84
print " 1. Extract messages from simple desktop file: ";
85
$case = "extract1.desktop";
86
system("/usr/bin/perl ../intltool-extract --type=gettext/ini --quiet --update cases/$case") == 0 or $failed = 1;
87
check_extract_result($case);
89
print " 2. Merge translations into a Bonobo UI style file: ";
91
system("/usr/bin/perl ../intltool-merge -o -p --quiet cases cases/$case.in cases/$case") == 0 or $failed = 1;
92
check_merge_result($case);
94
print " 3. Extract messages from a multi-line XML file: ";
95
$case = "extract7.xml";
96
system("/usr/bin/perl ../intltool-extract --type=gettext/xml --quiet --update cases/$case") == 0 or $failed = 1;
97
check_extract_result($case);
99
print " 4. Merge translations into a multi-line XML file: ";
100
$case = "merge7.xml";
101
system("/usr/bin/perl ../intltool-merge -x -p --quiet cases cases/$case.in cases/$case") == 0 or $failed = 1;
102
check_merge_result($case);
104
print " 5. Extract messages with unusual characters in the XML tag: ";
105
$case = "extract3.xml.in";
106
system("/usr/bin/perl ../intltool-extract --type=gettext/xml --quiet --update cases/$case") == 0 or $failed = 1;
107
check_extract_result($case);
109
print " 6. Merge translations into a pong style XML file: ";
110
$case = "merge4.xml";
111
system("/usr/bin/perl ../intltool-merge -x -p --quiet cases cases/$case.in cases/$case") == 0 or $failed = 1;
112
check_merge_result($case);
114
print " 7. Extract messages from a glade style XML file: ";
115
$case = "extract6.glade";
116
system("/usr/bin/perl ../intltool-extract --type=gettext/glade --quiet --update cases/$case") == 0 or $failed = 1;
117
check_extract_result($case);
119
print " 8. Merge translations into a dia sheet style XML file: ";
120
$case = "merge5u.sheet";
121
system("/usr/bin/perl ../intltool-merge -x -u --quiet cases cases/$case.in cases/$case") == 0 or $failed = 1;
122
check_merge_result($case);
124
print " 9. Merge translations into a dia sheet style XML file [broken XML]: ";
125
$case = "merge5p.sheet";
126
system("/usr/bin/perl ../intltool-merge -x -p --quiet cases cases/$case.in cases/$case") == 0 or $failed = 1;
127
check_merge_result($case);
129
print "10. Merge translations that include escaped .po strings: ";
130
$case = "merge6.xml";
131
system("/usr/bin/perl ../intltool-merge -x -u --quiet cases cases/$case.in cases/$case") == 0 or $failed = 1;
132
check_merge_result($case);
134
print "11. Merge translations into a .keys file: ";
135
$case = "merge8.keys";
136
system("/usr/bin/perl ../intltool-merge -k -u --quiet cases cases/$case.in cases/$case") == 0 or $failed = 1;
137
check_merge_result($case);
139
print "12. Extract messages from a glade 2.0 style XML file: ";
140
$case = "extract8.glade";
141
system("/usr/bin/perl ../intltool-extract --type=gettext/glade --quiet --update cases/$case") == 0 or $failed = 1;
142
check_extract_result($case);