Openembedded Core Discussions
 help / color / mirror / Atom feed
From: Saul Wold <sgw@linux.intel.com>
To: Paul Barker <paul@paulbarker.me.uk>,
	 openembedded-core@lists.openembedded.org
Subject: Re: [PATCH] python3: Add ptest support
Date: Mon, 10 Mar 2014 11:15:37 -0700	[thread overview]
Message-ID: <531E0149.7010905@linux.intel.com> (raw)
In-Reply-To: <1394153667-4247-2-git-send-email-paul@paulbarker.me.uk>

On 03/06/2014 04:54 PM, Paul Barker wrote:
> A run-ptest script written in python is added which defines a new TestRunner
> subclass which prints test results in the required ptest format and then
> executes python's built-in testsuite using this new TestRunner subclass.
>
> The built-in testsuite is included in the python standard library and we ensure
> we have the complete library by adding ${PN}-modules and ${PN}-misc to the
> RDEPENDS for the ptest package. We also require libgcc for pthread support.
>
> Tested on qemux86. Several tests fail and many skip; further investigation
> should be done to check that the current status is acceptable. In addition, the
> testsuite causes an out-of-memory crash when qemu is configured with 256 MB of
> RAM. The testsuite completes without crashing with 1 GB RAM.
>
> Signed-off-by: Paul Barker <paul@paulbarker.me.uk>
> ---
>   meta/recipes-devtools/python/python3/run-ptest | 56 ++++++++++++++++++++++++++
>   meta/recipes-devtools/python/python3_3.3.3.bb  | 12 ++++++
>   2 files changed, 68 insertions(+)
>   create mode 100644 meta/recipes-devtools/python/python3/run-ptest
>
> diff --git a/meta/recipes-devtools/python/python3/run-ptest b/meta/recipes-devtools/python/python3/run-ptest
> new file mode 100644
> index 0000000..bd3ea11
> --- /dev/null
> +++ b/meta/recipes-devtools/python/python3/run-ptest
> @@ -0,0 +1,56 @@
> +#! /usr/bin/env python3
> +
> +from test import support
> +from test import regrtest
> +import unittest
> +import sys
> +
> +# Define a test result class which outputs results in the desired format.
> +class ptestResult(unittest.TestResult):
> +    def __init__(self, runner):
> +        super(ptestResult, self).__init__()
> +        self.runner = runner
> +
> +    def addError(self, test, err):
> +        super(ptestResult, self).addError(test, err)
> +        self.runner.write("ERROR: %s: %s\n" % (str(test), str(err[1])))
> +
> +    def addSuccess(self, test):
> +        super(ptestResult, self).addSuccess(test)
> +        self.runner.write("PASS: %s\n" % str(test))
> +
> +    def addFailure(self, test, err):
> +        super(ptestResult, self).addFailure(test, err)
> +        self.runner.write("FAIL: %s: %s\n" % (str(test), str(err[1])))
> +
> +    def addSkip(self, test, reason):
> +        super(ptestResult, self).addSkip(test, reason)
> +        self.runner.write("SKIP: %s: %s\n" % (str(test), str(reason)))
> +
> +    def addExpectedFailure(self, test, err):
> +        super(ptestResult, self).addExpectedFailure(test, err)
> +        self.runner.write("XFAIL: %s\n" % (str(test)))
> +
> +    def addUnexpectedSuccess(self, test):
> +        super(ptestResult, self).addUnexpectedSuccess(test)
> +        self.runner.write("XPASS: %s\n" % str(test))
> +
> +# Define a test runner which uses the above output class.
> +class ptestRunner:
> +    def __init__(self, stream=sys.stderr):
> +        self.stream = stream
> +
> +    def write(self, message):
> +        self.stream.write(message)
> +
> +    def run(self, test):
> +        result = ptestResult(self)
> +        test(result)
> +        return result
> +
> +# Replace the test runner in python's standard library 'test.support'.
> +support.BasicTestRunner = ptestRunner
> +
> +# Run the python regression test suite - the replacement test runner will be
> +# used.
> +regrtest.main()
> diff --git a/meta/recipes-devtools/python/python3_3.3.3.bb b/meta/recipes-devtools/python/python3_3.3.3.bb
> index b6f6def..e405a25 100644
> --- a/meta/recipes-devtools/python/python3_3.3.3.bb
> +++ b/meta/recipes-devtools/python/python3_3.3.3.bb
> @@ -35,6 +35,7 @@ SRC_URI += "\
>               file://sysroot-include-headers.patch \
>               file://unixccompiler.patch \
>               file://avoid-ncursesw-include-path.patch \
> +            file://run-ptest \
>              "
>   SRC_URI[md5sum] = "f3ebe34d4d8695bf889279b54673e10c"
>   SRC_URI[sha256sum] = "e526e9b612f623888364d30cc9f3dfc34dcef39065c713bdbcddf47df84d8dcb"
> @@ -209,6 +210,17 @@ FILES_${PN}-dbg += "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/.debug"
>   PACKAGES += "${PN}-misc"
>   FILES_${PN}-misc = "${libdir}/python${PYTHON_MAJMIN}"
>
> +#inherit ptest after "require python-${PYTHON_MAJMIN}-manifest.inc" so PACKAGES doesn't get overwritten
> +inherit ptest
> +

Seems like there is an issue with the multi-lib build.

ERROR: QA Issue: lib32-python3: Files/directories were installed but not 
shipped
   /usr/lib/python3
   /usr/lib/python3/ptest
NOTE: recipe lib32-pulseaudio-4.0-r0: task do_package_write_rpm: Started

Sau!


> +# This must come after inherit ptest for the override to take effect
> +do_install_ptest() {
> +    install -m 0755 -d ${D}/${libdir}/python3/ptest
> +    install -m 0755 ${S}/../run-ptest ${D}/${libdir}/${PN}/ptest
> +}
> +
> +RDEPENDS_${PN}-ptest = "${PN}-modules ${PN}-misc libgcc"
> +
>   # catch manpage
>   PACKAGES += "${PN}-man"
>   FILES_${PN}-man = "${datadir}/man"
>


  reply	other threads:[~2014-03-10 18:15 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-07  0:54 [PATCH] python3: Add ptest support Paul Barker
2014-03-07  0:54 ` Paul Barker
2014-03-10 18:15   ` Saul Wold [this message]
2014-03-11 19:23     ` Paul Barker
2014-03-11 21:27       ` Tudor Florea
2014-03-12 13:38         ` Paul Barker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=531E0149.7010905@linux.intel.com \
    --to=sgw@linux.intel.com \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=paul@paulbarker.me.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox