On Sun, Feb 19, 2023 at 3:11 PM Maciej Barć <x...@gentoo.org> wrote:
>
> What if developer configured an ebuild in a way that it downloads the
> test suite/files/data with USE=test?
>
> IMO it should be added to the GLEP that then TEST_SUITE_PRESENT should
> be true (exists).

This is what I was afraid of with the name; it's not only about a
testsuite being there or not, it's about trusting that:
 - There is a test suite.
 - It was run.
 - It passed, and passing is valuable.

Just existing is not sufficient, because we cannot gain any
information from an src_test that just downloaded but didn't run the
suite. That is not valuable information.

-A

>
> W dniu 19.02.2023 o 18:32, Michał Górny pisze:
> > Signed-off-by: Michał Górny <mgo...@gentoo.org>
> > ---
> >   glep-9999.ebuild | 132 +++++++++++++++++++++++++++++++++++++++++++++++
> >   1 file changed, 132 insertions(+)
> >   create mode 100644 glep-9999.ebuild
> >
> > diff --git a/glep-9999.ebuild b/glep-9999.ebuild
> > new file mode 100644
> > index 0000000..9ee18ca
> > --- /dev/null
> > +++ b/glep-9999.ebuild
> > @@ -0,0 +1,132 @@
> > +---
> > +GLEP: 9999
> > +Title: TEST_SUITE_PRESENT variable
> > +Author: Michał Górny <mgo...@gentoo.org>
> > +Type: Standards Track
> > +Status: Draft
> > +Version: 1
> > +Created: 2023-02-19
> > +Last-Modified: 2023-02-19
> > +Post-History: 2023-02-19
> > +Content-Type: text/x-rst
> > +---
> > +
> > +
> > +Abstract
> > +========
> > +
> > +A new ``TEST_SUITE_PRESENT`` variable is introduced to indicate whether
> > +the package features a test suite.  It can be set either by the ebuild,
> > +the eclass or the default ``src_test`` implementation, and afterwards
> > +included in the package manager logs.  This can aid in analyzing
> > +the results of automated package testing.
> > +
> > +
> > +Motivation
> > +==========
> > +
> > +The deployment of new Python targets in Gentoo currently involves
> > +testing of a large number of Gentoo packages against the said target.
> > +This is currently done manually for the most part.  It can be
> > +particularly time consuming if multiple individuals repeatedly test
> > +the same package only to determine that it remains incompatible with
> > +the new interpreter.
> > +
> > +The Python team wanted to explore the use of automation to aid this
> > +testing.  Unfortunately, this faces a major problem: for the vast
> > +of majority of packages, the incompatibilities with new Python versions
> > +do not exhibit during the installation and can only be detected through
> > +running the test suite.  The results of automated testing are therefore
> > +only meaningful if the package features a test phase.
> > +
> > +For packages using ``distutils-r1`` eclass, the presence of test suite
> > +can usually be easily determined through grepping for
> > +``distutils_enable_tests`` call or an explicit ``python_test()``
> > +function.  Even then, it seems sensible to work towards a more generic
> > +approach to tell whether a package had a test suite or not,
> > +and therefore whether a particular successful automated testing result
> > +means that the package actually passed tests or only confirmed that
> > +the Python files were copied successfully.
> > +
> > +An explicit indication whether a test suite was present can be presented
> > +by the package manager as part of logs, along with the result of running
> > +the test phase.  Afterwards, these logs can be used to determine which
> > +packages were actually tested.
> > +
> > +
> > +Specification
> > +=============
> > +
> > +A new ``TEST_SUITE_PRESENT`` variable is introduced that can be set
> > +by a ``src_test()`` implementation to indicate whether the package
> > +featured a test suite.  It can take three values:
> > +
> > +- ``yes`` indicating that a test suite was run
> > +- ``indeterminate`` indicating that it was not possible to clearly
> > +  determine whether the test suite was present or not (this could be
> > +  a case e.g. when a generic test command is run and it does not
> > +  indicate whether any tests were found)
> > +- ``no`` indicating that no test suite was run
> > +
> > +This variable *should* be set by eclasses defining the ``src_test()``
> > +phase.  If the package in question is using ``src_test()`` defined
> > +by an eclass that does not declare it explicitly, the PM must assume
> > +``indeterminate``.
> > +
> > +The variable *may* be set by an ebuild defining the ``src_test()``
> > +phase.  If the ebuild does not define it explicitly, the PM must assume
> > +``yes``.
> > +
> > +The default ``src_test()`` implementation as defined by the PMS sets
> > +the value to ``indeterminate`` if it runs a ``check`` or ``test``
> > +target, and to ``no`` if neither of the targets is found.
> > +
> > +
> > +Rationale
> > +=========
> > +
> > +The use of ternary flag makes it possible to clearly represent all three
> > +possible outcomes while navigating the defaults defined in the GLEP.
> > +The flag is set in ``src_test()``, so that runtime conditions (such
> > +as the results obtained from the actual test runner) can be used to
> > +determine the actual value.
> > +
> > +The defaults were defined based on the following assumptions:
> > +
> > +1. The presence of ``check`` target is common in autotools projects but
> > +   it does not guarantee that the target actually does anything, let
> > +   alone run a proper test suite.  However, the lack of any test target
> > +   clearly indicates that no tests were run.
> > +
> > +2. Eclass ``src_test`` implementations can be very generic and succeed
> > +   without actually performing any testing.  It is therefore reasonable
> > +   to default to ``indeterminate`` result when they are used,
> > +   and recommend them to explicitly override the variable.
> > +
> > +3. Explicit ``src_test`` declared in ebuild can generally be assumed
> > +   to actually run tests, with the exception of declaring the function
> > +   to prevent ``default_src_test`` from running.  It therefore makes
> > +   sense to default to ``yes`` but allow ebuilds to override the value
> > +   in the latter case.
> > +
> > +
> > +Backwards Compatibility
> > +=======================
> > +
> > +This GLEP is entirely optional.  The package managers not implementing
> > +it will treat the variable as a regular bash variable set by the test
> > +phase and ignore it.
> > +
> > +
> > +Reference Implementation
> > +========================
> > +
> > +TODO
> > +
> > +
> > +Copyright
> > +=========
> > +
> > +This work is licensed under the Creative Commons Attribution-ShareAlike 4.0
> > +International License.  To view a copy of this license, visit
> > +https://creativecommons.org/licenses/by-sa/4.0/.
>
> --
> Have a great day!
>
> ~ Maciej XGQT Barć
>
> x...@gentoo.org
> Gentoo Linux developer
> (dotnet, emacs, math, ml, nim, scheme, sci)
> https://wiki.gentoo.org/wiki/User:Xgqt
> 9B0A 4C5D 02A3 B43C 9D6F D6B1 14D7 4A1F 43A6 AC3C

Reply via email to