diff --git a/babel.cfg b/babel.cfg new file mode 100644 index 0000000000..15cd6cb76b --- /dev/null +++ b/babel.cfg @@ -0,0 +1,2 @@ +[python: **.py] + diff --git a/setup.cfg b/setup.cfg index 6c00cffd65..cbaaae91c6 100644 --- a/setup.cfg +++ b/setup.cfg @@ -75,3 +75,17 @@ oslo.config.opts = octavia = octavia.opts:list_opts tempest.test_plugins = octavia = octavia.tests.tempest.plugin:OctaviaTempestPlugin + +[compile_catalog] +directory = octavia/locale +domain = octavia + +[update_catalog] +domain = octavia +output_dir = octavia/locale +input_file = octavia/locale/octavia.pot + +[extract_messages] +keywords = _ gettext ngettext l_ lazy_gettext +mapping_file = babel.cfg +output_file = octavia/locale/octavia.pot diff --git a/tools/misc-sanity-checks.sh b/tools/misc-sanity-checks.sh new file mode 100755 index 0000000000..0b7dcac5a3 --- /dev/null +++ b/tools/misc-sanity-checks.sh @@ -0,0 +1,68 @@ +#! /bin/sh + +# Copyright (C) 2014 VA Linux Systems Japan K.K. +# Copyright (C) 2014 YAMAMOTO Takashi +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +TMPDIR=`mktemp -d /tmp/${0##*/}.XXXXXX` || exit 1 +export TMPDIR +trap "rm -rf $TMPDIR" EXIT + +FAILURES=$TMPDIR/failures + + +check_pot_files_errors () { + find octavia -type f -regex '.*\.pot?' \ + -print0|xargs -0 -n 1 --no-run-if-empty msgfmt \ + --check-format -o /dev/null + if [ "$?" -ne 0 ]; then + echo "PO files syntax is not correct!" >>$FAILURES + fi +} + +check_identical_policy_files () { + # For unit tests, we maintain their own policy.json file to make test suite + # independent of whether it's executed from the octavia source tree or from + # site-packages installation path. We don't want two copies of the same + # file to diverge, so checking that they are identical + diff etc/policy.json octavia/tests/etc/policy.json 2>&1 > /dev/null + if [ "$?" -ne 0 ]; then + echo "policy.json files must be identical!" >>$FAILURES + fi +} + +check_no_duplicate_api_test_idempotent_ids() { + # For API tests, an idempotent ID is assigned to each single API test, + # those IDs should be unique + output=$(check-uuid --package octavia.tests.tempest) + if [ "$?" -ne 0 ]; then + echo "There are duplicate idempotent ids in the API tests" >>$FAILURES + echo "please, assign unique uuids to each API test:" >>$FAILURES + echo "$output" >>$FAILURES + fi +} + +# Add your checks here... +check_pot_files_errors +# TODO(johnsom) Uncomment when we have policies to test +# check_identical_policy_files +# TODO(johnsom) Uncomment when we have idempotent ids +# check_no_duplicate_api_test_idempotent_ids + +# Fail, if there are emitted failures +if [ -f $FAILURES ]; then + cat $FAILURES + exit 1 +fi diff --git a/tox.ini b/tox.ini index 281adaa025..389b8688cc 100644 --- a/tox.ini +++ b/tox.ini @@ -59,9 +59,13 @@ commands = flake8 CONSTITUTION.rst HACKING.rst README.rst # Run security linter bandit -r octavia -ll -ii -x octavia/tests - # Make sure specs follow our template + # Make sure specs follow our template find . -type f -name "*.pyc" -delete python -m unittest specs-tests.test_titles + sh ./tools/misc-sanity-checks.sh +whitelist_externals = + sh + find [testenv:docs] commands =