From Fedora Project Wiki
No edit summary
No edit summary
 
(29 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{admon/important | Incomplete! | This page is incomplete, and liable to change significantly before being proposed!}}
<!-- All fields on this form are required to be accepted by FESCo.
<!-- All fields on this form are required to be accepted by FESCo.
  We also request that you maintain the same order of sections so that all of the feature pages are uniform.  -->
  We also request that you maintain the same order of sections so that all of the feature pages are uniform.  -->
 
<div class="messagebox" style="float: right; margin-left: 10px;">__TOC__</div>
<!-- The actual name of your feature page should look something like: Features/YourFeatureName.  This keeps all features in the same namespace -->
 
= Feature Name =
= Feature Name =
Fully Testable Perl.
Fully Testable Perl.
Line 12: Line 8:
<!-- A or sentence summarizing what this feature is and what it will do.  This information is used for the overall feature summary page for each release. -->
<!-- A or sentence summarizing what this feature is and what it will do.  This information is used for the overall feature summary page for each release. -->


Re-test Perl packages (primarily [[http://www.cpan.org|CPAN]]) by automatically providing the test suites of each distribution as their own "perl-Foo-tests" subpackage, and providing a framework to test.
Provide the ability to re-test installed [[Perl]] packages by automatically providing the test suites of each package in a "perl-Foo-tests" subpackage, and providing a framework to handle common testing operations.


== Owner ==
== Owner ==
Line 20: Line 16:


== Current status ==
== Current status ==
* Targeted release: [[Releases/{{FedoraVersion||next}} | {{FedoraVersion|long|next}} ]]  
* Targeted release: [[Releases/{{FedoraVersion||next}} | {{FedoraVersion|long|next}} ]]  
* Last updated: (DATE)
* Last updated: (DATE)
* Percentage of completion: XX%
 
{{progress_bar|10|width=65%}}


<!-- CHANGE THE "FedoraVersion" TEMPLATES ABOVE TO PLAIN NUMBERS WHEN YOU COMPLETE YOUR PAGE. -->
<!-- CHANGE THE "FedoraVersion" TEMPLATES ABOVE TO PLAIN NUMBERS WHEN YOU COMPLETE YOUR PAGE. -->


== Detailed Description ==
== Detailed Description ==
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->


Perl has a long history and culture of testing, which has resulted in a very high percentage of the packages on the CPAN (Comprehensive Perl Archive Network) containing significant test suites.  While these test suites are executed at build time, a large number of modern Perl distributions (e.g. Moose, DBIx::Class, Catalyst, etc) depend on a significant number of other dists, which may be owned by a different maintainer and updated independently.
Perl has a long history and culture of testing, which has resulted in a very high percentage of the packages on the CPAN (Comprehensive Perl Archive Network) containing significant test suites.  While these test suites are executed at build time, a large number of modern Perl packages (e.g. {{CPAN|Moose}}, {{CPAN|DBIx::Class}}, [[Catalyst]], etc) depend on a significant number of other packages, which may be owned by a different maintainer and updated independently.


That is, the tests results as executed at build are only valid so long as its environment (the other Perl dists the particular package may depend on) is not changed from the environment this package is built with.  Additionally, there are often tests which are available but disabled during %make check as they may cause a circular build dep or require resources not available under the buildsystem (network or $DISPLAY access, or test databases, etc).
That is, ''given that dependent packages may be updated independently, the test results are only valid so long as the environment in which they are run does not change from the set of packages the package is built and tested in.''


This feature proposes to automatically bundle the dists test suites into a -tests subpackage without requiring additional maintainer work (a la debuginfo), which can then be installed to provide the capability to retest functionality post installation.
Additionally, there are many reasons one or more tests may be disabled under the buildsystem:
 
* Network or $DISPLAY access is required; or some other operation not permitted / possible in the buildsystem is required.
* Including packages the test requires would cause a circular build dep loop.
* A highly specific test environment is needed, e.g. a database setup.
* Packages which cannot be included in Fedora (e.g. {{CPAN|DBD::DB2}}, {{CPAN|DBD::Oracle}}) are required to exercise functionality for testing.
 
This feature proposes to automatically bundle the package test suite into a -tests subpackage without requiring additional maintainer work (a la debuginfo), which can then be installed to provide the capability to test (or retest) functionality post installation.


== Benefit to Fedora ==
== Benefit to Fedora ==
Line 40: Line 44:
Being able to execute the tests of a Perl dist post-build will leverage existing code (the test suites) to allow the end user to perform sanity checks and rule out problems with the underlying code when tracking down bugs.   
Being able to execute the tests of a Perl dist post-build will leverage existing code (the test suites) to allow the end user to perform sanity checks and rule out problems with the underlying code when tracking down bugs.   


e.g. Let's say someone is using Catalyst (perl-Catalyst-Runtime) to run a website, and is in particular using Catalyst::Authentication::Store::DBIx::Class (perl-Catalyst-Plugin-Authentication-Store-DBIx-Class). A new release of DBIx::Class (perl-DBIx-Class) was just built and released, which introduced a subtle bug causing errors in Catalyst::Authentication::Store::DBIx::Class. While this is a contrived example, the value of being able to easily pull and execute the Catalyst::Authentication::Store::DBIx::Class test suite to "re-check" against the new environment (that is, the newer DBIx::Class than was available at build time)
The net benefit to Fedora is to create an environment where end users (support, programmers, etc) will be able to execute the test suites of the 900+ CPAN dists Fedora packages natively, to track down bugs, test functionality the buildsystem was unable to provide, or just validate their environment.
 
Having the test suite used to build the package under [[koji]] would allow someone to validate their set of installed Perl packages without having to move away from the Fedora Perl packages to, say, [[CPAN]] or [[CPANPLUS]].  It will:
 
* Make finding regressions between multiple packages owned by multiple maintainers easier.
* Provide the end user with the tools to test, debug and validate their environments with the same test suites originally used to build the modules.
* Leverage existing RPM functionality to create the -tests subpackages without needing any package maintainer interaction, just as -debuginfo packages are created today.
* Provide an additional source of documentation (e.g. {{CPAN|Moose::Role}} and {{CPAN|MooseX::Types::DateTime}} explicitly refers one to the test suite as the "best documentation").
 
=== Example ===


The net benefit to Fedora is to create an environment where end users (support, programmers, etc) will be able to execute the test suites of the 900+ CPAN dists Fedora packages natively, to track down bugs, test functionality the buildsystem was unable to provide, or just validate their environment.
For example, {{CPAN|Moose}} is a modern metaobject-based class framework for Perl 5.  It's been around for awhile, has a stable user API, and is extremely powerful.  It has a slew of dependencies, as well as extensions in the [http://cpan.uwinnipeg.ca/dist/MooseX/ MooseX::*] namespace.  Sometimes these extensions take advantage of the metaobject system -- those that do can be highly sensitive to backend changes in both Moose and {{CPAN|Class::MOP}}.  {{CPAN|MooseX::AttributeHelpers}} is one such extension -- providing alternate attribute metaclass objects for different data structures.  Indeed, Moose's build script explicitly checks for certain levels of modules it knows it will break.
 
Having the tests available for MooseX::AttributeHelpers would allow for regression testing after a {{Pkg|perl-Moose}} upgrade, on the end-user's system and without having to rebuild the package.


== Scope ==
== Scope ==
{{admon/tip|Details are evolving :-)|The exact details of implementation, e.g. where to put the test suites, how to execute them, and how to implement the RPM macros are still evolving; it is also expected to change based on upstream's feedback.  The general intent and purpose will remain the same, but the details will evolve as this feature is implemented.}}
<!-- What work do the developers have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
<!-- What work do the developers have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->


* work with the perl-qa mailing list for input on how to retain these tests, and potentially other issues which could be made "standard"
There are three main components to this feature.
* rpm-build macros: code up a macro akin to %debug_package to automatically create -tests subpackages for Perl dists.
 
* Create a test-framework: e.g. to test perl-Moose and all its deps, an end user could execute "perl-tests Moose" and step back.
=== Perl-QA ===
 
We should work with upstream for input on how to retain these tests in a coherent, consistent, usable form.  Upstream in this case would be the [http://qa.perl.org Perl QA Projects], specifically the [http://lists.cpan.org/showlist.cgi?name=perl-qa perl-qa mailing list].
 
Objectives:
 
* Determine the scope and details of any upstream effort to do this, including any "test-after-install" framework.
* Determine where to store the test suites; if upstream is willing to specific a "canonical" directory or if Fedora should implement our own.
 
=== RPM macros implementation ===
 
The model for this effort is the "behind the scenes" packaging of debugging information into -debuginfo subpackages. While it doesn't appear that we have any sort of generic hook to tie into at this point, there are a couple things that could be done.
 
# Work with upstream to take the %debug_package macro and reimplement it on top of a "generic" packaging hook.
# Overload the %debug_package macro to automatically create -tests subpackages for Perl dists.
 
The first would be cleaner, but would require upstream involvement.  Working proof-of-concept rpm macros overloading %debug_package have been created at [[Features/FullyTestablePerl/RpmMacros]].
 
The subpackage should contain any test suite, as well as [[META.yml]] (if available) for assisting any testing framework, etc.  It should not require any interaction with the packager, but may have certain aspects configurable via macro definitions (TBD), and should require any other perl module needed to execute the tests (e.g. {{CPAN|Test::More}}).
 
Objectives:
 
* Implement a transparent mechanism in rpm that will automatically detect the presence of a test suite and create a -tests subpackage.
 
=== Test Execution Framework ===
 
Create a test-framework: e.g. to test perl-Moose and all its deps, an end user could execute "perl-tests Moose" and step back.
 
Objectives:


* Test installed Perl packages on demand.
* Test dependency trees of Perl packages. (e.g. "test everything perl-Class-MOP depends on")
* Test recently updated packages (e.g. "test everything updated or installed in the last 2 days")
* Enable mass regression testing -- e.g. perl-Foo was updated; let's rerun the test suites and see if any other package's test suite now fails.


== Test Plan ==
== Test Plan ==
Line 65: Line 114:


-->
-->
No special hardware is required to test; testing each of the subcomponents follows:
=== Subpackage Generation ===
Testing the subpackage generation will simply require building a Perl package on a system with the right level of macros, etc, installed.
Proper subpackage generation can be verified by rebuilding a Perl package, and checking that the -tests subpackage:
# ...is generated and looks sane.
# ...contains the test suite and META.yml.
# ...requires anything needed to execute the test suite (e.g. Test::More, the main package).
# ...does not provide anything it shouldn't.
<pre>
[cweyl@zeus perl-Sub-Curry]$ rpmbuild -ba perl-Sub-Curry.spec
....<rpmbuild output snipped>....
[cweyl@zeus perl-Sub-Curry]$ ls noarch/
perl-Sub-Curry-0.8-1.fc8.noarch.rpm  perl-Sub-Curry-tests-0.8-1.fc8.noarch.rpm
</pre>
Note this works as we'd expect with arch-specific packages as well:
<pre>
[cweyl@zeus F-8]$ make x86_64
Building target platforms: x86_64
....<rpmbuild output snipped>....
[cweyl@zeus F-8]$ ls -l x86_64/
total 248
-rw-rw-r-- 1 cweyl cweyl 173312 2008-11-13 14:38 perl-Class-MOP-0.62-1.fc8.x86_64.rpm
-rw-rw-r-- 1 cweyl cweyl  25853 2008-11-13 14:38 perl-Class-MOP-debug-0.62-1.fc8.x86_64.rpm
-rw-rw-r-- 1 cweyl cweyl  47307 2008-11-13 14:38 perl-Class-MOP-tests-0.62-1.fc8.x86_64.rpm
</pre>
We can also examine the -tests rpm to ensure it matches what we want:
<pre>
[cweyl@zeus perl-Sub-Curry]$ rpmquery -pi noarch/perl-Sub-Curry-tests-0.8-1.fc8.noarch.rpm
Name        : perl-Sub-Curry-tests        Relocations: (not relocatable)
Version    : 0.8                              Vendor: (none)
Release    : 1.fc8                        Build Date: Wed 12 Nov 2008 11:32:46 PM PST
Install Date: (not installed)              Build Host: zeus
Group      : Development/Debug            Source RPM: perl-Sub-Curry-0.8-1.fc8.src.rpm
Size        : 4013                            License: GPL+ or Artistic
Packager    : Chris Weyl <cweyl@alumni.drew.edu>
URL        : http://search.cpan.org/dist/Sub-Curry
Summary    : Test suite for package perl-Sub-Curry
Description :
This package provides the test suite for package perl-Sub-Curry.
[cweyl@zeus perl-Sub-Curry]$ rpmls noarch/perl-Sub-Curry-tests-0.8-1.fc8.noarch.rpm
drwxr-xr-x  /usr/lib/perl5/tests
drwxr-xr-x  /usr/lib/perl5/tests/5.8.8
drwxr-xr-x  /usr/lib/perl5/tests/5.8.8/vendor_tests
drwxr-xr-x  /usr/lib/perl5/tests/5.8.8/vendor_tests/Sub-Curry
drwxr-xr-x  /usr/lib/perl5/tests/5.8.8/vendor_tests/Sub-Curry/META.yml
drwxr-xr-x  /usr/lib/perl5/tests/5.8.8/vendor_tests/Sub-Curry/t
-rw-r--r--  /usr/lib/perl5/tests/5.8.8/vendor_tests/Sub-Curry/t/01basic.t
-rw-r--r--  /usr/lib/perl5/tests/5.8.8/vendor_tests/Sub-Curry/t/02spices.t
</pre>
=== Testing Framework ===
TODO.


== User Experience ==
== User Experience ==
<!-- If this feature is noticeable by its target audience, how will their experiences change as a result?  Describe what they will see or notice. -->
<!-- If this feature is noticeable by its target audience, how will their experiences change as a result?  Describe what they will see or notice. -->
=== John Q. Fedoraite ===
The average end-user's experience would not change.  -tests subpackages would not be installed by default, and should not be pulled in by anything except an explicit 'yum install xxx-tests'.
=== Package Maintainers ===
Package maintainers could use this to validate that their updates do not break other Perl packages.  For example, the owner of {{Pkg|perl-SQL-Abstract}} wants to update to a newer version.  {{Pkg|perl-DBIx-Class}} depends on perl-SQL-Abstract, so before pushing the update, the maintainer uses the testing framework to find those packages that depend on perl-SQL-Abstract and to run their test suites.  If this new level of {{CPAN|SQL::Abstract}} breaks anything in perl-DBIx-Class, this will be discovered prior to pushing the new level.
=== Administrators, Developers, etc ===
Administrators and developers who use Fedora can use these packages and the testing framework to natively validate their installed environments.


== Dependencies ==
== Dependencies ==
<!-- What other packages (RPMs) depend on this package?  Are there changes outside the developers' control on which completion of this feature depends?  In other words, completion of another feature owned by someone else and might cause you to not be able to finish on time or that you would need to coordinate?  Other upstream projects like the kernel (if this is not a kernel feature)? -->
<!-- What other packages (RPMs) depend on this package?  Are there changes outside the developers' control on which completion of this feature depends?  In other words, completion of another feature owned by someone else and might cause you to not be able to finish on time or that you would need to coordinate?  Other upstream projects like the kernel (if this is not a kernel feature)? -->
Aside from the steps detailed under "Scope", above, there are no known additional dependencies.  As Perl packages are rebuilt, their -tests subpackage will be automatically generated without requiring any intervention by the package maintainer.


== Contingency Plan ==
== Contingency Plan ==
<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "None necessary, revert to previous release behaviour."  Or it might not.  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->
<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "None necessary, revert to previous release behaviour."  Or it might not.  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->
Failure of this feature to be ready for {{FedoraVersion|long|next}} only means that this feature will not be available.  Existing functionality will not be impaired.


== Documentation ==
== Documentation ==
<!-- Is there upstream documentation on this feature, or notes you have written yourself?  Link to that material here so other interested developers can get involved. -->
<!-- Is there upstream documentation on this feature, or notes you have written yourself?  Link to that material here so other interested developers can get involved. -->


No documentation, aside from this page, yet.


== Release Notes ==
== Release Notes ==
Line 83: Line 213:
<!-- The Fedora Release Notes inform end-users about what is new in the release.  Examples of past release notes are here: http://docs.fedoraproject.org/release-notes/ -->
<!-- The Fedora Release Notes inform end-users about what is new in the release.  Examples of past release notes are here: http://docs.fedoraproject.org/release-notes/ -->
<!-- The release notes also help users know how to deal with platform changes such as ABIs/APIs, configuration or data file formats, or upgrade concerns.  If there are any such changes involved in this feature, indicate them here.  You can also link to upstream documentation if it satisfies this need.  This information forms the basis of the release notes edited by the documentation team and shipped with the release. -->
<!-- The release notes also help users know how to deal with platform changes such as ABIs/APIs, configuration or data file formats, or upgrade concerns.  If there are any such changes involved in this feature, indicate them here.  You can also link to upstream documentation if it satisfies this need.  This information forms the basis of the release notes edited by the documentation team and shipped with the release. -->
TODO.


== Comments and Discussion ==
== Comments and Discussion ==


* See [[Talk:Features/FullyTestablePerl]]  <!-- This adds a link to the "discussion" tab associated with your page.  This provides the ability to have ongoing comments or conversation without bogging down the main feature page -->
Constructive feedback and criticism is welcome and appreciated :-)  Please use the talk page: [[Talk:Features/FullyTestablePerl]]   
 
<!-- This adds a link to the "discussion" tab associated with your page.  This provides the ability to have ongoing comments or conversation without bogging down the main feature page -->




----
----
 
[[Category:Perl]]
[[Category:FeaturePageIncomplete]]
[[Category:FeaturePageIncomplete]]
<!-- When your feature page is completed and ready for review -->
<!-- When your feature page is completed and ready for review -->

Latest revision as of 01:18, 22 November 2008

Feature Name

Fully Testable Perl.

Summary

Provide the ability to re-test installed Perl packages by automatically providing the test suites of each package in a "perl-Foo-tests" subpackage, and providing a framework to handle common testing operations.

Owner

Current status


Detailed Description

Perl has a long history and culture of testing, which has resulted in a very high percentage of the packages on the CPAN (Comprehensive Perl Archive Network) containing significant test suites. While these test suites are executed at build time, a large number of modern Perl packages (e.g. Moose, DBIx::Class, Catalyst, etc) depend on a significant number of other packages, which may be owned by a different maintainer and updated independently.

That is, given that dependent packages may be updated independently, the test results are only valid so long as the environment in which they are run does not change from the set of packages the package is built and tested in.

Additionally, there are many reasons one or more tests may be disabled under the buildsystem:

  • Network or $DISPLAY access is required; or some other operation not permitted / possible in the buildsystem is required.
  • Including packages the test requires would cause a circular build dep loop.
  • A highly specific test environment is needed, e.g. a database setup.
  • Packages which cannot be included in Fedora (e.g. DBD::DB2, DBD::Oracle) are required to exercise functionality for testing.

This feature proposes to automatically bundle the package test suite into a -tests subpackage without requiring additional maintainer work (a la debuginfo), which can then be installed to provide the capability to test (or retest) functionality post installation.

Benefit to Fedora

Being able to execute the tests of a Perl dist post-build will leverage existing code (the test suites) to allow the end user to perform sanity checks and rule out problems with the underlying code when tracking down bugs.

The net benefit to Fedora is to create an environment where end users (support, programmers, etc) will be able to execute the test suites of the 900+ CPAN dists Fedora packages natively, to track down bugs, test functionality the buildsystem was unable to provide, or just validate their environment.

Having the test suite used to build the package under koji would allow someone to validate their set of installed Perl packages without having to move away from the Fedora Perl packages to, say, CPAN or CPANPLUS. It will:

  • Make finding regressions between multiple packages owned by multiple maintainers easier.
  • Provide the end user with the tools to test, debug and validate their environments with the same test suites originally used to build the modules.
  • Leverage existing RPM functionality to create the -tests subpackages without needing any package maintainer interaction, just as -debuginfo packages are created today.
  • Provide an additional source of documentation (e.g. Moose::Role and MooseX::Types::DateTime explicitly refers one to the test suite as the "best documentation").

Example

For example, Moose is a modern metaobject-based class framework for Perl 5. It's been around for awhile, has a stable user API, and is extremely powerful. It has a slew of dependencies, as well as extensions in the MooseX::* namespace. Sometimes these extensions take advantage of the metaobject system -- those that do can be highly sensitive to backend changes in both Moose and Class::MOP. MooseX::AttributeHelpers is one such extension -- providing alternate attribute metaclass objects for different data structures. Indeed, Moose's build script explicitly checks for certain levels of modules it knows it will break.

Having the tests available for MooseX::AttributeHelpers would allow for regression testing after a perl-Moose upgrade, on the end-user's system and without having to rebuild the package.

Scope

Idea.png
Details are evolving :-)
The exact details of implementation, e.g. where to put the test suites, how to execute them, and how to implement the RPM macros are still evolving; it is also expected to change based on upstream's feedback. The general intent and purpose will remain the same, but the details will evolve as this feature is implemented.


There are three main components to this feature.

Perl-QA

We should work with upstream for input on how to retain these tests in a coherent, consistent, usable form. Upstream in this case would be the Perl QA Projects, specifically the perl-qa mailing list.

Objectives:

  • Determine the scope and details of any upstream effort to do this, including any "test-after-install" framework.
  • Determine where to store the test suites; if upstream is willing to specific a "canonical" directory or if Fedora should implement our own.

RPM macros implementation

The model for this effort is the "behind the scenes" packaging of debugging information into -debuginfo subpackages. While it doesn't appear that we have any sort of generic hook to tie into at this point, there are a couple things that could be done.

  1. Work with upstream to take the %debug_package macro and reimplement it on top of a "generic" packaging hook.
  2. Overload the %debug_package macro to automatically create -tests subpackages for Perl dists.

The first would be cleaner, but would require upstream involvement. Working proof-of-concept rpm macros overloading %debug_package have been created at Features/FullyTestablePerl/RpmMacros.

The subpackage should contain any test suite, as well as META.yml (if available) for assisting any testing framework, etc. It should not require any interaction with the packager, but may have certain aspects configurable via macro definitions (TBD), and should require any other perl module needed to execute the tests (e.g. Test::More).

Objectives:

  • Implement a transparent mechanism in rpm that will automatically detect the presence of a test suite and create a -tests subpackage.

Test Execution Framework

Create a test-framework: e.g. to test perl-Moose and all its deps, an end user could execute "perl-tests Moose" and step back.

Objectives:

  • Test installed Perl packages on demand.
  • Test dependency trees of Perl packages. (e.g. "test everything perl-Class-MOP depends on")
  • Test recently updated packages (e.g. "test everything updated or installed in the last 2 days")
  • Enable mass regression testing -- e.g. perl-Foo was updated; let's rerun the test suites and see if any other package's test suite now fails.

Test Plan

No special hardware is required to test; testing each of the subcomponents follows:

Subpackage Generation

Testing the subpackage generation will simply require building a Perl package on a system with the right level of macros, etc, installed.

Proper subpackage generation can be verified by rebuilding a Perl package, and checking that the -tests subpackage:

  1. ...is generated and looks sane.
  2. ...contains the test suite and META.yml.
  3. ...requires anything needed to execute the test suite (e.g. Test::More, the main package).
  4. ...does not provide anything it shouldn't.


[cweyl@zeus perl-Sub-Curry]$ rpmbuild -ba perl-Sub-Curry.spec 
....<rpmbuild output snipped>....
[cweyl@zeus perl-Sub-Curry]$ ls noarch/
perl-Sub-Curry-0.8-1.fc8.noarch.rpm  perl-Sub-Curry-tests-0.8-1.fc8.noarch.rpm

Note this works as we'd expect with arch-specific packages as well:

[cweyl@zeus F-8]$ make x86_64
Building target platforms: x86_64
....<rpmbuild output snipped>....
[cweyl@zeus F-8]$ ls -l x86_64/
total 248
-rw-rw-r-- 1 cweyl cweyl 173312 2008-11-13 14:38 perl-Class-MOP-0.62-1.fc8.x86_64.rpm
-rw-rw-r-- 1 cweyl cweyl  25853 2008-11-13 14:38 perl-Class-MOP-debug-0.62-1.fc8.x86_64.rpm
-rw-rw-r-- 1 cweyl cweyl  47307 2008-11-13 14:38 perl-Class-MOP-tests-0.62-1.fc8.x86_64.rpm

We can also examine the -tests rpm to ensure it matches what we want:

[cweyl@zeus perl-Sub-Curry]$ rpmquery -pi noarch/perl-Sub-Curry-tests-0.8-1.fc8.noarch.rpm 
Name        : perl-Sub-Curry-tests         Relocations: (not relocatable)
Version     : 0.8                               Vendor: (none)
Release     : 1.fc8                         Build Date: Wed 12 Nov 2008 11:32:46 PM PST
Install Date: (not installed)               Build Host: zeus
Group       : Development/Debug             Source RPM: perl-Sub-Curry-0.8-1.fc8.src.rpm
Size        : 4013                             License: GPL+ or Artistic
Packager    : Chris Weyl <cweyl@alumni.drew.edu>
URL         : http://search.cpan.org/dist/Sub-Curry
Summary     : Test suite for package perl-Sub-Curry
Description :
This package provides the test suite for package perl-Sub-Curry.
[cweyl@zeus perl-Sub-Curry]$ rpmls noarch/perl-Sub-Curry-tests-0.8-1.fc8.noarch.rpm 
drwxr-xr-x  /usr/lib/perl5/tests
drwxr-xr-x  /usr/lib/perl5/tests/5.8.8
drwxr-xr-x  /usr/lib/perl5/tests/5.8.8/vendor_tests
drwxr-xr-x  /usr/lib/perl5/tests/5.8.8/vendor_tests/Sub-Curry
drwxr-xr-x  /usr/lib/perl5/tests/5.8.8/vendor_tests/Sub-Curry/META.yml
drwxr-xr-x  /usr/lib/perl5/tests/5.8.8/vendor_tests/Sub-Curry/t
-rw-r--r--  /usr/lib/perl5/tests/5.8.8/vendor_tests/Sub-Curry/t/01basic.t
-rw-r--r--  /usr/lib/perl5/tests/5.8.8/vendor_tests/Sub-Curry/t/02spices.t

Testing Framework

TODO.

User Experience

John Q. Fedoraite

The average end-user's experience would not change. -tests subpackages would not be installed by default, and should not be pulled in by anything except an explicit 'yum install xxx-tests'.

Package Maintainers

Package maintainers could use this to validate that their updates do not break other Perl packages. For example, the owner of perl-SQL-Abstract wants to update to a newer version. perl-DBIx-Class depends on perl-SQL-Abstract, so before pushing the update, the maintainer uses the testing framework to find those packages that depend on perl-SQL-Abstract and to run their test suites. If this new level of SQL::Abstract breaks anything in perl-DBIx-Class, this will be discovered prior to pushing the new level.

Administrators, Developers, etc

Administrators and developers who use Fedora can use these packages and the testing framework to natively validate their installed environments.

Dependencies

Aside from the steps detailed under "Scope", above, there are no known additional dependencies. As Perl packages are rebuilt, their -tests subpackage will be automatically generated without requiring any intervention by the package maintainer.

Contingency Plan

Failure of this feature to be ready for Fedora 40 only means that this feature will not be available. Existing functionality will not be impaired.

Documentation

No documentation, aside from this page, yet.

Release Notes

TODO.

Comments and Discussion

Constructive feedback and criticism is welcome and appreciated :-) Please use the talk page: Talk:Features/FullyTestablePerl