stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Martin Sebor (JIRA)" <>
Subject [jira] Commented: (STDCXX-683) implement notion of expected failures in the test suite
Date Thu, 20 Dec 2007 22:56:43 GMT


Martin Sebor commented on STDCXX-683:

Requirements on Markups

1. Location.

The markups must be in the form of human-readable and editable text stored in a location that
can be easily and intuitively associated with each component (currently, example, locale,
or test). One obvious location is the source code for each component itself. There, the markups
could take the form of comments that could be easily found by the test harness. Another convenient
location is a separate file with the same base name but a different suffix than the component
itself. Yet another possibility is storing all markups in a single text file and with the
name of the component as the key. The implementation should be such so as to make it easy
to switch from one location to the next if it turns out to be convenient.

2. Format.

The format of the markups must be easy to read and write and make it possible to easily express
precise constraints involving the operating system and its version, the compiler and its version,
the library configuration, and the expected status. It must be possible to set more than one
constraint for each component, and it must be possible for a single constraint to refer to
more than one platform or configuration.

One possible format is to use relational operators and boolean logic. For example, to refer
to XLC++ on AIX 5.3 and prior, the expression might look something like this: os==AIX
&& (os_major<5 || os_major==5 && os_minor<=3) && compiler==XLC
&& compiler_major==7 && compiler_minor==0 && compiler_micro==0 &&

Another possible format is to adopt a conveniton similar to the GNU cpu-vendor-os triple produced
by config.guess (an example of such a triple is i386-redhat-linux or sparc-sun-solaris2.9).
In our case, the GNU convention would need to be modified and extended to include the compiler
and the library configuration and might look something like this: cpu-vendor-os-compiler-configuration.
We could then use shell globbing to implement matching. For example, the following two patterns
would have to be used at the same time in order to refer to a 15D configuration of the library
build with XLC++ on AIX 5.3 and prior: *-ibm-aix5.[0-3]-xlc7.0.0.9-15D *-ibm-aix[1-4].*-xlc7.0.0.9-15D
The leading asterisk indicates no preference for the CPU component.

> implement notion of expected failures in the test suite
> -------------------------------------------------------
>                 Key: STDCXX-683
>                 URL:
>             Project: C++ Standard Library
>          Issue Type: New Feature
>          Components: Test Driver, Tests
>    Affects Versions: 4.2.0
>            Reporter: Martin Sebor
>            Assignee: Martin Sebor
>            Priority: Critical
>         Attachments: codes.html, xcodes.html
> Tests (or examples) that fail for known reasons that we haven't been able to deal with
should be distinguished from failures that haven't been analyzed yet. For example, an example
program that fails to compile on an older target platform because of a compiler bug that we
can't find a simple/elegant workaround should be flagged as such in the test results. Similarly,
a test that fails one or more assertions due to compiler or libc bugs on a specific platform
(or a set of platforms) that we are unable to work around should be reported as such.
> This is important in order to reduce the currently fairly large number of unexpected
failures and to be able to make changes without having to worry about regressions as much.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message