From c99734eec62ceee85e24408b580b1e104671e408 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Wed, 20 Mar 2024 13:51:34 +0100 Subject: [PATCH] Resolves: RHEL-25202 - Add tests --- .fmf/version | 1 + gating.yaml | 7 +++ perl-Tk.spec | 51 ++++++++++++++++++- plans/sanity.fmf | 5 ++ .../main.fmf | 23 +++++++++ .../test.sh | 40 +++++++++++++++ .../tk-test.pl | 6 +++ .../tk-test.sh | 6 +++ tests/upstream-tests.fmf | 16 ++++++ 9 files changed, 154 insertions(+), 1 deletion(-) create mode 100644 .fmf/version create mode 100644 gating.yaml create mode 100644 plans/sanity.fmf create mode 100644 tests/RHEL-25202-Enable-FreeType-support/main.fmf create mode 100755 tests/RHEL-25202-Enable-FreeType-support/test.sh create mode 100755 tests/RHEL-25202-Enable-FreeType-support/tk-test.pl create mode 100755 tests/RHEL-25202-Enable-FreeType-support/tk-test.sh create mode 100644 tests/upstream-tests.fmf 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/gating.yaml b/gating.yaml new file mode 100644 index 0000000..b9d19a4 --- /dev/null +++ b/gating.yaml @@ -0,0 +1,7 @@ +--- !Policy +product_versions: + - rhel-* +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional} + - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional} diff --git a/perl-Tk.spec b/perl-Tk.spec index e953c7f..1eb7597 100644 --- a/perl-Tk.spec +++ b/perl-Tk.spec @@ -105,6 +105,9 @@ Provides: perl(Tk) = %{version} %global __provides_exclude %__provides_exclude|perl\\(Tk::Widget\\)$ %global __provides_exclude %__provides_exclude|perl\\(Tk::Wm\\)$ +# Filter modules bundled for tests +%global __provides_exclude_from %{?__provides_exclude_from:%__provides_exclude_from|}^%{_libexecdir} +%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^perl\\(TkTest\\) %description This a re-port of a perl interface to Tk8.4. @@ -122,13 +125,28 @@ Requires: perl-Tk = %{version}-%{release} %description devel %{summary} +%package tests +Summary: Tests for %{name} +Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: perl-Test-Harness +# X11 tests: +Requires: xorg-x11-server-Xvfb +Requires: xorg-x11-xinit +Requires: google-noto-sans-fonts +Requires: font(:lang=en) +Requires: liberation-sans-fonts + +%description tests +Tests from %{name}. Execute them +with "%{_libexecdir}/%{name}/test". + %prep %setup -q -n Tk-%{version} find . -type f -exec %{__perl} -pi -e \ 's,^(#!)(/usr/local)?/bin/perl\b,$1%{__perl}, if ($. == 1)' {} \; chmod -x pod/Popup.pod Tixish/lib/Tk/balArrow.xbm # fix for widget as docs -%patch0 +%patch -P0 %{__perl} -pi -e \ 's,\@demopath\@,%{?_pkgdocdir}%{!?_pkgdocdir:%{_docdir}/%{name}-%{version}}/demos,g' demos/widget # debian patch @@ -136,6 +154,12 @@ chmod -x pod/Popup.pod Tixish/lib/Tk/balArrow.xbm # patch to fix #235666 ... seems like caching code is broken %patch -P2 -p1 -b .seg +# Help generators to recognize Perl scripts +for F in t/*.t; do + perl -i -MConfig -ple 'print $Config{startperl} if $. == 1 && !s{\A#!.*perl\b}{$Config{startperl}}' "$F" + chmod +x "$F" +done + %build %{__perl} Makefile.PL INSTALLDIRS=vendor X11LIB=%{_libdir} XFT=1 find . -name Makefile | xargs %{__perl} -pi -e 's/^\tLD_RUN_PATH=[^\s]+\s*/\t/' @@ -158,6 +182,28 @@ mkdir __demos cp -pR $RPM_BUILD_ROOT%{perl_vendorarch}/Tk/demos __demos find __demos/ -type f -exec chmod -x {} \; +# Install tests +mkdir -p %{buildroot}%{_libexecdir}/%{name} +cp -a t %{buildroot}%{_libexecdir}/%{name} +rm %{buildroot}%{_libexecdir}/%{name}/t/pod.t +mkdir -p %{buildroot}%{_libexecdir}/%{name}/demos/demos/images +cp demos/demos/images/cursor* %{buildroot}%{_libexecdir}/%{name}/demos/demos/images +perl -i -pe 's{-Mblib", "blib/script}{%{_bindir}}' %{buildroot}%{_libexecdir}/%{name}/t/exefiles.t +perl -i -ne 'print $_ unless m{gedi}' %{buildroot}%{_libexecdir}/%{name}/t/exefiles.t + +cat > %{buildroot}%{_libexecdir}/%{name}/test << 'EOF' +#!/bin/bash +set -e +# Some tests write into temporary files/directories +DIR=$(mktemp -d) +pushd "$DIR" +cp -a %{_libexecdir}/%{name}/* ./ +xvfb-run -d prove -I . -j "$(getconf _NPROCESSORS_ONLN)" +popd +rm -rf "$DIR" +EOF +chmod +x %{buildroot}%{_libexecdir}/%{name}/test + %files %doc Changes README README.linux ToDo pTk/*license* __demos/demos demos/widget COPYING %doc blib/man1/widget.1 @@ -180,10 +226,13 @@ find __demos/ -type f -exec chmod -x {} \; %{perl_vendorarch}/Tk/install.pm %{perl_vendorarch}/Tk/MakeDepend.pm +%files tests +%{_libexecdir}/%{name} %changelog * Wed Mar 13 2024 Jitka Plesnikova - 804.035-8 - Enable building with FreeType support +- Package tests - Resolves: RHEL-25202 * Mon Aug 09 2021 Mohan Boddu - 804.035-7 diff --git a/plans/sanity.fmf b/plans/sanity.fmf new file mode 100644 index 0000000..a72ded4 --- /dev/null +++ b/plans/sanity.fmf @@ -0,0 +1,5 @@ +summary: Sanity tests +discover: + how: fmf +execute: + how: tmt diff --git a/tests/RHEL-25202-Enable-FreeType-support/main.fmf b/tests/RHEL-25202-Enable-FreeType-support/main.fmf new file mode 100644 index 0000000..428222b --- /dev/null +++ b/tests/RHEL-25202-Enable-FreeType-support/main.fmf @@ -0,0 +1,23 @@ +summary: Verify if FreeType support is enabled +contact: Jitka Plesnikova +component: + - perl-Tk +require: + - liberation-sans-fonts + - google-noto-sans-fonts + - perl-interpreter + - perl-Tk + - tk + - xorg-x11-server-Xvfb +test: ./test.sh +framework: beakerlib +enabled: true +tag: + - rhel-buildroot + - TestCaseCopy + - Tier1 +tier: '1' +adjust: + - enabled: false + when: distro < rhel-8 or distro < centos-stream-8 + continue: false diff --git a/tests/RHEL-25202-Enable-FreeType-support/test.sh b/tests/RHEL-25202-Enable-FreeType-support/test.sh new file mode 100755 index 0000000..bcb9a76 --- /dev/null +++ b/tests/RHEL-25202-Enable-FreeType-support/test.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +SLEEP_TIME="5" + +rlJournalStart + rlPhaseStartSetup + rlRun "tmp=\$(mktemp -d)" 0 "Create tmp directory" + rlRun "cp tk-test.sh tk-test.pl $tmp" + rlRun "pushd $tmp" + + rlPhaseEnd + + rlPhaseStartTest + # Get output from tcl/Tk test script + rlVirtualXStart "tk1" + export DISPLAY="$( rlVirtualXGetDisplay \"tk1\" )" + rlRun "./tk-test.sh > tcl-output.log &" 0 "Running tcl/Tk test script'" + PS_TK1="$!" + rlRun "sleep $SLEEP_TIME" 0 "Sleeping for $SLEEP_TIME s" + rlRun "kill -9 $PS_TK1" 0,1 "Killing Tk" + rlVirtualXStop "tk1" + + # Get output from perl-Tk test script + rlVirtualXStart "tk2" + export DISPLAY="$( rlVirtualXGetDisplay \"tk2\" )" + rlRun "./tk-test.pl > perl-output.log &" 0 "Running perl-Tk test script'" + PS_TK2="$!" + rlRun "sleep $SLEEP_TIME" 0 "Sleeping for $SLEEP_TIME s" + rlRun "kill -9 $PS_TK2" 0,1 "Killing Tk" + rlVirtualXStop "tk2" + rlAssertNotDiffer "tcl-output.log" "perl-output.log" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $tmp" 0 "Remove tmp directory" + rlPhaseEnd +rlJournalEnd diff --git a/tests/RHEL-25202-Enable-FreeType-support/tk-test.pl b/tests/RHEL-25202-Enable-FreeType-support/tk-test.pl new file mode 100755 index 0000000..7b19be8 --- /dev/null +++ b/tests/RHEL-25202-Enable-FreeType-support/tk-test.pl @@ -0,0 +1,6 @@ +#!/usr/bin/perl +use Tk; +my $mw = MainWindow->new; +foreach my $font (sort $mw->fontFamilies) +{ print "$font\n"; } + diff --git a/tests/RHEL-25202-Enable-FreeType-support/tk-test.sh b/tests/RHEL-25202-Enable-FreeType-support/tk-test.sh new file mode 100755 index 0000000..e7f2491 --- /dev/null +++ b/tests/RHEL-25202-Enable-FreeType-support/tk-test.sh @@ -0,0 +1,6 @@ +#!/usr/bin/tclsh +package require Tk +foreach font [lsort [font families]] { +puts $font +} + diff --git a/tests/upstream-tests.fmf b/tests/upstream-tests.fmf new file mode 100644 index 0000000..8e38496 --- /dev/null +++ b/tests/upstream-tests.fmf @@ -0,0 +1,16 @@ +summary: Upstream tests +contact: Jitka Plesnikova +component: perl-Tk +require: + - perl-Tk-tests +test: /usr/libexec/perl-Tk/test +enabled: true +tag: + - rhel-buildroot + - TestCaseCopy + - Tier1 +tier: '1' +adjust: + - enabled: false + when: distro < rhel-9 or distro < centos-stream-9 + continue: false