diff --git a/.cvsignore b/.cvsignore deleted file mode 100644 index e69de29..0000000 diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore index 9458471..9fba28f 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,8 @@ -/libunistring-0.9.3.tar.gz +libunistring-0.9.3.tar.gz +/libunistring-0.9.4.tar.xz +/libunistring-0.9.7.tar.xz +/libunistring-0.9.8.tar.xz +/libunistring-0.9.9.tar.xz +/libunistring-0.9.10.tar.xz +/libunistring-1.0.tar.xz +/libunistring-1.1.tar.xz diff --git a/0001-Add-NULL-check-for-malloc-in-two-uninorm-files.patch b/0001-Add-NULL-check-for-malloc-in-two-uninorm-files.patch deleted file mode 100644 index 9ec79f4..0000000 --- a/0001-Add-NULL-check-for-malloc-in-two-uninorm-files.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 157da9e2421d3db15b9fa2f832d650b64818accc Mon Sep 17 00:00:00 2001 -From: Stephen Gallagher -Date: Wed, 29 Feb 2012 08:05:09 -0500 -Subject: [PATCH] Add NULL check for malloc() in two uninorm files - ---- - lib/uninorm/u-normalize-internal.h | 5 +++++ - lib/uninorm/uninorm-filter.c | 5 +++++ - 2 files changed, 10 insertions(+), 0 deletions(-) - -diff --git a/lib/uninorm/u-normalize-internal.h b/lib/uninorm/u-normalize-internal.h -index e21243fe5589c0ca87ce230f5ea049bb37224a07..955893c15fa9044f9eff2ea407504008d9e35eea 100644 ---- a/lib/uninorm/u-normalize-internal.h -+++ b/lib/uninorm/u-normalize-internal.h -@@ -310,6 +310,11 @@ FUNC (uninorm_t nf, const UNIT *s, size_t n, - abort (); - new_sortbuf = - (struct ucs4_with_ccc *) malloc (2 * sortbuf_allocated * sizeof (struct ucs4_with_ccc)); -+ if(new_sortbuf == NULL) { -+ errno = ENOMEM; -+ goto fail; -+ } -+ - memcpy (new_sortbuf, sortbuf, - sortbuf_count * sizeof (struct ucs4_with_ccc)); - if (sortbuf != sortbuf_preallocated) -diff --git a/lib/uninorm/uninorm-filter.c b/lib/uninorm/uninorm-filter.c -index 3d991cbf027b1cd4e589838d00865a5ff94905b9..2df1490281ada05bac1f0cf01ce3ef8883ea9920 100644 ---- a/lib/uninorm/uninorm-filter.c -+++ b/lib/uninorm/uninorm-filter.c -@@ -241,6 +241,11 @@ uninorm_filter_write (struct uninorm_filter *filter, ucs4_t uc_arg) - new_sortbuf = - (struct ucs4_with_ccc *) - malloc (2 * filter->sortbuf_allocated * sizeof (struct ucs4_with_ccc)); -+ if (new_sortbuf == NULL) { -+ errno = ENOMEM; -+ return -1; -+ } -+ - memcpy (new_sortbuf, filter->sortbuf, - sortbuf_count * sizeof (struct ucs4_with_ccc)); - if (filter->sortbuf != filter->sortbuf_preallocated) --- -1.7.7.6 - diff --git a/README.md b/README.md new file mode 100644 index 0000000..fd5c17f --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# libunistring + +This project conatains libunistring i18n testcases diff --git a/changelog b/changelog new file mode 100644 index 0000000..9109fb1 --- /dev/null +++ b/changelog @@ -0,0 +1,127 @@ +* Thu Jul 21 2022 Fedora Release Engineering - 1.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Sun Jan 23 2022 Daiki Ueno - 1.0-1 +- Update to upstream 1.0 release +- Switch to %%autosetup + +* Thu Jan 20 2022 Fedora Release Engineering - 0.9.10-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Thu Jul 22 2021 Fedora Release Engineering - 0.9.10-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Mon Jun 21 2021 Mike FABIAN - 0.9.10-13 +- Related rhbz#1938800: Fix CI tests and convert them to tmt + +* Mon Jun 14 2021 Mike FABIAN - 0.9.10-12 +- Fix memory leak in vasnprint. Resolves: rhbz#1938800 + (Backported from upstream: https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=4d288a80bf7ebe29334b9805cdcc70eacb6059c1) +- Fix spelling in license GPLV2+ -> GPLv2+ + +* Tue Jan 26 2021 Fedora Release Engineering - 0.9.10-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Jul 28 2020 Fedora Release Engineering - 0.9.10-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 13 2020 Tom Stellard - 0.9.10-8 +- Use make macros +- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro + +* Wed Jan 29 2020 Fedora Release Engineering - 0.9.10-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Thu Jul 25 2019 Fedora Release Engineering - 0.9.10-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri Feb 01 2019 Fedora Release Engineering - 0.9.10-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Tue Jul 31 2018 Florian Weimer - 0.9.10-4 +- Rebuild with fixed binutils + +* Sat Jul 28 2018 Igor Gnatenko - 0.9.10-3 +- Replace obsolete scriptlets + +* Fri Jul 13 2018 Fedora Release Engineering - 0.9.10-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Mon May 28 2018 Daiki Ueno - 0.9.10-1 +- Update to upstream 0.9.10 release + +* Thu Mar 01 2018 Daiki Ueno - 0.9.9-1 +- Update to upstream 0.9.9 release + +* Wed Feb 07 2018 Fedora Release Engineering - 0.9.8-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sat Feb 03 2018 Igor Gnatenko - 0.9.8-2 +- Switch to %%ldconfig_scriptlets + +* Sat Dec 2 2017 Daiki Ueno - 0.9.8-1 +- Update to 0.9.8 + +* Thu Aug 03 2017 Fedora Release Engineering - 0.9.7-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 0.9.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Feb 17 2017 Daiki Ueno - 0.9.7-1 +- Update to 0.9.7 +- Update license to "GPLv2+ or LGPLv2+" + +* Wed Feb 01 2017 Stephen Gallagher - 0.9.4-4 +- Add missing %%license macro + +* Thu Feb 04 2016 Fedora Release Engineering - 0.9.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Jun 17 2015 Fedora Release Engineering - 0.9.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Tue Sep 02 2014 Pádraig Brady - 0.9.4-1 +- Latest upstream + +* Sun Aug 17 2014 Fedora Release Engineering - 0.9.3-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 0.9.3-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Thu Aug 29 2013 Pádraig Brady 0.9.3-9 +- Adjust to avoid duplicate docs caused by %%doc macro changes in Fedora 20 + +* Sat Aug 03 2013 Fedora Release Engineering - 0.9.3-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Thu Feb 14 2013 Fedora Release Engineering - 0.9.3-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Thu Jul 19 2012 Fedora Release Engineering - 0.9.3-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Tue Jun 26 2012 Akira TAGOH - 0.9.3-5 +- Fix a typo in %%preun. (#737638) + +* Tue May 15 2012 Mikolaj Izdebski - 0.9.3-4 +- Add bundled(gnulib) provides + +* Fri Jan 13 2012 Fedora Release Engineering - 0.9.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Feb 08 2011 Fedora Release Engineering - 0.9.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Sun May 23 2010 Pádraig Brady 0.9.3-1 +- Update to 0.9.3 + +* Thu Nov 19 2009 Pádraig Brady 0.9.1-3 +- Remove glibc-devel and texinfo build deps + +* Thu Nov 19 2009 Pádraig Brady 0.9.1-2 +- Changes as per initial review by panemade@gmail.com + +* Tue Nov 17 2009 Pádraig Brady 0.9.1-1 +- Initial version diff --git a/libunistring.spec b/libunistring.spec index 80b433f..6174759 100644 --- a/libunistring.spec +++ b/libunistring.spec @@ -1,17 +1,14 @@ +# This spec file has been automatically updated +Version: 1.1 +Release: %{?autorelease}%{!?autorelease:1%{?dist}} Name: libunistring -Version: 0.9.3 -Release: 5%{?dist} -Group: System Environment/Libraries Summary: GNU Unicode string library -License: LGPLv3+ -Url: http://www.gnu.org/software/libunistring/ -Source0: http://ftp.gnu.org/gnu/libunistring/%{name}-%{version}.tar.gz -BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) -Requires(post): info -Requires(preun): info - -# Patches -Patch0001: 0001-Add-NULL-check-for-malloc-in-two-uninorm-files.patch +License: GPL-2.0-or-later OR LGPL-3.0-or-later +URL: https://www.gnu.org/software/libunistring/ +Source0: https://ftp.gnu.org/gnu/libunistring/%{name}-%{version}.tar.xz +BuildRequires: gcc +BuildRequires: make +Provides: bundled(gnulib) %description This portable C library implements Unicode string types in three flavours: @@ -21,66 +18,40 @@ This portable C library implements Unicode string types in three flavours: case folding and regular expressions). %package devel -Group: Development/Libraries Summary: GNU Unicode string library - development files -Requires: %{name} = %{version}-%{release} +Requires: %{name}%{?_isa} = %{version}-%{release} %description devel Development files for programs using libunistring. %prep -%setup -q - -%patch0001 -p1 +%autosetup %build %configure --disable-static --disable-rpath -make %{?_smp_mflags} +%make_build %install -rm -rf $RPM_BUILD_ROOT -make install DESTDIR=$RPM_BUILD_ROOT INSTALL="install -p" -rm -f $RPM_BUILD_ROOT/%{_infodir}/dir -rm -f $RPM_BUILD_ROOT/%{_libdir}/%{name}.la - -%clean -rm -rf $RPM_BUILD_ROOT +%make_install +rm -f $RPM_BUILD_ROOT%{_infodir}/dir +rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}.la +# Move staged docs so not picked up by %%doc in main package +mv $RPM_BUILD_ROOT%{_datadir}/doc/%{name} __doc %files -%defattr(-,root,root,-) +%license COPYING COPYING.LIB %doc AUTHORS NEWS README -%{_libdir}/%{name}.so.* +%{_libdir}/%{name}.so.5* %files devel -%defattr(-,root,root,-) %doc HACKING DEPENDENCIES THANKS ChangeLog -%doc %{_datadir}/doc/%{name}/*.html +%doc __doc/* %{_infodir}/%{name}.info* %{_libdir}/%{name}.so %{_includedir}/unistring %{_includedir}/*.h -%post -p /sbin/ldconfig - -%postun -p /sbin/ldconfig - -%post devel -/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || : - -%preun devel -if [ $1 = 0 ]; then - /sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir || : -fi +%ldconfig_scriptlets %changelog -* Wed Feb 29 2012 Stephen Gallagher - 0.9.3-5 -- Resolves: rhbz#732017 - Malloc without NULL check - -* Mon Sep 12 2011 Stephen Gallagher - 0.9.3-4 -- Resolves: rhbz#737592 - %%preun error while uninstalling libunistring-devel - -* Tue Aug 02 2011 Stephen Gallagher - 0.9.3-3 -- Imported from Fedora -- Resolves: rhbz#726463 - Add libunistring as a separate component/package - into RHEL - +%autochangelog diff --git a/plans/basic.fmf b/plans/basic.fmf new file mode 100644 index 0000000..c1627f9 --- /dev/null +++ b/plans/basic.fmf @@ -0,0 +1,5 @@ +summary: Basic smoke test +discover: + how: fmf +execute: + how: tmt diff --git a/sources b/sources index 2133805..ec47161 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (libunistring-0.9.3.tar.gz) = 351c0c94c4a31efbed932978ff8afae4defd7c28771d2d877b5ead5383a4f1b53200ece72b6908a9bafb7836775b2af3465e051226e43520ada2b8c583314d12 +SHA512 (libunistring-1.1.tar.xz) = 01a4267bbd301ea5c389b17ee918ae5b7d645da8b2c6c6f0f004ff2dead9f8e50cda2c6047358890a5fceadc8820ffc5154879193b9bb8970f3fb1fea1f411d6 diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 0000000..fd5c17f --- /dev/null +++ b/tests/README.md @@ -0,0 +1,3 @@ +# libunistring + +This project conatains libunistring i18n testcases diff --git a/tests/libunistring-tests/.gitignore b/tests/libunistring-tests/.gitignore new file mode 100644 index 0000000..3982139 --- /dev/null +++ b/tests/libunistring-tests/.gitignore @@ -0,0 +1,2 @@ +test +testfile.utf* diff --git a/tests/libunistring-tests/libunistring_test.py b/tests/libunistring-tests/libunistring_test.py new file mode 100644 index 0000000..f5ed94d --- /dev/null +++ b/tests/libunistring-tests/libunistring_test.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- + +import sys +import os +import subprocess +import logging + +""" +Creating a result.log file for saving logs +""" +logging.basicConfig(level=logging.INFO) + +logging.info("TEST RESULTS FOR FUNCTION\n\n") + +data = [] + +TESTTEXT = 'Viele Grüße\n日本語\n' + +def create_testfiles(): + dummy = subprocess.run("./test '" + TESTTEXT + "'", shell=True) + +def test(path='', encoding=''): + """ + Read the file at path using the specified encoding and check + whether the TESTTEXT can be read back correctly. + """ + logging.info('Testing file %s using encoding %s', path, encoding) + try: + with open(path, mode='rt', encoding=encoding) as testfile: + text = testfile.read() + logging.info('TESTTEXT="%s", text read ="%s"\n', TESTTEXT, text) + if text == TESTTEXT: + logging.info( + 'testfile: %s testencoding: %s Read test: SUCCESS', + path, encoding) + else: + logging.info( + 'testfile: %s testencoding: %s Read test: ERROR', + path, encoding) + except UnicodeError: + logging.error("UTF-8 Conversion Test: UnicodeError") + +if __name__ == "__main__": + if sys.byteorder == 'little': + endianness = 'le' + else: + endianness = 'be' + testfiles = { + 'testfile.utf-8': 'utf-8', + 'testfile.utf-16': 'utf-16' + endianness, + 'testfile.utf-32': 'utf-32' + endianness, + } + for testfile in testfiles: + if os.path.isfile(testfile): + os.unlink(testfile) + create_testfiles() + for testfile in testfiles: + test(path=testfile, encoding=testfiles[testfile]) diff --git a/tests/libunistring-tests/main.fmf b/tests/libunistring-tests/main.fmf new file mode 100644 index 0000000..124f572 --- /dev/null +++ b/tests/libunistring-tests/main.fmf @@ -0,0 +1,16 @@ +summary: Functional test for the gettext module +contact: Pooja Yadav +component: +- python +require: +- gcc +- make +- libunistring +- libunistring-devel +test: bash runtest.sh +framework: beakerlib +recommend: +- python +duration: 5m +extra-summary: /CoreOS/python/libunistring-tests +extra-task: /CoreOS/python/libunistring-tests diff --git a/tests/libunistring-tests/runtest.sh b/tests/libunistring-tests/runtest.sh new file mode 100755 index 0000000..7c38158 --- /dev/null +++ b/tests/libunistring-tests/runtest.sh @@ -0,0 +1,54 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /CoreOS/python/libunistring-tests +# Description: Functional tests for libunistring to check i18n features. +# Author: Pooja Yadav +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# 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 +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="libunistring" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "gcc test.c -lunistring -o test" + rlRun "TmpDir=\`mktemp -d\`" 0 "Creating tmp directory" + rlRun "cp libunistring_test.py test $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlLog "Run libunistring_test.py" + rlRun "python libunistring_test.py" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd + diff --git a/tests/libunistring-tests/test.c b/tests/libunistring-tests/test.c new file mode 100644 index 0000000..8186ed8 --- /dev/null +++ b/tests/libunistring-tests/test.c @@ -0,0 +1,38 @@ +#include +#include +#include +#include +#include +#include +#include + +int +main (int argc, char **argv) +{ + if (argc < 2) { + printf ("Usage: %s \n", argv[0]); + return 1; + } + + size_t len8, len16, len32; + + uint8_t *res8 = u8_conv_from_encoding ("UTF-8", iconveh_question_mark, argv[1], strlen (argv[1]), NULL, NULL, &len8); + uint16_t *res16 = u16_conv_from_encoding ("UTF-8", iconveh_question_mark, argv[1], strlen (argv[1]), NULL, NULL, &len16); + uint32_t *res32 = u32_conv_from_encoding ("UTF-8", iconveh_question_mark, argv[1], strlen (argv[1]), NULL, NULL, &len32); + + int fd = open ("testfile.utf-8", O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR); + for (int i = 0; i < len8; i++) + write (fd, &res8[i], sizeof (uint8_t)); + close (fd); + + fd = open ("testfile.utf-16", O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR); + for (int i = 0; i < len16; i++) + write (fd, &res16[i], sizeof (uint16_t)); + close (fd); + + fd = open ("testfile.utf-32", O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR); + for (int i = 0; i < len32; i++) + write (fd, &res32[i], sizeof (uint32_t)); + close (fd); +} +