public inbox for openembedded-core@lists.openembedded.org
 help / color / mirror / Atom feed
* [OE-core][PATCH v1] libsolv: add ptest support
@ 2026-02-02 22:36 Pratik Farkase
  2026-02-10 12:03 ` Ross Burton
  2026-02-10 18:49 ` [OE-core][PATCH v2] " Pratik Farkase
  0 siblings, 2 replies; 6+ messages in thread
From: Pratik Farkase @ 2026-02-02 22:36 UTC (permalink / raw)
  To: openembedded-core; +Cc: pratik.farkase, Pratik Farkase

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

diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
index b9616e9bf4..fbbd118255 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -36,6 +36,7 @@ PTESTS_FAST = "\
     libnl \
     libpcre \
     librsvg \
+    libsolv \
     libssh2 \
     libtest-fatal-perl \
     libtest-needs-perl \
diff --git a/meta/recipes-extended/libsolv/libsolv/run-ptest b/meta/recipes-extended/libsolv/libsolv/run-ptest
new file mode 100755
index 0000000000..1462aecd61
--- /dev/null
+++ b/meta/recipes-extended/libsolv/libsolv/run-ptest
@@ -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
diff --git a/meta/recipes-extended/libsolv/libsolv_0.7.35.bb b/meta/recipes-extended/libsolv/libsolv_0.7.35.bb
index ec74308bb5..53daa36106 100644
--- a/meta/recipes-extended/libsolv/libsolv_0.7.35.bb
+++ b/meta/recipes-extended/libsolv/libsolv_0.7.35.bb
@@ -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"
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-02-11 12:33 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-02 22:36 [OE-core][PATCH v1] libsolv: add ptest support Pratik Farkase
2026-02-10 12:03 ` Ross Burton
2026-02-10 19:05   ` Pratik Farkase
2026-02-10 18:49 ` [OE-core][PATCH v2] " Pratik Farkase
2026-02-11 12:10   ` Mathieu Dubois-Briand
2026-02-11 12:33     ` Pratik Farkase

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox