xz: Add ptest support

There are two types of cases: executables and POSIX shell scripts.
All test cases PASS.
Add xz-ptest to PTESTS_FAST because test duration less than 30s
on qemux86-64.

root@qemux86-64:~# ptest-runner xz
START: ptest-runner
2024-01-26T03:32
BEGIN: /usr/lib/xz/ptest
=== test_bcj_exact_size.c ===
PASS: test_exact_size
PASS: test_empty_block

(From OE-Core rev: 2704983f972e4fe1d4e0bee8491a07eb4f629346)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Chi Xu
2024-01-26 13:48:20 +08:00
committed by Richard Purdie
parent 82eb0c47e4
commit 4cb6ff8a57
3 changed files with 53 additions and 2 deletions

View File

@@ -77,6 +77,7 @@ PTESTS_FAST = "\
sed \
slang \
wayland \
xz \
zlib \
libexif \
"

View File

@@ -0,0 +1,26 @@
#!/bin/bash
ptestdir=$(dirname "$(readlink -f "$0")")
cd "$ptestdir"/tests || exit
# executables test cases
tests_exec=$(file $(ls test_*) | grep "ELF" | awk -F: '{print $1}')
for i in ${tests_exec}; do
./$i
done
# POSIX shell script test cases
export srcdir=${ptestdir}/tests
test_shell="test_files.sh test_scripts.sh test_compress.sh"
for j in ${test_shell}; do
if [ $j == "test_compress.sh" ]; then
./$j create_compress_files
else
./$j
fi
if [ $? -eq 0 ]; then
echo "PASS: $j"
else
echo "FAIL: $j"
fi
done

View File

@@ -24,13 +24,15 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=c8ea84ebe7b93cce676b54355dc6b2c0 \
file://lib/getopt.c;endline=23;md5=2069b0ee710572c03bb3114e4532cd84 \
"
SRC_URI = "https://tukaani.org/xz/xz-${PV}.tar.gz"
SRC_URI = "https://tukaani.org/xz/xz-${PV}.tar.gz \
${@bb.utils.contains('PTEST_ENABLED', '1', 'file://run-ptest', '', d)} \
"
SRC_URI[sha256sum] = "135c90b934aee8fbc0d467de87a05cb70d627da36abe518c357a873709e5b7d6"
UPSTREAM_CHECK_REGEX = "xz-(?P<pver>\d+(\.\d+)+)\.tar"
CACHED_CONFIGUREVARS += "gl_cv_posix_shell=/bin/sh"
inherit autotools gettext
inherit autotools gettext ptest
PACKAGES =+ "liblzma"
@@ -42,3 +44,25 @@ ALTERNATIVE:${PN} = "xz xzcat unxz \
lzma lzcat unlzma"
BBCLASSEXTEND = "native nativesdk"
RDEPENDS:${PN}-ptest += "bash file"
do_compile_ptest() {
oe_runmake check TESTS=
}
do_install_ptest () {
install -d ${D}${PTEST_PATH}/tests
find ${B}/tests/.libs -type f -executable -exec cp {} ${D}${PTEST_PATH}/tests \;
cp ${B}/config.h ${D}${PTEST_PATH}
for i in files xzgrep_expected_output test_files.sh test_scripts.sh test_compress.sh; do
cp -r ${S}/tests/$i ${D}${PTEST_PATH}/tests
done
mkdir -p ${D}${PTEST_PATH}/src/xz
ln -s ${bindir}/xz ${D}${PTEST_PATH}/src/xz/xz
mkdir -p ${D}${PTEST_PATH}/src/xzdec
ln -s ${bindir}/xzdec ${D}${PTEST_PATH}/src/xzdec/xzdec
mkdir -p ${D}${PTEST_PATH}/src/scripts
ln -s ${bindir}/xzdiff ${D}${PTEST_PATH}/src/scripts/xzdiff
ln -s ${bindir}/xzgrep ${D}${PTEST_PATH}/src/scripts/xzgrep
}