@@ -36,6 +36,7 @@ PTESTS_FAST = "\
libnl \
libpcre \
librsvg \
+ libsolv \
libssh2 \
libtest-fatal-perl \
libtest-needs-perl \
new file mode 100755
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+cd test
+
+for t in allowuninstall alternative blacklist choicerules choose cleandeps \
+ cplxdeps distupgrade evrcmp excludefromweak favor focus forcebest \
+ lock lockstep multiversion namespace proof recommendations sat \
+ selection strictrepoprio strongrecommends targeted testcase weakdeps \
+ whatprovideswithdisabled yumobs; do
+
+ if [ -x ./runtestcases.sh ] && [ -d testcases/$t ]; then
+ ./runtestcases.sh ../tools/testsolv testcases/$t
+ if [ $? -eq 0 ]; then
+ echo "PASS: $t"
+ else
+ echo "FAIL: $t"
+ fi
+ else
+ echo "SKIP: $t"
+ fi
+done
@@ -10,13 +10,14 @@ DEPENDS = "expat zlib zstd"
SRC_URI = "git://github.com/openSUSE/libsolv.git;branch=master;protocol=https;tag=${PV} \
file://0001-utils-Conside-musl-when-wrapping-qsort_r.patch \
+ file://run-ptest \
"
SRCREV = "fb4b4340d46108cb365113e432642d6024886c7a"
UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
-inherit cmake
+inherit cmake ptest
PACKAGECONFIG ??= "${@bb.utils.contains('PACKAGE_CLASSES','package_rpm','rpm','',d)}"
PACKAGECONFIG[rpm] = "-DENABLE_RPMMD=ON -DENABLE_RPMDB=ON,,rpm"
@@ -29,3 +30,26 @@ FILES:${PN}-tools = "${bindir}/*"
FILES:${PN}ext = "${libdir}/${PN}ext.so.*"
BBCLASSEXTEND = "native nativesdk"
+
+do_compile_ptest() {
+ cmake_runcmake_build --target testsolv
+}
+
+do_install_ptest() {
+ install -d ${D}${PTEST_PATH}/tools
+ install -d ${D}${PTEST_PATH}/test
+
+ if [ -f ${B}/tools/testsolv ]; then
+ install -m 0755 ${B}/tools/testsolv ${D}${PTEST_PATH}/tools/
+ fi
+
+ if [ -f ${S}/test/runtestcases.sh ]; then
+ install -m 0755 ${S}/test/runtestcases.sh ${D}${PTEST_PATH}/test/
+ fi
+
+ if [ -d ${S}/test/testcases ]; then
+ cp -r ${S}/test/testcases ${D}${PTEST_PATH}/test/
+ fi
+}
+
+RDEPENDS:${PN}-ptest += "bash"
Add ptest support to enable automated testing of libsolv using ptest-runner. The implementation uses upstream's test infrastructure: testsolv binary, runtestcases.sh script, and testcase data. The test suite runs 28 test categories covering solver functionality, package dependencies, and repository handling. All 28 upstream tests pass successfully on qemux86-64: START: ptest-runner BEGIN: /usr/lib/libsolv/ptest conflict.t ....................................... Passed forcebest.t ...................................... Passed PASS: allowuninstall job.t ............................................ Passed learnt.t ......................................... Passed recommends.t ..................................... Passed requires.t ....................................... Passed strongrecommends.t ............................... Passed update.t ......................................... Passed yumobs.t ......................................... Passed PASS: alternative ptf.t ............................................ Passed retracted.t ...................................... Passed PASS: blacklist choice1.t ........................................ Passed choice1b.t ....................................... Passed choice2.t ........................................ Passed choice2b.t ....................................... Passed choice3.t ........................................ Passed choice3b.t ....................................... Passed choice4.t ........................................ Passed choice5.t ........................................ Passed choice6.t ........................................ Passed choice7.t ........................................ Passed PASS: choicerules default.t ........................................ Passed enhanced.t ....................................... Passed oldversion.t ..................................... Passed suggested.t ...................................... Passed versioned.t ...................................... Passed versioned2.t ..................................... Passed PASS: choose cleandeps_dup.t .................................. Passed cleandeps_in.t ................................... Passed cleandeps_up.t ................................... Passed cleandeps_up3.t .................................. Passed mistake.t ........................................ Passed PASS: cleandeps and.t ............................................ Passed andor.t .......................................... Passed if.t ............................................. Passed ifelse.t ......................................... Passed ifelse_rec.t ..................................... Passed or.t ............................................. Passed orand.t .......................................... Passed PASS: cplxdeps dup_allowuninstall.t ............................. Passed dup_multiversion1.t .............................. Passed dup_multiversion2.t .............................. Passed dup_multiversion3.t .............................. Passed dup_noarchchange.t ............................... Passed dup_orphan1.t .................................... Passed dup_orphan2.t .................................... Passed dup_orphan3.t .................................... Passed PASS: distupgrade caret.t .......................................... Passed testevr.t ........................................ Passed PASS: evrcmp excludefromweak-obsoletes.t ...................... Passed excludefromweak.t ................................ Passed PASS: excludefromweak recommends.t ..................................... Passed recommends2.t .................................... Passed requires.t ....................................... Passed single.t ......................................... Passed supplements.t .................................... Passed PASS: favor best.t ........................................... Passed installed.t ...................................... Passed new1.t ........................................... Passed new2.t ........................................... Passed normal.t ......................................... Passed PASS: focus forcebest_dup.t .................................. Passed forcebest_in.t ................................... Passed forcebest_up.t ................................... Passed PASS: forcebest best.t ........................................... Passed dup.t ............................................ Passed PASS: lock infarch_install_best.t ........................... Passed lockstep_install.t ............................... Passed lockstep_update.t ................................ Passed PASS: lockstep multiversion.t ................................... Passed update.t ......................................... Passed update2.t ........................................ Passed PASS: multiversion namespaceprovides.t .............................. Passed PASS: namespace pubg1.t .......................................... Passed pubg2.t .......................................... Passed PASS: proof recommended_conflicts.t .......................... Passed recommended_multirepo.t .......................... Passed recommended_oldversion.t ......................... Passed recommended_targeted.t ........................... Passed recommended_version.t ............................ Passed suggested_conflicts.t ............................ Passed suggested_multirepo.t ............................ Passed suggested_oldversion.t ........................... Passed suggested_targeted.t ............................. Passed suggested_version.t .............................. Passed PASS: recommendations assert.t ......................................... Passed mm-test.t ........................................ Passed reuse.t .......................................... Passed PASS: sat disable: unknown package 'E-1-1.src@available' disable: unknown package 'F-1-1.src@available' selection_canon_rpm.t ............................ Passed selection_filelist.t ............................. Passed selection_matchdeps.t ............................ Passed selection_matchsolvable.t ........................ Passed selection_name.t ................................. Passed selection_provides.t ............................. Passed PASS: selection strictrepoprio.t ................................. Passed PASS: strictrepoprio break.t .......................................... Passed disfavored.t ..................................... Passed strongr.t ........................................ Passed PASS: strongrecommends targeted_color.t ................................. Passed targeted_dup.t ................................... Passed targeted_up.t .................................... Passed PASS: targeted nested.t ......................................... Passed str2dep.t ........................................ Passed PASS: testcase supplements_implicitobsoleteusescolors.t ......... Passed PASS: weakdeps dup.t ............................................ Passed dup2.t ........................................... Passed forcebest_in.t ................................... Passed forcebest_up.t ................................... Passed PASS: whatprovideswithdisabled split.t .......................................... Passed split2.t ......................................... Passed PASS: yumobs DURATION: 7 END: /usr/lib/libsolv/ptest STOP: ptest-runner Note: runtestcases.sh requires bash as it uses bash-specific features. Change-Id: I408ed9786e2d97c48c08c7ceb43e7bcf91a754fd Signed-off-by: Pratik Farkase <pratik.farkase@est.tech> --- .../distro/include/ptest-packagelists.inc | 1 + .../libsolv/libsolv/run-ptest | 21 +++++++++++++++ .../libsolv/libsolv_0.7.35.bb | 26 ++++++++++++++++++- 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100755 meta/recipes-extended/libsolv/libsolv/run-ptest