The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

FAQ - Test::Smoke frequently asked questions

DESCRIPTION

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:

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

Why is Test::Smoke?

The reports from Test::Smoke give a good picture of the current state of Perl development. We try to get as many of the supported platforms as possible.

Where is Test::Smoke?

On CPAN: http://search.cpan.org/authour/ABELTJE/Test-Smoke

What are these configuration files about?

Test::Smoke uses two types of configuration files:

smoke-configuration-file

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

This is basically a Data::Dumper::Dump() of a hash.

build-configurations-file

This file contains the information needed to assemble the list of perl configurations that will be used to build and test perl.

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
section 4 two (2) lines (and a policy indicator line)

This file wil yield 1 * 2 * 7 * 2 = 28 configurations. Test::Smoke will build perl in all of these 28 configurations and run the core test suite one (1), two (2) or three (3) times for each of those perls:

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

  • with $ENV{PERLIO}=perlio (unless -Uuseperlio)

  • with $ENV{PERL_UNICODE}="", $ENV{LC_ALL}=xx_YY.utf8 (if specified and !-Uuseperlio)

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 two (2) special prefixes: smoke56x and smoke58x. These will set the default answers for configsmoke.pl to be appropriate for smoking the maintenance releases for these versions of perl.

What are all the scripts in the smoke suite for?

smokeperl.pl

This is a wrapper script that goes through all the steps in the smoke process.

synctree.pl

Small wrapper around Test::Smoke::Syncer that can use the settings from the smoke-configuration file. It will bring the source-tree in sync.

patchtree.pl

Small wrapper around Test::Smoke::Patcher that can use the settings from the smoke-configuration file. It will apply the patches that are specified in the patches-to-be-applied file.

mktest.pl

This is the main script that runs Configure, make and make test for all configurations and log the results in <builddir>/mktest.out.

mkovz.pl

This script generates the report as <builddir>/mktest.rpt from <builddir>/mktest.out. It can also send the report, but mailrpt.pl is the preferred way.

mailrpt.pl

Small wrapper around Test::Smoke::Mailer that can use the settings from the smoke-configuration file. It will check if the report is already generated and do so if not (by calling mkovz.pl).

W32Configure.bat

Small wrapper around Test::Smoke::Util::Configure_win32() that can use some of the settings from the smoke-configuration file.

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

Can I interrupt a smoke run?

Yes, you can kill all the smoke related processes. Each stage is directly logged in <builddir>/mktest.out. (Can somebody provide some more insight here?)

Can I still generate a report after an interrupted smoke?

Yes, but some information might be missing (the compiler info).

    $ perl mailrpt.pl -c [configname]

COPYRIGHT

(c) 2002-2003, All rights reserved.

  * Abe Timmerman <abeltje@cpan.org>

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

See:

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.