blob: 5316893e930a1f1bcfa52107050911c03852c536 [file] [log] [blame]
#! /bin/sh
# Copyright (C) 2010 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
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Check the creation of compiled message catalogs in Java .properties format.
# FIXME: Resource names with a dash maybe don't work. If so, it should be
# mentioned in the documentation.
. ./defs || Exit 1
set -e
cat > Makefile.am << 'END'
pkgresourcesdir = $(pkgdatadir)/resources
pkgresources_POTS = posub/foo-bar.pot
posub_foo_bar_pot_SOURCES = src/Hello.java
posub_foo_bar_pot_LINGUAS = de fr
posub_foo_bar_pot_CATALOGFORMAT = properties
EXTRA_DIST = src/Hello.java
END
cat >> configure.in << 'END'
AM_POT_TOOLS
AC_OUTPUT
END
mkdir src
cat > src/Hello.java << 'END'
import java.util.*;
import gnu.gettext.*;
public class Hello {
public static void main (String[] args) {
ResourceBundle catalog = ResourceBundle.getBundle("foo-bar");
System.out.println(GettextResource.gettext(catalog,"Hello, world!"));
}
}
END
$ACLOCAL
$AUTOMAKE -a
$AUTOCONF
# .po files for _LINGUAS.
mkdir posub
cat > posub/foo-bar-de.po << 'END'
msgid ""
msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Hello, world!"
msgstr "Hallo Welt!"
END
cat > posub/foo-bar-fr.po << 'END'
msgid ""
msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Hello, world!"
msgstr "Salut, le monde!"
END
# A .po file not listed among _LINGUAS, and a junk .properties file.
cat > posub/foo-bar-es.po << 'END'
msgid ""
msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Hello, world!"
msgstr "Adiós, mundo!"
END
cat > posub/foo-bar-es.properties << 'END'
junk
END
cat > expected << 'END'
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: pot-format-java1 1.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: src/Hello.java:7
msgid "Hello, world!"
msgstr ""
END
distdir=$me-1.0
for builddir in . sub; do
for config_options in '' 'LINGUAS="es de"'; do
if test $builddir = '.'; then
sourcedir='.'
else
sourcedir='..'
mkdir $builddir
fi
instdir="`pwd`/instdir"
cd $builddir
env $config_options $sourcedir/configure --prefix="$instdir"
$MAKE
# Check that "make install" creates the expected .pot file, .po files
# and .properties files.
# (They are created under $sourcedir, because the files are distributed.
# Cf. the GNU standards, node "Makefile Basics".)
$MAKE install
test -f $sourcedir/posub/foo-bar.pot
test $builddir = '.' || test ! -r posub/foo-bar.pot
grep -v 'POT-Creation-Date' $sourcedir/posub/foo-bar.pot | LC_ALL=C tr -d '\r' > actual
diff actual $sourcedir/expected
rm -f actual
test -f $sourcedir/posub/foo-bar-de.po
test ! -r $sourcedir/posub/foo-bar-de.properties
test -f $sourcedir/posub/foo-bar_de.properties
test -f $sourcedir/posub/foo-bar-fr.po
test ! -r $sourcedir/posub/foo-bar-fr.properties
test -f $sourcedir/posub/foo-bar_fr.properties
test ! -r $sourcedir/posub/foo-bar-de.mo
test ! -r $sourcedir/posub/foo-bar-fr.mo
if test -z "$config_options"; then
# Check that "make install" installed de,po and fr.po but not es.po.
test -f "$instdir"/share/pot-format-java1/resources/foo-bar_de.properties
test -f "$instdir"/share/pot-format-java1/resources/foo-bar_fr.properties
test ! -r "$instdir"/share/pot-format-java1/resources/foo-bar_es.properties
else
# Check that "make install" installed de.po but not fr.po nor es.po.
test -f "$instdir"/share/pot-format-java1/resources/foo-bar_de.properties
test ! -r "$instdir"/share/pot-format-java1/resources/foo-bar_fr.properties
test ! -r "$instdir"/share/pot-format-java1/resources/foo-bar_es.properties
fi
test ! -r "$instdir"/share/locale/de/LC_MESSAGES/foo-bar.properties
test ! -r "$instdir"/share/locale/fr/LC_MESSAGES/foo-bar.properties
test ! -r "$instdir"/share/locale/es/LC_MESSAGES/foo-bar.properties
test ! -r "$instdir"/share/locale/de/LC_MESSAGES/foo-bar.mo
test ! -r "$instdir"/share/locale/fr/LC_MESSAGES/foo-bar.mo
test ! -r "$instdir"/share/locale/es/LC_MESSAGES/foo-bar.mo
# Check that "make distdir" creates the expected .pot file.
rm -f $sourcedir/posub/foo-bar.pot
$MAKE distdir
test -f $sourcedir/posub/foo-bar.pot
test $builddir = '.' || test ! -r posub/foo-bar.pot
grep -v 'POT-Creation-Date' $sourcedir/posub/foo-bar.pot | LC_ALL=C tr -d '\r' > actual
diff actual $sourcedir/expected
rm -f actual
test -f $sourcedir/posub/foo-bar-de.po
test ! -r $sourcedir/posub/foo-bar-de.properties
test -f $sourcedir/posub/foo-bar_de.properties
test -f $sourcedir/posub/foo-bar-fr.po
test ! -r $sourcedir/posub/foo-bar-fr.properties
test -f $sourcedir/posub/foo-bar_fr.properties
test ! -r $sourcedir/posub/foo-bar-de.mo
test ! -r $sourcedir/posub/foo-bar-fr.mo
# Check that the tarball contains posub/foo-bar-{de,fr}.{po,properties}
# but not the others, regardless whether LINGUAS was specified or not.
test -d $distdir # sanity check
test -f $distdir/posub/foo-bar-de.po
test -f $distdir/posub/foo-bar_de.properties
test -f $distdir/posub/foo-bar-fr.po
test -f $distdir/posub/foo-bar_fr.properties
test ! -r $distdir/posub/foo-bar-es.po
test ! -r $distdir/posub/foo-bar_es.properties
test ! -r $distdir/posub/foo-bar-de.mo
test ! -r $distdir/posub/foo-bar-fr.mo
test ! -r $distdir/posub/foo-bar-es.mo
# Sanity check.
$MAKE distcheck
# Clean up.
$MAKE distclean
rm -rf "$instdir"
cd $sourcedir
done
done
: