Compare commits
No commits in common. "c8s" and "imports/c8-beta/gettext-0.19.8.1-17.el8" have entirely different histories.
c8s
...
imports/c8
1
.gettext.metadata
Normal file
1
.gettext.metadata
Normal file
@ -0,0 +1 @@
|
|||||||
|
e0fe90ede22f7f16bbde7bdea791a835f2773fc9 SOURCES/gettext-0.19.8.1.tar.xz
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
|||||||
/gettext-0.*.tar.xz
|
SOURCES/gettext-0.19.8.1.tar.xz
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
#requires bison
|
|
||||||
#requires libtool
|
|
||||||
|
|
||||||
mcd $BUILDDIR/gettext
|
|
||||||
|
|
||||||
$SRC/gettext-*/configure $TCONFIGARGS --disable-static --enable-shared --with-pic-=yes --disable-csharp --disable-rpath
|
|
||||||
|
|
||||||
make $J
|
|
||||||
make $J install
|
|
@ -1,6 +0,0 @@
|
|||||||
--- !Policy
|
|
||||||
product_versions:
|
|
||||||
- rhel-8
|
|
||||||
decision_context: osci_compose_gate
|
|
||||||
rules:
|
|
||||||
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}
|
|
1
sources
1
sources
@ -1 +0,0 @@
|
|||||||
SHA512 (gettext-0.19.8.1.tar.xz) = 3553227b62f2a7d9b67c881ef889c030a6a21d5ecd210c4bf3d649df0b37193a99a68cf8fd5f2c69b6a87e847035dd9576f9bcb9363422866e26b04f4f6dd431
|
|
@ -1,62 +0,0 @@
|
|||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Makefile of /CoreOS/python/gettext-tests
|
|
||||||
# Description: Functional tests for gettext.
|
|
||||||
# Author: Pooja Yadav <poyadav@redhat.com>
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Copyright (c) 2019 Red Hat, 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 of
|
|
||||||
# the License, 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/.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
|
|
||||||
export TEST=/CoreOS/python/gettext-tests
|
|
||||||
export TESTVERSION=1.0
|
|
||||||
|
|
||||||
BUILT_FILES=
|
|
||||||
|
|
||||||
FILES=$(METADATA) Makefile runtest.sh test_gettext.py test_i18n.py
|
|
||||||
|
|
||||||
.PHONY: all install download clean
|
|
||||||
|
|
||||||
run: $(FILES) build
|
|
||||||
./runtest.sh
|
|
||||||
|
|
||||||
build: $(BUILT_FILES)
|
|
||||||
test -x runtest.sh || chmod a+x runtest.sh
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f *~ $(BUILT_FILES)
|
|
||||||
|
|
||||||
include /usr/share/rhts/lib/rhts-make.include
|
|
||||||
|
|
||||||
$(METADATA): Makefile
|
|
||||||
@echo "Owner: Pooja Yadav <poyadav@redhat.com>" > $(METADATA)
|
|
||||||
@echo "Name: $(TEST)" >> $(METADATA)
|
|
||||||
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
|
||||||
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
|
||||||
@echo "Description: Functional test for the gettext module" >> $(METADATA)
|
|
||||||
@echo "Type: Functional" >> $(METADATA)
|
|
||||||
@echo "TestTime: 5m" >> $(METADATA)
|
|
||||||
@echo "RunFor: python3" >> $(METADATA)
|
|
||||||
@echo "Requires: python3" >> $(METADATA)
|
|
||||||
@echo "Priority: Normal" >> $(METADATA)
|
|
||||||
@echo "License: GPLv2" >> $(METADATA)
|
|
||||||
@echo "Confidential: no" >> $(METADATA)
|
|
||||||
@echo "Destructive: no" >> $(METADATA)
|
|
||||||
|
|
||||||
rhts-lint $(METADATA)
|
|
@ -1,53 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# runtest.sh of /CoreOS/python/gettext-tests
|
|
||||||
# Description: Functional tests for gettext to check i18n features.
|
|
||||||
# Author: Pooja Yadav <poyadav@redhat.com>
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Copyright (c) 2010 Red Hat, Inc. All rights reserved.
|
|
||||||
#
|
|
||||||
# This copyrighted material is made available to anyone wishing
|
|
||||||
# to use, modify, copy, or redistribute it subject to the terms
|
|
||||||
# and conditions of the GNU General Public License version 2.
|
|
||||||
#
|
|
||||||
# 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, write to the Free
|
|
||||||
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
||||||
# Boston, MA 02110-1301, USA.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
# Include Beaker environment
|
|
||||||
[ -e /usr/bin/rhts-environment.sh ] && . /usr/bin/rhts-environment.sh
|
|
||||||
. /usr/lib/beakerlib/beakerlib.sh
|
|
||||||
|
|
||||||
PACKAGE="gettext"
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
rlPhaseStartSetup
|
|
||||||
rlAssertRpm $PACKAGE
|
|
||||||
rlRun "TmpDir=\`mktemp -d\`" 0 "Creating tmp directory"
|
|
||||||
rlRun "cp test_i18n.py test_gettext.py $TmpDir"
|
|
||||||
rlRun "pushd $TmpDir"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartTest
|
|
||||||
rlLog "Run test_gettext.py"
|
|
||||||
rlRun "python3 test_gettext.py"
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rlRun "popd"
|
|
||||||
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
|
|
||||||
rlPhaseEnd
|
|
||||||
rlJournalPrintText
|
|
||||||
rlJournalEnd
|
|
@ -1,227 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
import logging
|
|
||||||
import os
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
|
|
||||||
# Saving logs
|
|
||||||
logging.basicConfig(level=logging.INFO)
|
|
||||||
|
|
||||||
DECORATE_STR = "************************************"
|
|
||||||
logging.info("TEST RESULTS FOR GETTEXT\n{0}".format(DECORATE_STR))
|
|
||||||
|
|
||||||
# CONSTANTS
|
|
||||||
PACKAGE_TO_TEST = "gettext"
|
|
||||||
DOMAIN_TO_BIND = "testdomain"
|
|
||||||
PYTHON_INTERPRETER = "python3"
|
|
||||||
TEST_I18N_FILE = "test_i18n.py"
|
|
||||||
|
|
||||||
LOG_INFO_PASS = "[ PASS ]"
|
|
||||||
LOG_INFO_FAIL = "[ FAIL ]"
|
|
||||||
LOG_INFO_OS_ERROR = "[ OS Error ]"
|
|
||||||
|
|
||||||
# Test Data
|
|
||||||
TEST_DATA = {"fr_FR": '''msgstr "Bonjour le monde!"''',
|
|
||||||
"de_DE": '''msgstr "Hallo Welt!"''',
|
|
||||||
"es_ES": '''msgstr "Hola Mundo!"''',
|
|
||||||
"it_IT": '''msgstr "Ciao mondo!"''',
|
|
||||||
"pt_BR": '''msgstr "Olá Mundo!"''',
|
|
||||||
"ja_JP": '''msgstr "「こんにちは世界」"''',
|
|
||||||
"ko_KR": '''msgstr "안녕하세요!"''',
|
|
||||||
"ru_RU": '''msgstr "Привет мир!"''',
|
|
||||||
"zh_CN": '''msgstr "你好,世界!"''',
|
|
||||||
"zh_TW": '''msgstr "你好,世界!"'''}
|
|
||||||
|
|
||||||
|
|
||||||
def test_locale():
|
|
||||||
"""
|
|
||||||
Check common files for locale support
|
|
||||||
"""
|
|
||||||
|
|
||||||
subject = "Locale Support Test"
|
|
||||||
|
|
||||||
try:
|
|
||||||
all_locales = subprocess.Popen(["locale", "-a"], stdout=subprocess.PIPE)
|
|
||||||
all_locales_data = all_locales.communicate()
|
|
||||||
|
|
||||||
if all_locales_data:
|
|
||||||
actual = all_locales_data[0].decode().split('\n')
|
|
||||||
else:
|
|
||||||
logging.error("{0}: ERROR\n".format(subject))
|
|
||||||
return
|
|
||||||
|
|
||||||
expected_locales = ['en_US', 'en_US.iso88591',
|
|
||||||
'en_US.iso885915', 'en_US.utf8']
|
|
||||||
if set(expected_locales).issubset(set(actual)):
|
|
||||||
logging.info("{0}: {1}\n".format(subject, LOG_INFO_PASS))
|
|
||||||
else:
|
|
||||||
logging.error("{0}: {1}\n".format(subject, LOG_INFO_FAIL))
|
|
||||||
|
|
||||||
except OSError as e:
|
|
||||||
logging.error("{0}: {1}\n".format(subject, LOG_INFO_OS_ERROR))
|
|
||||||
|
|
||||||
|
|
||||||
def test_gettext():
|
|
||||||
"""
|
|
||||||
Check if gettext is present
|
|
||||||
"""
|
|
||||||
|
|
||||||
subject = "GNU Internationalization Utilities Test"
|
|
||||||
|
|
||||||
try:
|
|
||||||
cmd_check_gettext = ['rpm', '-q', PACKAGE_TO_TEST]
|
|
||||||
p1 = subprocess.Popen(cmd_check_gettext, stdout=subprocess.PIPE)
|
|
||||||
std_data, stderr = p1.communicate()
|
|
||||||
std_data = std_data.decode()
|
|
||||||
logging.info("Found {0} NVR: {1}".format(PACKAGE_TO_TEST, std_data))
|
|
||||||
if PACKAGE_TO_TEST in std_data:
|
|
||||||
logging.info("{0}: {1}\n".format(subject, LOG_INFO_PASS))
|
|
||||||
else:
|
|
||||||
logging.error("{0}: {1}\n".format(subject, LOG_INFO_FAIL))
|
|
||||||
except OSError as e:
|
|
||||||
logging.error("{0}: {1}\n".format(subject, LOG_INFO_OS_ERROR))
|
|
||||||
|
|
||||||
|
|
||||||
def test_pot_creation():
|
|
||||||
"""
|
|
||||||
Creates hello.pot file using test_i18n.py file
|
|
||||||
"""
|
|
||||||
|
|
||||||
subject = "POT file Creation Test"
|
|
||||||
|
|
||||||
try:
|
|
||||||
pot_file = subprocess.Popen(
|
|
||||||
"xgettext -d '{0}' -o {1}.pot {2}".format(DOMAIN_TO_BIND,
|
|
||||||
DOMAIN_TO_BIND,
|
|
||||||
TEST_I18N_FILE),
|
|
||||||
shell=True
|
|
||||||
)
|
|
||||||
pot_file.communicate()
|
|
||||||
except OSError as e:
|
|
||||||
logging.error("{0}: {1}\n".format(subject, LOG_INFO_OS_ERROR))
|
|
||||||
else:
|
|
||||||
logging.info("{0}: {1}\n".format(subject, LOG_INFO_PASS))
|
|
||||||
|
|
||||||
|
|
||||||
def make_dir(locale_dir):
|
|
||||||
path = "./locale/{0}/LC_MESSAGES".format(locale_dir)
|
|
||||||
os.makedirs(path)
|
|
||||||
|
|
||||||
|
|
||||||
def create_po_files(active_locale):
|
|
||||||
"""
|
|
||||||
creates .po file using POT file
|
|
||||||
"""
|
|
||||||
|
|
||||||
subject = "PO file Creation"
|
|
||||||
|
|
||||||
try:
|
|
||||||
cmd_po_files = subprocess.Popen(
|
|
||||||
"msginit --no-translator -l {0} -i {1}.pot -o ./locale/{2}/LC_MESSAGES/{3}.po".format(
|
|
||||||
active_locale, DOMAIN_TO_BIND, active_locale, active_locale), shell=True
|
|
||||||
)
|
|
||||||
cmd_po_files.communicate()
|
|
||||||
except OSError as e:
|
|
||||||
logging.error("{0} failed: {1}\n".format(subject, LOG_INFO_OS_ERROR))
|
|
||||||
else:
|
|
||||||
logging.info("{0} Succeed.".format(subject))
|
|
||||||
|
|
||||||
|
|
||||||
def translate(active_locale):
|
|
||||||
"""
|
|
||||||
Updates .po file with the translations for respective language
|
|
||||||
"""
|
|
||||||
|
|
||||||
data = TEST_DATA.get(active_locale)
|
|
||||||
if not data:
|
|
||||||
return
|
|
||||||
with open('./locale/{0}/LC_MESSAGES/{1}.po'.format(active_locale,
|
|
||||||
active_locale),
|
|
||||||
'r', encoding='latin-1') as f1:
|
|
||||||
data1 = f1.readlines()
|
|
||||||
data1.pop()
|
|
||||||
data1.append(data)
|
|
||||||
for index, data in enumerate(data1):
|
|
||||||
if "Content-Type" in data:
|
|
||||||
data1[index] = '"Content-Type: text/plain; charset=UTF-8\\n"\n'
|
|
||||||
|
|
||||||
with open('./locale/{0}/LC_MESSAGES/{1}'.format(active_locale,
|
|
||||||
active_locale) + ".po", 'w') as f2:
|
|
||||||
for line in data1:
|
|
||||||
f2.write(line)
|
|
||||||
|
|
||||||
|
|
||||||
def create_mo_files(active_locale):
|
|
||||||
"""
|
|
||||||
Creates .mo file for different locale form .po file
|
|
||||||
"""
|
|
||||||
|
|
||||||
subject = "MO file Creation"
|
|
||||||
|
|
||||||
try:
|
|
||||||
mo_files = subprocess.Popen(
|
|
||||||
"msgfmt ./locale/{0}/LC_MESSAGES/{1}.po --output-file ./locale/{2}/LC_MESSAGES/{3}.mo".format(
|
|
||||||
active_locale, active_locale, active_locale, active_locale
|
|
||||||
), shell=True
|
|
||||||
)
|
|
||||||
mo_files.communicate()
|
|
||||||
except OSError as e:
|
|
||||||
logging.error("{0} failed: {1}\n".format(subject, LOG_INFO_OS_ERROR))
|
|
||||||
else:
|
|
||||||
logging.info("{0} Succeed.".format(subject))
|
|
||||||
|
|
||||||
|
|
||||||
def test_translations(active_locale):
|
|
||||||
"""
|
|
||||||
Verify if the output is correct for different language
|
|
||||||
"""
|
|
||||||
|
|
||||||
subject = "Translation Test"
|
|
||||||
|
|
||||||
try:
|
|
||||||
cmd_translation_test = subprocess.check_output(
|
|
||||||
'LANGUAGE={0} {1} {2} {3}'.format(active_locale,
|
|
||||||
PYTHON_INTERPRETER,
|
|
||||||
TEST_I18N_FILE,
|
|
||||||
active_locale),
|
|
||||||
encoding='UTF-8', shell=True
|
|
||||||
)
|
|
||||||
if cmd_translation_test.strip() == TEST_DATA[active_locale].strip('msgstr "'):
|
|
||||||
logging.info("{0} for {1}: {2}\n".format(subject, active_locale, LOG_INFO_PASS))
|
|
||||||
else:
|
|
||||||
logging.error("{0} for {1}: {2}\n".format(subject, active_locale, LOG_INFO_FAIL))
|
|
||||||
except OSError as e:
|
|
||||||
logging.error("{0} for {1}: {2}\n".format(subject, active_locale, LOG_INFO_OS_ERROR))
|
|
||||||
|
|
||||||
|
|
||||||
def tear_off():
|
|
||||||
try:
|
|
||||||
subprocess.call(['rm', '-rf', './locale', '{0}.pot'.format(DOMAIN_TO_BIND)])
|
|
||||||
except OSError as e:
|
|
||||||
logging.error("OSError\n")
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
"""
|
|
||||||
Gettext Tests
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Prepare tests
|
|
||||||
env_tests = [test_locale,
|
|
||||||
test_gettext,
|
|
||||||
test_pot_creation]
|
|
||||||
|
|
||||||
translation_tests = [make_dir,
|
|
||||||
create_po_files,
|
|
||||||
translate,
|
|
||||||
create_mo_files,
|
|
||||||
test_translations]
|
|
||||||
|
|
||||||
# Execute tests
|
|
||||||
[env_test() for env_test in env_tests]
|
|
||||||
|
|
||||||
for locale in TEST_DATA.keys():
|
|
||||||
[test(locale) for test in translation_tests]
|
|
||||||
|
|
||||||
tear_off()
|
|
@ -1,14 +0,0 @@
|
|||||||
import gettext
|
|
||||||
import sys
|
|
||||||
|
|
||||||
|
|
||||||
def print_message(locale):
|
|
||||||
# Set up message catalog access
|
|
||||||
t = gettext.translation('%s' % locale, 'locale', fallback=True)
|
|
||||||
_ = t.gettext
|
|
||||||
|
|
||||||
s = _('Hello World!')
|
|
||||||
print(s)
|
|
||||||
|
|
||||||
|
|
||||||
print_message(sys.argv[1])
|
|
@ -1,13 +0,0 @@
|
|||||||
---
|
|
||||||
# Tests run on Atomic, Classic and Container
|
|
||||||
- hosts: localhost
|
|
||||||
roles:
|
|
||||||
- role: standard-test-beakerlib
|
|
||||||
tags:
|
|
||||||
- atomic
|
|
||||||
- classic
|
|
||||||
- container
|
|
||||||
tests:
|
|
||||||
- gettext-tests
|
|
||||||
required_packages:
|
|
||||||
- gettext
|
|
Loading…
Reference in New Issue
Block a user