requirements/tools/babel-test.sh
Andreas Jaeger e3305bf513 Babel Integration tests
With Babel 2.2 and then with Babel 2.3.2 and 2.3.3 releases, the
OpenStack infra scripts broke and uncovered bugs in the upstream
Babel release. The infra scripts run in post and periodic queues, so
failures here are not directly visible. With Babel 2.3.x invalid strings
were send to the translation server, and we had to recover old content
to fix this.

Let's add some Babel integration tests that can be run whenever the
upper-constraints file changes so that any new Babel release will be at
least minimally tested.

The shell script babel-test.sh runs a simple extraction of strings to
translate from a simple input file. It uses the same commands that the
infra scripts run and handles the two different cases of extraction of
the normal strings and extraction of the non-standard log-level strings.

The script then compares the new content with previously created good
content.

Once this change is in, we will run this test whenever
upper-constraints.txt file changes.

Needed-By: I15fa6a706323615d6072d8acaa859fea9bf35883
Change-Id: Iab7844ba748ecd84ec07ad4280b2317bd626fe9a
2016-04-24 17:21:18 -05:00

43 lines
1.2 KiB
Bash
Executable File

#!/bin/bash -xe
pybabel extract \
--add-comments Translators: \
--msgid-bugs-address="https://bugs.launchpad.net/openstack-i18n/" \
--project=requirements --version=1 \
-k "_C:1c,2" -k "_P:1,2" \
-o babel-test/test.pot babel-test
pybabel extract --no-default-keywords \
--add-comments Translators: \
--msgid-bugs-address="https://bugs.launchpad.net/openstack-i18n/" \
--project=requirements --version=1 \
-k "_LE" \
-o babel-test/test-log-error.pot babel-test
# Entries to ignore
REGEX="(POT-Creation-Date|Generated-By|Copyright (C) |FIRST AUTHOR <EMAIL@ADDRESS>)"
function diff_files {
local expected=$1
local testfile=$2
local extra
# grep fails if there's no content - which is fine here.
set +e
extra=$(diff -u0 $expected $testfile | \
egrep -v "$REGEX" |egrep -c "^([-+][^-+#])")
set -e
if [ $extra -ne 0 ] ; then
echo "Generation of test.pot failed."
echo "Extra content is:"
diff -u0 $expected $testfile | egrep -v "$REGEX"
exit 1
fi
}
diff_files babel-test/expected.pot babel-test/test.pot
diff_files babel-test/expected-log-error.pot babel-test/test-log-error.pot
echo "Everything fine"