Patchwork [1/1] perl-tests: convert to ptest

login
register
mail settings
Submitter Jesse Zhang
Date May 14, 2013, 7:57 a.m.
Message ID <52b7eb9a13f023eb8d5987ac14d79ef265be5d5a.1368517957.git.sen.zhang@windriver.com>
Download mbox | patch
Permalink /patch/49875/
State New
Headers show

Comments

Jesse Zhang - May 14, 2013, 7:57 a.m.
[YOCTO #4292]

Replace PERL_TEST_DIR with PTEST_PATH. Also add a run-ptest script and
rename "tests" with "ptest" in various places.

Signed-off-by: Jesse Zhang <sen.zhang@windriver.com>
---
 meta/recipes-devtools/perl/perl-5.14.3/run-ptest   |  2 ++
 .../perl/{perl-tests.inc => perl-ptest.inc}        | 30 +++++++++++-----------
 meta/recipes-devtools/perl/perl_5.14.3.bb          |  2 +-
 3 files changed, 18 insertions(+), 16 deletions(-)
 create mode 100644 meta/recipes-devtools/perl/perl-5.14.3/run-ptest
 rename meta/recipes-devtools/perl/{perl-tests.inc => perl-ptest.inc} (48%)
Björn Stenberg - May 14, 2013, 12:58 p.m.
Jesse Zhang wrote:
> +++ b/meta/recipes-devtools/perl/perl-5.14.3/run-ptest
> @@ -0,0 +1,2 @@
> +#!/bin/sh
> +cd t && ./TEST

run-ptest also needs to parse the output and reformat results into the standard ptest/automake format, such as "PASS: foo", "FAIL: foo" and "SKIP: foo".
Jesse Zhang - May 15, 2013, 7:39 a.m.
On 05/14/2013 08:58 PM, Björn Stenberg wrote:
> Jesse Zhang wrote:
>> +++ b/meta/recipes-devtools/perl/perl-5.14.3/run-ptest
>> @@ -0,0 +1,2 @@
>> +#!/bin/sh
>> +cd t && ./TEST
> 
> run-ptest also needs to parse the output and reformat results into the standard ptest/automake format, such as "PASS: foo", "FAIL: foo" and "SKIP: foo".

How verbose should the output be? The TEST script actually does its own
analyzing and summarizing of the test results. Do we want the summary
only or all the details? Do you want the detailed output converted to
ptest format too?

For example,

    # ./TEST 
    t/base/cond....................................................ok
    t/base/if......................................................ok
    t/base/lex.....................................................ok
    t/base/num.....................................................ok

    # ./TEST -v
    t/base/cond....................................................1..4
    ok 1
    ok 2
    ok 3
    ok 4
    ok
    t/base/if......................................................1..2
    ok 1
    ok 2
    ok
    t/base/lex.....................................................1..57
    #1	:x: eq :x:
    ok 1

The output from the actual test case conforms to the TAP format (not
sure about the top-level TEST). If you have an analysis tool, why not
support one more widely used format? I can't see much value in forcing
one format everywhere.

jesse
Björn Stenberg - May 15, 2013, 11:01 a.m.
Jesse Zhang wrote:
> How verbose should the output be? The TEST script actually does its own
> analyzing and summarizing of the test results. Do we want the summary
> only or all the details? Do you want the detailed output converted to
> ptest format too?
> 
> For example,
> 
>     # ./TEST 
>     t/base/cond....................................................ok
>     t/base/if......................................................ok
>     t/base/lex.....................................................ok
>     t/base/num.....................................................ok

I would say this higher-level form is OK. Just sed it into:

PASS: t/base/cond
PASS: t/base/if
PASS: t/base/lex
PASS: t/base/num

> The output from the actual test case conforms to the TAP format (not
> sure about the top-level TEST). If you have an analysis tool, why not
> support one more widely used format? I can't see much value in forcing
> one format everywhere.

There is no supplied analysis tool for ptest. Ptest is defined as producing a specific output format, to simplify parsing and analysis of the results however and wherever you want to do it.

The alternative would be to say that a specific analysis tool must be used which understands every different way of reporting results. And after going through a number of packages I can assure you are a lot of different ways to do that, some quite creative. It would mean that every package maintainer would also have to add the result format of his package into that analysis tool, likely creating a huge mess.

I prefer the current way of putting the responsibility on each package to produce a standard output format.

Patch

diff --git a/meta/recipes-devtools/perl/perl-5.14.3/run-ptest b/meta/recipes-devtools/perl/perl-5.14.3/run-ptest
new file mode 100644
index 0000000..28935e1
--- /dev/null
+++ b/meta/recipes-devtools/perl/perl-5.14.3/run-ptest
@@ -0,0 +1,2 @@ 
+#!/bin/sh
+cd t && ./TEST
diff --git a/meta/recipes-devtools/perl/perl-tests.inc b/meta/recipes-devtools/perl/perl-ptest.inc
similarity index 48%
rename from meta/recipes-devtools/perl/perl-tests.inc
rename to meta/recipes-devtools/perl/perl-ptest.inc
index b97b467..a3b19f8 100644
--- a/meta/recipes-devtools/perl/perl-tests.inc
+++ b/meta/recipes-devtools/perl/perl-ptest.inc
@@ -1,19 +1,20 @@ 
-PACKAGES += "perl-tests"
-PERL_TEST_DIR = "/opt/perl-tests"
+inherit ptest
 
-do_install_append () {
-	mkdir -p ${D}${PERL_TEST_DIR}
-	cp -pv TestInit.pm MANIFEST config.sh ${D}${PERL_TEST_DIR}/
+SRC_URI += "file://run-ptest"
 
-	tar -cf - t/ | ( cd ${D}${PERL_TEST_DIR} && tar -xf - )
-	ln -sf ${bindir}/perl ${D}${PERL_TEST_DIR}/t/
-	ln -sf ${libdir}/perl/${PV} ${D}${PERL_TEST_DIR}/lib
+do_install_ptest () {
+	mkdir -p ${D}${PTEST_PATH}
+	cp -pv TestInit.pm MANIFEST config.sh ${D}${PTEST_PATH}/
+
+	tar -cf - t/ | ( cd ${D}${PTEST_PATH} && tar -xf - )
+	ln -sf ${bindir}/perl ${D}${PTEST_PATH}/t/
+	ln -sf ${libdir}/perl/${PV} ${D}${PTEST_PATH}/lib
 
 	for dir in `find ext/ dist/ cpan/ -maxdepth 2 -type d -name t ` ; do
-	    tar -cf - $dir | ( cd ${D}${PERL_TEST_DIR} && tar -xf - )
+	    tar -cf - $dir | ( cd ${D}${PTEST_PATH} && tar -xf - )
 	done
 	for file in `find ext dist cpan -name \*.t -o -name \test.pl`;  do
-	    tar -cf - $file | ( cd ${D}${PERL_TEST_DIR} && tar -xf - )
+	    tar -cf - $file | ( cd ${D}${PTEST_PATH} && tar -xf - )
 	done
 
 	# Tweaks to make tests pass
@@ -27,10 +28,9 @@  do_install_append () {
 	cp -pv lib/auto/XS/APItest/APItest.so ${D}${libdir}/perl/${PV}/auto/XS/APItest/
 	mkdir -p ${D}${libdir}/perl/${PV}/auto/XS/Typemap
 	cp -pv lib/auto/XS/Typemap/Typemap.so ${D}${libdir}/perl/${PV}/auto/XS/Typemap/
-	cp -pv cpan/Digest-MD5/README ${D}${PERL_TEST_DIR}/cpan/Digest-MD5/
-	cp -pv cpan/Digest-MD5/MD5.xs ${D}${PERL_TEST_DIR}/cpan/Digest-MD5/
+	cp -pv cpan/Digest-MD5/README ${D}${PTEST_PATH}/cpan/Digest-MD5/
+	cp -pv cpan/Digest-MD5/MD5.xs ${D}${PTEST_PATH}/cpan/Digest-MD5/
 }
 
-FILES_${PN}-tests = "${PERL_TEST_DIR} \
-                     ${libdir}/perl/${PV}/AnyDBM_File.t"
-RDEPENDS_${PN}-tests = "${PN}-modules ${PN}-doc ${PN}-misc"
+FILES_${PN}-ptest += "${libdir}/perl/${PV}/AnyDBM_File.t"
+RDEPENDS_${PN}-ptest += "${PN}-modules ${PN}-doc ${PN}-misc"
diff --git a/meta/recipes-devtools/perl/perl_5.14.3.bb b/meta/recipes-devtools/perl/perl_5.14.3.bb
index 72efc63..9915042 100644
--- a/meta/recipes-devtools/perl/perl_5.14.3.bb
+++ b/meta/recipes-devtools/perl/perl_5.14.3.bb
@@ -324,7 +324,7 @@  RPROVIDES_perl-lib = "perl-lib"
 require perl-rdepends_${PV}.inc
 require perl-rprovides.inc
 require perl-rprovides_${PV}.inc
-include perl-tests.inc
+require perl-ptest.inc
 
 SSTATE_SCAN_FILES += "*.pm *.pod *.h *.pl *.sh"