#!/bin/sh
. "${srcdir=.}/init.sh"; path_prepend_ . ../src

# Test of JavaScript support.

cat <<\EOF > xg-js-1.js
var s1 = "Simple string, no gettext needed",
    s2 = _("Extract this first string");
function foo(a) {
    var s3 = "Prefix _(" + _("Extract this second string") + ") Postfix";
}
if (document.getElementsById("foo")[0].innerHTML == _("Extract this third string")) {
    /* _("This is a comment and must not be extracted!") */
}
/* TRANSLATORS: This is a translator comment.  */
gettext('Extract this fourth string');
// TRANSLATORS: This is another translator comment.
gettext('Extract this fifth string');
EOF

: ${XGETTEXT=xgettext}
${XGETTEXT} --add-comments=TRANSLATORS: --no-location -o xg-js-1.tmp xg-js-1.js 2>xg-js-1.err
test $? = 0 || { cat xg-js-1.err; Exit 1; }
func_filter_POT_Creation_Date xg-js-1.tmp xg-js-1.pot

cat <<\EOF > xg-js-1.ok
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\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"

msgid "Extract this first string"
msgstr ""

msgid "Extract this second string"
msgstr ""

msgid "Extract this third string"
msgstr ""

#. TRANSLATORS: This is a translator comment.
msgid "Extract this fourth string"
msgstr ""

#. TRANSLATORS: This is another translator comment.
msgid "Extract this fifth string"
msgstr ""
EOF

: ${DIFF=diff}
${DIFF} xg-js-1.ok xg-js-1.pot
result=$?

exit $result
