Abe Timmerman > Test-Smoke-1.53 > FAQ


Annotate this POD


New  15
Open  4
Stalled  1
View/Report Bugs
Source   Latest Release: Test-Smoke-1.61_03


FAQ - Test::Smoke frequently asked questions


What is Test::Smoke?

Test::Smoke is the symbolic name for set of scripts and modules that try to run the perl core tests on as many configurations as possible and combine the results into an easy to read report.

The basic cycle looks like:

    foreach $config ( @configurations ) {
        make distclean
        ./Configure $config
        make test (and log failures)

Why is Test::Smoke?


Where is Test::Smoke?

On CPAN and http://search.cpan.org/dist/Test-Smoke

What are these configuration files about?

Test::Smoke uses two types of configuration files:


This is a file that uses a _config suffix and contains settings for the smokeperl.pl program and is created by configsmoke.pl.




The file is devided into sections separated by a line that starts with an equals-sign (=). Each line in a section is combined with all lines from all the other sections. The default build-configurations file perlcurrent.cfg constist of four (4) sections:

section 1 one (1) (blank) line
section 2 two (2) lines
section 3 seven (7) lines


  • with $ENV{PERLIO}=stdio (allways)


How do I create different smoke-configurations?

By specifying a diffent prefix to configsmoke.pl:

    $ perl configsmoke.pl -p mysmoke

This will create the smokeconfiguration mysmoke_config and a small shellscript mysmoke.sh (or mysmoke.cmd if you are on Windows).

There are three (3) special prefixes: smoke55x, smoke562 and smoke58x. These will set the default answers for configsmoke.pl to be appropriate for smoking the maintenance branches for these versions of perl.






    # Add a new two line section for -DPERL_COPY_ON_WRITE




Default Policy.sh

Since maintenence version 1.18.10, the default Policy.sh is generated from the policy-target sections in the buildconfigurations file. It is now possible to just add this three line section to your buildconfiguration file:


Your own Policy.sh

Some people use the posibility to handle site specific build environments from <builddir>/../Policy.sh. This excludes the use of the default Policy.sh. You will need to add the -DPERL_COPY_ON_WRITE flag to the ccflags='' line in your Policy.sh. After that you must add the policy-target section, as above, to your buildconfiguration file.

What are all the scripts in the smoke suite for?














This script prints a little status report for a smoke confifuration:

    $ ./smokestatus.pl -c smoke58x
    Checking status for configuration 'smoke58x' (5.8.x)
        4 out of 10 configurations finished in 3 hours 6 minutes.
        1 configuration showed failures (F).
        0 failures in the running configuration.
        6 configurations to finish, estimated completion in 4 hours 40 minutes
        Average smoke duration: 46 minutes 42 seconds.


This helps users on Windows to create the <builddir>/win32/smoke.mk makefile for a specific configuration in a unixy way.

How can I skip a step in smokeperl.pl?

smokeperl.pl takes arguments to skip some of the steps it takes:

--nofetch Do not sync the source-tree before smoking
--nomail Do not send the report out by mail
--noarchive Do not archive the report and logfile

smokeperl.pl will always do the equivalent of runsmoke.pl and generate the report.

After running configsmoke.pl you should have a small wrapper-script, that sets up the environment and calls smokeperl.pl. All arguments passed to this script will be passed to smokeperl.pl! Please see smokeperl.pl for details.

How do I smoke my patch?


Set up Test::Smoke


Create a build-configurations file


Configure Test::Smoke with configsmoke.pl

Now you need to configure Test::Smoke by running configsmoke.pl in your configs directory (optionally specifying a prefix).

    $ ../smoke/configsmoke.pl -p testpatch

You should be careful with the e-mail options and make sure you do not send the results to either <smokers-reports@perl.org> or <perl5-porters@perl.org>.

Create a patches-to-apply-file


    $ cat mypatch.inc
Start the smoke with the --pfile option
    $ ./testpatch.sh --pfile mypatch.inc

You can also configure Test::Smoke to always use a patches-to-apply-file during configsmoke.pl.

Can I interrupt a smoke run?



Can I still generate a report after an interrupted smoke?


    $ perl mailrpt.pl -c [configname]

How can I run continues smokes?


    #! /bin/sh
    cd "$basedir"
    versions="58x current"

    if test -f "$pidfile" ; then


    checkstop() {
        if test -f "$stpfile" ; then
            echo "`date`: Stopping on user request"
            rm -f "$stpfile"

    echo $$ > "$pidfile"
    while test 1 ; do
        touch "$pidfile"

        for smokever in $versions ; do
            nice $basedir/smoke$smokever.sh



Where do the reports go?

To the address configured in configsmoke.pl. The default is <smokers-reports@perl.org>.

There are several ways to monitor the reports send in:

Subscribe to the mailinglist

You can subscribe to that list by sending an empty message to <daily-build-reports-subscribe@perl.org>. You do not have to be subscribed to send reports!

The usenet mirror

The mailinglist also has a mirror on usenet: <news:nntp.perl.org/perl.daily-build.reports>

Posts to the newsgroup will also be mirrored on the mailinglist.

Google groups

The newsgroup is mirrored on Google groups: http://groups.google.com/group/perl.daily-build.reports

The usenet WWW archive

The usenet mirror also has an archive on the web: http://www.nntp.perl.org/group/perl.daily-build.reports

How do I investigate failures?


    $ cd <builddir>
    $ make distclean
    $ sh Configure -des -Dusedevel [other build options]
    $ make
    $ make test-prep
    $ cd t


    $ ./perl harness -v <pathto/failingtest>
Note for Win32


After that you can:

    S:\perl-current\win32>nmake -f smoke.mk
    S:\perl-current\win32>nmake -f smoke.mk test-prep










UTF-8 locale







$Id: FAQ 909 2005-09-10 11:59:47Z abeltje $


Copyright 2002-2003, Abe Timmerman <abeltje@cpan.org> All rights reserved.




syntax highlighting: