head	1.2;
access;
symbols
	perseant-exfatfs-base-20250801:1.2
	perseant-exfatfs-base-20240630:1.2
	perseant-exfatfs:1.2.0.24
	perseant-exfatfs-base:1.2
	cjep_sun2x:1.2.0.22
	cjep_sun2x-base:1.2
	cjep_staticlib_x-base1:1.2
	cjep_staticlib_x:1.2.0.20
	cjep_staticlib_x-base:1.2
	phil-wifi-20200421:1.2
	phil-wifi-20200411:1.2
	phil-wifi-20200406:1.2
	pgoyette-compat-merge-20190127:1.2
	pgoyette-compat-20190127:1.2
	pgoyette-compat-20190118:1.2
	pgoyette-compat-1226:1.2
	pgoyette-compat-1126:1.2
	pgoyette-compat-1020:1.2
	pgoyette-compat-0930:1.2
	pgoyette-compat-0906:1.2
	pgoyette-compat-0728:1.2
	pgoyette-compat-0625:1.2
	pgoyette-compat-0521:1.2
	pgoyette-compat-0502:1.2
	pgoyette-compat-0422:1.2
	pgoyette-compat-0415:1.2
	pgoyette-compat-0407:1.2
	pgoyette-compat-0330:1.2
	pgoyette-compat-0322:1.2
	pgoyette-compat-0315:1.2
	pgoyette-compat:1.2.0.18
	pgoyette-compat-base:1.2
	prg-localcount2-base3:1.2
	prg-localcount2-base2:1.2
	prg-localcount2-base1:1.2
	prg-localcount2:1.2.0.16
	prg-localcount2-base:1.2
	pgoyette-localcount-20170426:1.2
	bouyer-socketcan-base1:1.2
	pgoyette-localcount-20170320:1.2
	bouyer-socketcan:1.2.0.14
	bouyer-socketcan-base:1.2
	pgoyette-localcount-20170107:1.2
	pgoyette-localcount-20161104:1.2
	localcount-20160914:1.2
	pgoyette-localcount-20160806:1.2
	pgoyette-localcount-20160726:1.2
	pgoyette-localcount:1.2.0.12
	pgoyette-localcount-base:1.2
	netbsd-5-2-3-RELEASE:1.1.1.1
	netbsd-5-1-5-RELEASE:1.1.1.1
	yamt-pagecache-base9:1.2
	yamt-pagecache-tag8:1.2
	tls-earlyentropy:1.2.0.8
	tls-earlyentropy-base:1.2
	riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.2
	riastradh-drm2-base3:1.2
	netbsd-5-2-2-RELEASE:1.1.1.1
	netbsd-5-1-4-RELEASE:1.1.1.1
	netbsd-5-2-1-RELEASE:1.1.1.1
	netbsd-5-1-3-RELEASE:1.1.1.1
	agc-symver:1.2.0.10
	agc-symver-base:1.2
	tls-maxphys-base:1.2
	yamt-pagecache-base8:1.2
	netbsd-5-2:1.1.1.1.0.6
	yamt-pagecache-base7:1.2
	netbsd-5-2-RELEASE:1.1.1.1
	netbsd-5-2-RC1:1.1.1.1
	yamt-pagecache-base6:1.2
	yamt-pagecache-base5:1.2
	yamt-pagecache-base4:1.2
	netbsd-5-1-2-RELEASE:1.1.1.1
	netbsd-5-1-1-RELEASE:1.1.1.1
	yamt-pagecache-base3:1.2
	yamt-pagecache-base2:1.2
	yamt-pagecache:1.2.0.6
	yamt-pagecache-base:1.2
	bouyer-quota2-nbase:1.2
	bouyer-quota2:1.2.0.4
	bouyer-quota2-base:1.2
	matt-nb5-mips64-premerge-20101231:1.1.1.1
	matt-nb5-pq3:1.1.1.1.0.16
	matt-nb5-pq3-base:1.1.1.1
	netbsd-5-1:1.1.1.1.0.14
	netbsd-5-1-RELEASE:1.1.1.1
	netbsd-5-1-RC4:1.1.1.1
	matt-nb5-mips64-k15:1.1.1.1
	netbsd-5-1-RC3:1.1.1.1
	netbsd-5-1-RC2:1.1.1.1
	netbsd-5-1-RC1:1.1.1.1
	netbsd-5-0-2-RELEASE:1.1.1.1
	matt-nb5-mips64-premerge-20091211:1.1.1.1
	matt-nb5-mips64-u2-k2-k4-k7-k8-k9:1.1.1.1
	matt-nb4-mips64-k7-u2a-k9b:1.1.1.1
	matt-nb5-mips64-u1-k1-k5:1.1.1.1
	matt-nb5-mips64:1.1.1.1.0.12
	netbsd-5-0-1-RELEASE:1.1.1.1
	jym-xensuspend-nbase:1.2
	netbsd-5-0:1.1.1.1.0.10
	netbsd-5-0-RELEASE:1.1.1.1
	netbsd-5-0-RC4:1.1.1.1
	netbsd-5-0-RC3:1.1.1.1
	netbsd-5-0-RC2:1.1.1.1
	jym-xensuspend:1.2.0.2
	jym-xensuspend-base:1.2
	netbsd-5-0-RC1:1.1.1.1
	netbsd-5:1.1.1.1.0.8
	netbsd-5-base:1.1.1.1
	matt-mips64-base2:1.1.1.1
	wrstuden-revivesa-base-3:1.1.1.1
	wrstuden-revivesa-base-2:1.1.1.1
	wrstuden-revivesa-base-1:1.1.1.1
	yamt-pf42-base4:1.1.1.1
	yamt-pf42-base3:1.1.1.1
	hpcarm-cleanup-nbase:1.1.1.1
	yamt-pf42:1.1.1.1.0.4
	yamt-pf42-base2:1.1.1.1
	yamt-pf42-base:1.1.1.1
	wrstuden-revivesa:1.1.1.1.0.2
	wrstuden-revivesa-base:1.1.1.1
	atf-0-5:1.1.1.1
	TNF:1.1.1;
locks; strict;
comment	@// @;


1.2
date	2009.01.19.07.08.16;	author jmmv;	state dead;
branches;
next	1.1;

1.1
date	2008.05.01.15.22.30;	author jmmv;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	2008.05.01.15.22.30;	author jmmv;	state Exp;
branches
	1.1.1.1.4.1;
next	;

1.1.1.1.4.1
date	2008.05.01.15.22.30;	author yamt;	state dead;
branches;
next	1.1.1.1.4.2;

1.1.1.1.4.2
date	2008.05.18.12.29.13;	author yamt;	state Exp;
branches;
next	;


desc
@@


1.2
log
@Remove ATF 0.5 from dist/atf and all of the reachover Makefiles used to
build it.  0.6 is going to be imported in external/bsd/atf, with all the
necessary Makefiles in that same hierarchy.
@
text
@//
// Automated Testing Framework (atf)
//
// Copyright (c) 2007, 2008 The NetBSD Foundation, Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
//    notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
//    notice, this list of conditions and the following disclaimer in the
//    documentation and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//

#if !defined(_ATF_CXX_MACROS_HPP_)
#define _ATF_CXX_MACROS_HPP_

#include <sstream>
#include <stdexcept>
#include <vector>

#include <atf-c++/tests.hpp>

#define ATF_TEST_CASE(name) \
    class atfu_tc_ ## name : public atf::tests::tc { \
        void head(void); \
        void body(void) const; \
    public: \
        atfu_tc_ ## name(void) : atf::tests::tc(#name) {} \
    };

#define ATF_TEST_CASE_WITH_CLEANUP(name) \
    class atfu_tc_ ## name : public atf::tests::tc { \
        void head(void); \
        void body(void) const; \
        void cleanup(void) const; \
    public: \
        atfu_tc_ ## name(void) : atf::tests::tc(#name) {} \
    };

#define ATF_TEST_CASE_NAME(name) atfu_tc_ ## name

#define ATF_TEST_CASE_HEAD(name) \
    void \
    atfu_tc_ ## name::head(void)

#define ATF_TEST_CASE_BODY(name) \
    void \
    atfu_tc_ ## name::body(void) \
        const

#define ATF_TEST_CASE_CLEANUP(name) \
    void \
    atfu_tc_ ## name::cleanup(void) \
        const

#define ATF_FAIL(reason) atf::tests::tc::fail(reason)

#define ATF_SKIP(reason) atf::tests::tc::skip(reason)

#define ATF_PASS() atf::tests::tc::pass()

#define ATF_CHECK(x) \
    do { \
        if (!(x)) { \
            std::ostringstream atfu_ss; \
            atfu_ss << "Line " << __LINE__ << ": " << #x << " not met"; \
            atf::tests::tc::fail(atfu_ss.str()); \
        } \
    } while (false)

#define ATF_CHECK_EQUAL(x, y) \
    do { \
        if ((x) != (y)) { \
            std::ostringstream atfu_ss; \
            atfu_ss << "Line " << __LINE__ << ": " << #x << " != " << #y \
                     << " (" << (x) << " != " << (y) << ")"; \
            atf::tests::tc::fail(atfu_ss.str()); \
        } \
    } while (false)

#define ATF_CHECK_THROW(x, e) \
    do { \
        try { \
            x; \
            std::ostringstream atfu_ss; \
            atfu_ss << "Line " << __LINE__ << ": " #x " did not throw " \
                        #e " as expected"; \
            atf::tests::tc::fail(atfu_ss.str()); \
        } catch (const e& atfu_eo) { \
        } catch (const std::exception& atfu_e) { \
            std::ostringstream atfu_ss; \
            atfu_ss << "Line " << __LINE__ << ": " #x " threw an " \
                        "unexpected error (not " #e "): " << atfu_e.what(); \
            atf::tests::tc::fail(atfu_ss.str()); \
        } catch (...) { \
            std::ostringstream atfu_ss; \
            atfu_ss << "Line " << __LINE__ << ": " #x " threw an " \
                        "unexpected error (not " #e ")"; \
            atf::tests::tc::fail(atfu_ss.str()); \
        } \
    } while (false)

#define ATF_INIT_TEST_CASES(tcs) \
    namespace atf { \
        namespace tests { \
            int run_tp(int, char* const*, \
                       void (*)(std::vector< atf::tests::tc * >&)); \
        } \
    } \
    \
    static void atfu_init_tcs(std::vector< atf::tests::tc * >&); \
    \
    int \
    main(int argc, char* const* argv) \
    { \
        return atf::tests::run_tp(argc, argv, atfu_init_tcs); \
    } \
    \
    static \
    void \
    atfu_init_tcs(std::vector< atf::tests::tc * >& tcs)

#define ATF_ADD_TEST_CASE(tcs, tcname) \
    do { \
        atf::tests::tc* tcptr = new atfu_tc_ ## tcname(); \
        (tcs).push_back(tcptr); \
    } while (0);

#endif // !defined(_ATF_CXX_MACROS_HPP_)
@


1.1
log
@Initial revision
@
text
@@


1.1.1.1
log
@Import ATF 0.5

Changes in this release:

* Clauses 3 and 4 of the BSD license used by the project were dropped.
  All the code is now under a 2-clause BSD license compatible with the
  GNU General Public License (GPL).

* Added a C-only binding so that binary test programs do not need to be
  tied to C++ at all.  This binding is now known as the atf-c library.

* Renamed the C++ binding to atf-c++ for consistency with the new atf-c.

* Renamed the POSIX shell binding to atf-sh for consistency with the new
  atf-c and atf-c++.

* Added a -w flag to test programs through which it is possible to specify
  the work directory to be used.  This was possible in prior releases by
  defining the workdir configuration variable (-v workdir=...), but was a
  conceptually incorrect mechanism.

* Test programs now preserve the execution order of test cases when they
  are given in the command line.  Even those mentioned more than once are
  executed multiple times to comply with the user's requests.
@
text
@@


1.1.1.1.4.1
log
@file macros.hpp was added on branch yamt-pf42 on 2008-05-18 12:29:12 +0000
@
text
@d1 145
@


1.1.1.1.4.2
log
@sync with head.
@
text
@a0 145
//
// Automated Testing Framework (atf)
//
// Copyright (c) 2007, 2008 The NetBSD Foundation, Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
//    notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
//    notice, this list of conditions and the following disclaimer in the
//    documentation and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
// CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
// IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
// IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//

#if !defined(_ATF_CXX_MACROS_HPP_)
#define _ATF_CXX_MACROS_HPP_

#include <sstream>
#include <stdexcept>
#include <vector>

#include <atf-c++/tests.hpp>

#define ATF_TEST_CASE(name) \
    class atfu_tc_ ## name : public atf::tests::tc { \
        void head(void); \
        void body(void) const; \
    public: \
        atfu_tc_ ## name(void) : atf::tests::tc(#name) {} \
    };

#define ATF_TEST_CASE_WITH_CLEANUP(name) \
    class atfu_tc_ ## name : public atf::tests::tc { \
        void head(void); \
        void body(void) const; \
        void cleanup(void) const; \
    public: \
        atfu_tc_ ## name(void) : atf::tests::tc(#name) {} \
    };

#define ATF_TEST_CASE_NAME(name) atfu_tc_ ## name

#define ATF_TEST_CASE_HEAD(name) \
    void \
    atfu_tc_ ## name::head(void)

#define ATF_TEST_CASE_BODY(name) \
    void \
    atfu_tc_ ## name::body(void) \
        const

#define ATF_TEST_CASE_CLEANUP(name) \
    void \
    atfu_tc_ ## name::cleanup(void) \
        const

#define ATF_FAIL(reason) atf::tests::tc::fail(reason)

#define ATF_SKIP(reason) atf::tests::tc::skip(reason)

#define ATF_PASS() atf::tests::tc::pass()

#define ATF_CHECK(x) \
    do { \
        if (!(x)) { \
            std::ostringstream atfu_ss; \
            atfu_ss << "Line " << __LINE__ << ": " << #x << " not met"; \
            atf::tests::tc::fail(atfu_ss.str()); \
        } \
    } while (false)

#define ATF_CHECK_EQUAL(x, y) \
    do { \
        if ((x) != (y)) { \
            std::ostringstream atfu_ss; \
            atfu_ss << "Line " << __LINE__ << ": " << #x << " != " << #y \
                     << " (" << (x) << " != " << (y) << ")"; \
            atf::tests::tc::fail(atfu_ss.str()); \
        } \
    } while (false)

#define ATF_CHECK_THROW(x, e) \
    do { \
        try { \
            x; \
            std::ostringstream atfu_ss; \
            atfu_ss << "Line " << __LINE__ << ": " #x " did not throw " \
                        #e " as expected"; \
            atf::tests::tc::fail(atfu_ss.str()); \
        } catch (const e& atfu_eo) { \
        } catch (const std::exception& atfu_e) { \
            std::ostringstream atfu_ss; \
            atfu_ss << "Line " << __LINE__ << ": " #x " threw an " \
                        "unexpected error (not " #e "): " << atfu_e.what(); \
            atf::tests::tc::fail(atfu_ss.str()); \
        } catch (...) { \
            std::ostringstream atfu_ss; \
            atfu_ss << "Line " << __LINE__ << ": " #x " threw an " \
                        "unexpected error (not " #e ")"; \
            atf::tests::tc::fail(atfu_ss.str()); \
        } \
    } while (false)

#define ATF_INIT_TEST_CASES(tcs) \
    namespace atf { \
        namespace tests { \
            int run_tp(int, char* const*, \
                       void (*)(std::vector< atf::tests::tc * >&)); \
        } \
    } \
    \
    static void atfu_init_tcs(std::vector< atf::tests::tc * >&); \
    \
    int \
    main(int argc, char* const* argv) \
    { \
        return atf::tests::run_tp(argc, argv, atfu_init_tcs); \
    } \
    \
    static \
    void \
    atfu_init_tcs(std::vector< atf::tests::tc * >& tcs)

#define ATF_ADD_TEST_CASE(tcs, tcname) \
    do { \
        atf::tests::tc* tcptr = new atfu_tc_ ## tcname(); \
        (tcs).push_back(tcptr); \
    } while (0);

#endif // !defined(_ATF_CXX_MACROS_HPP_)
@
