svn commit: r261897 - in head: contrib/atf contrib/atf/atf-c contrib/atf/atf-c++ contrib/atf/atf-c++/detail contrib/atf/atf-c/detail contrib/atf/atf-sh contrib/atf/doc lib/atf/libatf-c++ lib/atf/li...
Julio Merino
jmmv at FreeBSD.org
Fri Feb 14 19:33:22 UTC 2014
Author: jmmv
Date: Fri Feb 14 19:33:16 2014
New Revision: 261897
URL: http://svnweb.freebsd.org/changeset/base/261897
Log:
MFV: Import atf-0.20.
Added:
head/contrib/atf/atf-c++/detail/version_helper.cpp
- copied unchanged from r261889, vendor/atf/dist/atf-c++/detail/version_helper.cpp
head/contrib/atf/atf-c/detail/version_helper.c
- copied unchanged from r261889, vendor/atf/dist/atf-c/detail/version_helper.c
Deleted:
head/contrib/atf/atf-c++/detail/expand.cpp
head/contrib/atf/atf-c++/detail/expand.hpp
head/contrib/atf/atf-c++/detail/expand_test.cpp
head/contrib/atf/atf-c++/detail/parser.cpp
head/contrib/atf/atf-c++/detail/parser.hpp
head/contrib/atf/atf-c++/detail/parser_test.cpp
head/contrib/atf/atf-c++/detail/ui.cpp
head/contrib/atf/atf-c++/detail/ui.hpp
head/contrib/atf/atf-c++/detail/ui_test.cpp
head/contrib/atf/atf-c++/noncopyable.hpp
Modified:
head/contrib/atf/FREEBSD-Xlist
head/contrib/atf/Kyuafile
head/contrib/atf/NEWS
head/contrib/atf/README
head/contrib/atf/atf-c++/check.hpp
head/contrib/atf/atf-c++/config.cpp
head/contrib/atf/atf-c++/config_test.cpp
head/contrib/atf/atf-c++/detail/Kyuafile
head/contrib/atf/atf-c++/detail/application.cpp
head/contrib/atf/atf-c++/detail/application.hpp
head/contrib/atf/atf-c++/detail/application_test.cpp
head/contrib/atf/atf-c++/detail/exceptions.hpp
head/contrib/atf/atf-c++/detail/test_helpers.cpp
head/contrib/atf/atf-c++/detail/test_helpers.hpp
head/contrib/atf/atf-c++/macros_test.cpp
head/contrib/atf/atf-c++/pkg_config_test.sh
head/contrib/atf/atf-c++/tests.cpp
head/contrib/atf/atf-c++/tests.hpp
head/contrib/atf/atf-c++/tests_test.cpp
head/contrib/atf/atf-c/config.c
head/contrib/atf/atf-c/config_test.c
head/contrib/atf/atf-c/detail/test_helpers.c
head/contrib/atf/atf-c/detail/test_helpers.h
head/contrib/atf/atf-c/macros_test.c
head/contrib/atf/atf-c/pkg_config_test.sh
head/contrib/atf/atf-sh/atf-check.cpp
head/contrib/atf/atf-sh/atf-sh.cpp
head/contrib/atf/atf-sh/atf_check_test.sh
head/contrib/atf/atf-sh/integration_test.sh
head/contrib/atf/bconfig.h
head/contrib/atf/doc/atf-test-case.4
head/lib/atf/libatf-c++/Makefile
head/lib/atf/libatf-c++/tests/detail/Makefile
head/lib/atf/libatf-c/tests/detail/Makefile
head/tools/build/mk/OptionalObsoleteFiles.inc
Directory Properties:
head/contrib/atf/ (props changed)
Modified: head/contrib/atf/FREEBSD-Xlist
==============================================================================
--- head/contrib/atf/FREEBSD-Xlist Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/FREEBSD-Xlist Fri Feb 14 19:33:16 2014 (r261897)
@@ -18,3 +18,4 @@ configure*
doc/atf-formats.5
doc/atf.7.in
m4/
+tools/
Modified: head/contrib/atf/Kyuafile
==============================================================================
--- head/contrib/atf/Kyuafile Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/Kyuafile Fri Feb 14 19:33:16 2014 (r261897)
@@ -6,13 +6,3 @@ include("atf-c/Kyuafile")
include("atf-c++/Kyuafile")
include("atf-sh/Kyuafile")
include("test-programs/Kyuafile")
-
-if fs.exists("atf-config/Kyuafile") then
- include("atf-config/Kyuafile")
-end
-if fs.exists("atf-report/Kyuafile") then
- include("atf-report/Kyuafile")
-end
-if fs.exists("atf-run/Kyuafile") then
- include("atf-run/Kyuafile")
-end
Modified: head/contrib/atf/NEWS
==============================================================================
--- head/contrib/atf/NEWS Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/NEWS Fri Feb 14 19:33:16 2014 (r261897)
@@ -2,6 +2,51 @@ Major changes between releases
===========================================================================
+Changes in version 0.20
+***********************
+
+Experimental version released on February 7th, 2014.
+
+This is the first release without the code for the deprecated tools. If
+you require such code, please fetch a copy of the 0.19 release and extract
+the 'tools' directory for your own consumption.
+
+* Removed the deprecated tools. This includes atf-config, atf-report,
+ atf-run and atf-version.
+
+
+Changes in version 0.19
+***********************
+
+Experimental version released on February 7th, 2014.
+
+This is the last release to bundle the code for the deprecated tools.
+The next release will drop their code and will stop worrying about
+backwards compatibility between the ATF libraries and what the old tools
+may or may not support.
+
+If you still require the old tools for some reason, grab a copy of the
+'tools' directory now. The code in this directory is standalone and
+does not depend on any internal details of atf-c++ any longer.
+
+* Various fixes and improvements to support running as part of the FreeBSD
+ test suite.
+
+* Project hosting moved from Google Code (as a subproject of Kyua) to
+ GitHub (as a first-class project). The main reason for the change is
+ the suppression of binary downloads in Google Code on Jan 15th, 2014.
+ See https://github.com/jmmv/atf/
+
+* Removed builtin help from atf-sh(1) and atf-check(1) for simplicity
+ reasons. In other words, their -h option is gone.
+
+* Moved the code of the deprecated tools into a 'tools' directory and
+ completely decoupled their code from the internals of atf-c++. The
+ reason for this is to painlessly allow a third-party to maintain a
+ copy of these tools after we delete them because upcoming changes to
+ atf-c++ would break the stale tools.
+
+
Changes in version 0.18
***********************
Modified: head/contrib/atf/README
==============================================================================
--- head/contrib/atf/README Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/README Fri Feb 14 19:33:16 2014 (r261897)
@@ -5,21 +5,18 @@ Introductory information
Introduction
************
-The Automated Testing Framework (ATF) is a collection of libraries and
-utilities designed to ease unattended application testing in the hands of
-developers and end users of a specific piece of software.
-
-As regards developers, ATF provides the necessary means to easily create
-test suites composed of multiple test programs, which in turn are a
-collection of test cases. It also attempts to simplify the debugging of
-problems when these test cases detect an error by providing as much
-information as possible about the failure.
-
-As regards users, it simplifies the process of running the test suites and,
-in special, encourages end users to run them often: they do not need to
-have source trees around nor any other development tools installed to be
-able to certify that a given piece of software works on their machine as
-advertised.
+The Automated Testing Framework (ATF) is a collection of libraries to
+implement test programs in a variety of languages. At the moment, ATF
+offers C, C++ and POSIX shell bindings with which to implement tests.
+These bindings all offer a similar set of functionality and any test
+program written with them exposes a consistent user interface.
+
+ATF-based test programs rely on a separate runtime engine to execute them.
+The runtime engine is in charge of isolating the test programs from the
+rest of the system to ensure that their results are deterministic and that
+they cannot affect the running system. The runtime engine is also
+responsible for gathering the results of all tests and composing reports.
+The current runtime of choice is Kyua.
Other documents
Modified: head/contrib/atf/atf-c++/check.hpp
==============================================================================
--- head/contrib/atf/atf-c++/check.hpp Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/atf-c++/check.hpp Fri Feb 14 19:33:16 2014 (r261897)
@@ -39,8 +39,6 @@ extern "C" {
#include <string>
#include <vector>
-#include <atf-c++/noncopyable.hpp>
-
namespace atf {
namespace process {
@@ -60,7 +58,11 @@ namespace check {
//! of executing arbitrary command and manages files containing
//! its output.
//!
-class check_result : noncopyable {
+class check_result {
+ // Non-copyable.
+ check_result(const check_result&);
+ check_result& operator=(const check_result&);
+
//!
//! \brief Internal representation of a result.
//!
Modified: head/contrib/atf/atf-c++/config.cpp
==============================================================================
--- head/contrib/atf/atf-c++/config.cpp Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/atf-c++/config.cpp Fri Feb 14 19:33:16 2014 (r261897)
@@ -52,18 +52,14 @@ init_variables(void)
{
PRE(m_variables.empty());
- m_variables["atf_arch"] = atf_config_get("atf_arch");
m_variables["atf_build_cc"] = atf_config_get("atf_build_cc");
m_variables["atf_build_cflags"] = atf_config_get("atf_build_cflags");
m_variables["atf_build_cpp"] = atf_config_get("atf_build_cpp");
m_variables["atf_build_cppflags"] = atf_config_get("atf_build_cppflags");
m_variables["atf_build_cxx"] = atf_config_get("atf_build_cxx");
m_variables["atf_build_cxxflags"] = atf_config_get("atf_build_cxxflags");
- m_variables["atf_confdir"] = atf_config_get("atf_confdir");
m_variables["atf_includedir"] = atf_config_get("atf_includedir");
- m_variables["atf_libdir"] = atf_config_get("atf_libdir");
m_variables["atf_libexecdir"] = atf_config_get("atf_libexecdir");
- m_variables["atf_machine"] = atf_config_get("atf_machine");
m_variables["atf_pkgdatadir"] = atf_config_get("atf_pkgdatadir");
m_variables["atf_shell"] = atf_config_get("atf_shell");
m_variables["atf_workdir"] = atf_config_get("atf_workdir");
Modified: head/contrib/atf/atf-c++/config_test.cpp
==============================================================================
--- head/contrib/atf/atf-c++/config_test.cpp Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/atf-c++/config_test.cpp Fri Feb 14 19:33:16 2014 (r261897)
@@ -44,18 +44,14 @@ static struct varnames {
const char *uc;
bool can_be_empty;
} all_vars[] = {
- { "atf_arch", "ATF_ARCH", false },
{ "atf_build_cc", "ATF_BUILD_CC", false },
{ "atf_build_cflags", "ATF_BUILD_CFLAGS", true },
{ "atf_build_cpp", "ATF_BUILD_CPP", false },
{ "atf_build_cppflags", "ATF_BUILD_CPPFLAGS", true },
{ "atf_build_cxx", "ATF_BUILD_CXX", false },
{ "atf_build_cxxflags", "ATF_BUILD_CXXFLAGS", true },
- { "atf_confdir", "ATF_CONFDIR", false },
{ "atf_includedir", "ATF_INCLUDEDIR", false },
- { "atf_libdir", "ATF_LIBDIR", false },
{ "atf_libexecdir", "ATF_LIBEXECDIR", false },
- { "atf_machine", "ATF_MACHINE", false },
{ "atf_pkgdatadir", "ATF_PKGDATADIR", false },
{ "atf_shell", "ATF_SHELL", false },
{ "atf_workdir", "ATF_WORKDIR", false },
Modified: head/contrib/atf/atf-c++/detail/Kyuafile
==============================================================================
--- head/contrib/atf/atf-c++/detail/Kyuafile Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/atf-c++/detail/Kyuafile Fri Feb 14 19:33:16 2014 (r261897)
@@ -6,9 +6,7 @@ atf_test_program{name="application_test"
atf_test_program{name="auto_array_test"}
atf_test_program{name="env_test"}
atf_test_program{name="exceptions_test"}
-atf_test_program{name="expand_test"}
atf_test_program{name="fs_test"}
-atf_test_program{name="parser_test"}
+atf_test_program{name="process_test"}
atf_test_program{name="sanity_test"}
atf_test_program{name="text_test"}
-atf_test_program{name="ui_test"}
Modified: head/contrib/atf/atf-c++/detail/application.cpp
==============================================================================
--- head/contrib/atf/atf-c++/detail/application.cpp Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/atf-c++/detail/application.cpp Fri Feb 14 19:33:16 2014 (r261897)
@@ -47,7 +47,6 @@ extern "C" {
#include "application.hpp"
#include "sanity.hpp"
-#include "ui.hpp"
#if !defined(HAVE_VSNPRINTF_IN_STD)
namespace std {
@@ -106,17 +105,12 @@ impl::option::operator<(const impl::opti
}
impl::app::app(const std::string& description,
- const std::string& manpage,
- const std::string& global_manpage,
- const bool use_ui) :
- m_hflag(false),
+ const std::string& manpage) :
m_argc(-1),
m_argv(NULL),
m_prog_name(NULL),
m_description(description),
- m_manpage(manpage),
- m_global_manpage(global_manpage),
- m_use_ui(use_ui)
+ m_manpage(manpage)
{
}
@@ -133,11 +127,7 @@ impl::app::inited(void)
impl::app::options_set
impl::app::options(void)
{
- options_set opts = specific_options();
- if (m_use_ui) {
- opts.insert(option('h', "", "Shows this help message"));
- }
- return opts;
+ return specific_options();
}
std::string
@@ -187,11 +177,6 @@ impl::app::process_options(void)
::opterr = 0;
while ((ch = ::getopt(m_argc, m_argv, optstr.c_str())) != -1) {
switch (ch) {
- case 'h':
- INV(m_use_ui);
- m_hflag = true;
- break;
-
case ':':
throw usage_error("Option -%c requires an argument.",
::optopt);
@@ -214,51 +199,6 @@ impl::app::process_options(void)
#endif
}
-void
-impl::app::usage(std::ostream& os)
-{
- PRE(inited());
-
- std::string args = specific_args();
- if (!args.empty())
- args = " " + args;
- os << ui::format_text_with_tag(std::string(m_prog_name) + " [options]" +
- args, "Usage: ", false) << "\n\n"
- << ui::format_text(m_description) << "\n\n";
-
- options_set opts = options();
- INV(!opts.empty());
- os << "Available options:\n";
- size_t coldesc = 0;
- for (options_set::const_iterator iter = opts.begin();
- iter != opts.end(); iter++) {
- const option& opt = (*iter);
-
- if (opt.m_argument.length() + 1 > coldesc)
- coldesc = opt.m_argument.length() + 1;
- }
- for (options_set::const_iterator iter = opts.begin();
- iter != opts.end(); iter++) {
- const option& opt = (*iter);
-
- std::string tag = std::string(" -") + opt.m_character;
- if (opt.m_argument.empty())
- tag += " ";
- else
- tag += " " + opt.m_argument + " ";
- os << ui::format_text_with_tag(opt.m_description, tag, false,
- coldesc + 10) << "\n";
- }
- os << "\n";
-
- std::string gmp;
- if (!m_global_manpage.empty())
- gmp = " and " + m_global_manpage;
- os << ui::format_text("For more details please see " + m_manpage +
- gmp + ".")
- << "\n";
-}
-
int
impl::app::run(int argc, char* const* argv)
{
@@ -290,55 +230,22 @@ impl::app::run(int argc, char* const* ar
int errcode;
try {
- int oldargc = m_argc;
-
process_options();
-
- if (m_hflag) {
- INV(m_use_ui);
- if (oldargc != 2)
- throw usage_error("-h must be given alone.");
-
- usage(std::cout);
- errcode = EXIT_SUCCESS;
- } else
- errcode = main();
+ errcode = main();
} catch (const usage_error& e) {
- if (m_use_ui) {
- std::cerr << ui::format_error(m_prog_name, e.what()) << "\n"
- << ui::format_info(m_prog_name, std::string("Type `") +
- m_prog_name + " -h' for more details.")
- << "\n";
- } else {
- std::cerr << m_prog_name << ": ERROR: " << e.what() << "\n";
- std::cerr << m_prog_name << ": See " << m_manpage << " for usage "
- "details.\n";
- }
+ std::cerr << m_prog_name << ": ERROR: " << e.what() << "\n";
+ std::cerr << m_prog_name << ": See " << m_manpage << " for usage "
+ "details.\n";
errcode = EXIT_FAILURE;
} catch (const std::runtime_error& e) {
- if (m_use_ui) {
- std::cerr << ui::format_error(m_prog_name, std::string(e.what()))
- << "\n";
- } else {
- std::cerr << m_prog_name << ": ERROR: " << e.what() << "\n";
- }
+ std::cerr << m_prog_name << ": ERROR: " << e.what() << "\n";
errcode = EXIT_FAILURE;
} catch (const std::exception& e) {
- if (m_use_ui) {
- std::cerr << ui::format_error(m_prog_name, std::string("Caught "
- "unexpected error: ") + e.what() + "\n" + bug) << "\n";
- } else {
- std::cerr << m_prog_name << ": ERROR: Caught unexpected error: "
- << e.what() << "\n";
- }
+ std::cerr << m_prog_name << ": ERROR: Caught unexpected error: "
+ << e.what() << "\n";
errcode = EXIT_FAILURE;
} catch (...) {
- if (m_use_ui) {
- std::cerr << ui::format_error(m_prog_name, std::string("Caught "
- "unknown error\n") + bug) << "\n";
- } else {
- std::cerr << m_prog_name << ": ERROR: Caught unknown error\n";
- }
+ std::cerr << m_prog_name << ": ERROR: Caught unknown error\n";
errcode = EXIT_FAILURE;
}
return errcode;
Modified: head/contrib/atf/atf-c++/detail/application.hpp
==============================================================================
--- head/contrib/atf/atf-c++/detail/application.hpp Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/atf-c++/detail/application.hpp Fri Feb 14 19:33:16 2014 (r261897)
@@ -74,8 +74,6 @@ public:
// ------------------------------------------------------------------------
class app {
- bool m_hflag;
-
void process_options(void);
void usage(std::ostream&);
@@ -90,8 +88,7 @@ protected:
const char* m_argv0;
const char* m_prog_name;
std::string m_description;
- std::string m_manpage, m_global_manpage;
- const bool m_use_ui;
+ std::string m_manpage;
options_set options(void);
@@ -102,8 +99,7 @@ protected:
virtual int main(void) = 0;
public:
- app(const std::string&, const std::string&, const std::string&,
- bool = true);
+ app(const std::string&, const std::string&);
virtual ~app(void);
int run(int, char* const*);
Modified: head/contrib/atf/atf-c++/detail/application_test.cpp
==============================================================================
--- head/contrib/atf/atf-c++/detail/application_test.cpp Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/atf-c++/detail/application_test.cpp Fri Feb 14 19:33:16 2014 (r261897)
@@ -37,7 +37,7 @@ extern "C" {
class getopt_app : public atf::application::app {
public:
- getopt_app(void) : app("description", "manpage", "other") {}
+ getopt_app(void) : app("description", "manpage") {}
int main(void)
{
Modified: head/contrib/atf/atf-c++/detail/exceptions.hpp
==============================================================================
--- head/contrib/atf/atf-c++/detail/exceptions.hpp Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/atf-c++/detail/exceptions.hpp Fri Feb 14 19:33:16 2014 (r261897)
@@ -39,47 +39,6 @@ struct atf_error;
namespace atf {
-template< class T >
-class not_found_error :
- public std::runtime_error
-{
- T m_value;
-
-public:
- not_found_error(const std::string& message, const T& value) throw();
-
- virtual ~not_found_error(void) throw();
-
- const T& get_value(void) const throw();
-};
-
-template< class T >
-inline
-not_found_error< T >::not_found_error(const std::string& message,
- const T& value)
- throw() :
- std::runtime_error(message),
- m_value(value)
-{
-}
-
-template< class T >
-inline
-not_found_error< T >::~not_found_error(void)
- throw()
-{
-}
-
-template< class T >
-inline
-const T&
-not_found_error< T >::get_value(void)
- const
- throw()
-{
- return m_value;
-}
-
class system_error : public std::runtime_error {
int m_sys_err;
mutable std::string m_message;
Modified: head/contrib/atf/atf-c++/detail/test_helpers.cpp
==============================================================================
--- head/contrib/atf/atf-c++/detail/test_helpers.cpp Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/atf-c++/detail/test_helpers.cpp Fri Feb 14 19:33:16 2014 (r261897)
@@ -52,28 +52,24 @@ static const char* atf_c_tests_base = NU
#endif
#undef ATF_C_TESTS_BASE
-void
-build_check_cxx_o_aux(const atf::fs::path& sfile, const char* failmsg,
- const bool expect_pass)
+bool
+build_check_cxx_o(const char* sfile)
{
std::vector< std::string > optargs;
optargs.push_back("-I" + atf::config::get("atf_includedir"));
optargs.push_back("-Wall");
optargs.push_back("-Werror");
- const bool result = atf::check::build_cxx_o(
- sfile.str(), "test.o", atf::process::argv_array(optargs));
- if ((expect_pass && !result) || (!expect_pass && result))
- ATF_FAIL(failmsg);
+ return atf::check::build_cxx_o(sfile, "test.o",
+ atf::process::argv_array(optargs));
}
-void
-build_check_cxx_o(const atf::tests::tc& tc, const char* sfile,
- const char* failmsg, const bool expect_pass)
+bool
+build_check_cxx_o_srcdir(const atf::tests::tc& tc, const char* sfile)
{
const atf::fs::path sfilepath =
atf::fs::path(tc.get_config_var("srcdir")) / sfile;
- build_check_cxx_o_aux(sfilepath, failmsg, expect_pass);
+ return build_check_cxx_o(sfilepath.c_str());
}
void
@@ -86,7 +82,8 @@ header_check(const char *hdrname)
const std::string failmsg = std::string("Header check failed; ") +
hdrname + " is not self-contained";
- build_check_cxx_o_aux(atf::fs::path("test.cpp"), failmsg.c_str(), true);
+ if (!build_check_cxx_o("test.cpp"))
+ ATF_FAIL(failmsg);
}
atf::fs::path
@@ -104,37 +101,3 @@ get_process_helpers_path(const atf::test
return atf::fs::path(atf_c_tests_base) / helper;
}
}
-
-void
-test_helpers_detail::check_equal(const char* expected[],
- const string_vector& actual)
-{
- const char** expected_iter = expected;
- string_vector::const_iterator actual_iter = actual.begin();
-
- bool equals = true;
- while (equals && *expected_iter != NULL && actual_iter != actual.end()) {
- if (*expected_iter != *actual_iter) {
- equals = false;
- } else {
- expected_iter++;
- actual_iter++;
- }
- }
- if (equals && ((*expected_iter == NULL && actual_iter != actual.end()) ||
- (*expected_iter != NULL && actual_iter == actual.end())))
- equals = false;
-
- if (!equals) {
- std::cerr << "EXPECTED:\n";
- for (expected_iter = expected; *expected_iter != NULL; expected_iter++)
- std::cerr << *expected_iter << "\n";
-
- std::cerr << "ACTUAL:\n";
- for (actual_iter = actual.begin(); actual_iter != actual.end();
- actual_iter++)
- std::cerr << *actual_iter << "\n";
-
- ATF_FAIL("Expected results differ to actual values");
- }
-}
Modified: head/contrib/atf/atf-c++/detail/test_helpers.hpp
==============================================================================
--- head/contrib/atf/atf-c++/detail/test_helpers.hpp Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/atf-c++/detail/test_helpers.hpp Fri Feb 14 19:33:16 2014 (r261897)
@@ -40,9 +40,7 @@
#include "../macros.hpp"
#include "../tests.hpp"
-#include "parser.hpp"
#include "process.hpp"
-#include "text.hpp"
#define HEADER_TC(name, hdrname) \
ATF_TEST_CASE(name); \
@@ -64,18 +62,8 @@
} \
ATF_TEST_CASE_BODY(name) \
{ \
- build_check_cxx_o(*this, sfile, failmsg, true); \
- }
-
-#define BUILD_TC_FAIL(name, sfile, descr, failmsg) \
- ATF_TEST_CASE(name); \
- ATF_TEST_CASE_HEAD(name) \
- { \
- set_md_var("descr", descr); \
- } \
- ATF_TEST_CASE_BODY(name) \
- { \
- build_check_cxx_o(*this, sfile, failmsg, false); \
+ if (!build_check_cxx_o_srcdir(*this, sfile)) \
+ ATF_FAIL(failmsg); \
}
namespace atf {
@@ -85,7 +73,8 @@ class tc;
}
void header_check(const char*);
-void build_check_cxx_o(const atf::tests::tc&, const char*, const char*, bool);
+bool build_check_cxx_o(const char*);
+bool build_check_cxx_o_srcdir(const atf::tests::tc&, const char*);
atf::fs::path get_process_helpers_path(const atf::tests::tc&, bool);
struct run_h_tc_data {
@@ -120,45 +109,3 @@ run_h_tc(atf::tests::vars_map config = a
const atf::process::status s = c.wait();
ATF_REQUIRE(s.exited());
}
-
-namespace test_helpers_detail {
-
-typedef std::vector< std::string > string_vector;
-
-template< class Reader >
-std::pair< string_vector, string_vector >
-do_read(const char* input)
-{
- string_vector errors;
-
- std::istringstream is(input);
- Reader reader(is);
- try {
- reader.read();
- } catch (const atf::parser::parse_errors& pes) {
- for (std::vector< atf::parser::parse_error >::const_iterator iter =
- pes.begin(); iter != pes.end(); iter++)
- errors.push_back(*iter);
- } catch (const atf::parser::parse_error& pe) {
- ATF_FAIL("Raised a lonely parse error: " +
- atf::text::to_string(pe.first) + ": " + pe.second);
- }
-
- return std::make_pair(reader.m_calls, errors);
-}
-
-void check_equal(const char*[], const string_vector&);
-
-} // namespace test_helpers_detail
-
-template< class Reader >
-void
-do_parser_test(const char* input, const char* exp_calls[],
- const char* exp_errors[])
-{
- const std::pair< test_helpers_detail::string_vector,
- test_helpers_detail::string_vector >
- actual = test_helpers_detail::do_read< Reader >(input);
- test_helpers_detail::check_equal(exp_calls, actual.first);
- test_helpers_detail::check_equal(exp_errors, actual.second);
-}
Copied: head/contrib/atf/atf-c++/detail/version_helper.cpp (from r261889, vendor/atf/dist/atf-c++/detail/version_helper.cpp)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/contrib/atf/atf-c++/detail/version_helper.cpp Fri Feb 14 19:33:16 2014 (r261897, copy of r261889, vendor/atf/dist/atf-c++/detail/version_helper.cpp)
@@ -0,0 +1,41 @@
+// Copyright 2014 Google 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:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * 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.
+// * Neither the name of Google Inc. nor the names of its contributors
+// may be used to endorse or promote products derived from this software
+// without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT
+// OWNER 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(HAVE_CONFIG_H)
+#include "bconfig.h"
+#endif
+
+#include <cstdlib>
+#include <iostream>
+
+int
+main(void)
+{
+ std::cout << PACKAGE_VERSION << "\n";
+ return EXIT_SUCCESS;
+}
Modified: head/contrib/atf/atf-c++/macros_test.cpp
==============================================================================
--- head/contrib/atf/atf-c++/macros_test.cpp Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/atf-c++/macros_test.cpp Fri Feb 14 19:33:16 2014 (r261897)
@@ -763,11 +763,30 @@ BUILD_TC(use, "macros_hpp_test.cpp",
"do not cause syntax errors when used",
"Build of macros_hpp_test.cpp failed; some macros in "
"atf-c++/macros.hpp are broken");
-BUILD_TC_FAIL(detect_unused_tests, "unused_test.cpp",
- "Tests that defining an unused test case raises a warning (and thus "
- "an error)",
- "Build of unused_test.cpp passed; unused test cases are not properly "
- "detected");
+
+ATF_TEST_CASE(detect_unused_tests);
+ATF_TEST_CASE_HEAD(detect_unused_tests)
+{
+ set_md_var("descr",
+ "Tests that defining an unused test case raises a warning (and "
+ "thus an error)");
+}
+ATF_TEST_CASE_BODY(detect_unused_tests)
+{
+ const char* validate_compiler =
+ "class test_class { public: int dummy; };\n"
+ "#define define_unused static test_class unused\n"
+ "define_unused;\n";
+
+ atf::utils::create_file("compiler_test.cpp", validate_compiler);
+ if (build_check_cxx_o("compiler_test.cpp"))
+ expect_fail("Compiler does not raise a warning on an unused "
+ "static global variable declared by a macro");
+
+ if (build_check_cxx_o_srcdir(*this, "unused_test.cpp"))
+ ATF_FAIL("Build of unused_test.cpp passed; unused test cases are "
+ "not properly detected");
+}
// ------------------------------------------------------------------------
// Main.
Modified: head/contrib/atf/atf-c++/pkg_config_test.sh
==============================================================================
--- head/contrib/atf/atf-c++/pkg_config_test.sh Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/atf-c++/pkg_config_test.sh Fri Feb 14 19:33:16 2014 (r261897)
@@ -43,10 +43,8 @@ require_pc()
check_version()
{
- atf_check -s eq:0 -o save:stdout -e empty -x \
- "atf-version | head -n 1 | cut -d ' ' -f 4"
- ver1=$(cat stdout)
- echo "Version reported by atf-version: ${ver1}"
+ ver1=$($(atf_get_srcdir)/detail/version_helper)
+ echo "Version reported by builtin PACKAGE_VERSION: ${ver1}"
atf_check -s eq:0 -o save:stdout -e empty pkg-config --modversion "${1}"
ver2=$(cat stdout)
@@ -59,7 +57,7 @@ atf_test_case version
version_head()
{
atf_set "descr" "Checks that the version in atf-c++ is correct"
- atf_set "require.progs" "atf-version pkg-config"
+ atf_set "require.progs" "pkg-config"
}
version_body()
{
Modified: head/contrib/atf/atf-c++/tests.cpp
==============================================================================
--- head/contrib/atf/atf-c++/tests.cpp Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/atf-c++/tests.cpp Fri Feb 14 19:33:16 2014 (r261897)
@@ -55,7 +55,6 @@ extern "C" {
#include "atf-c/utils.h"
}
-#include "noncopyable.hpp"
#include "tests.hpp"
#include "detail/application.hpp"
@@ -63,7 +62,6 @@ extern "C" {
#include "detail/env.hpp"
#include "detail/exceptions.hpp"
#include "detail/fs.hpp"
-#include "detail/parser.hpp"
#include "detail/sanity.hpp"
#include "detail/text.hpp"
@@ -79,12 +77,7 @@ detail::atf_tp_writer::atf_tp_writer(std
m_os(os),
m_is_first(true)
{
- atf::parser::headers_map hm;
- atf::parser::attrs_map ct_attrs;
- ct_attrs["version"] = "1";
- hm["Content-Type"] = atf::parser::header_entry("Content-Type",
- "application/X-atf-tp", ct_attrs);
- atf::parser::write_headers(hm, m_os);
+ m_os << "Content-Type: application/X-atf-tp; version=\"1\"\n\n";
}
void
@@ -129,7 +122,13 @@ detail::match(const std::string& regexp,
static std::map< atf_tc_t*, impl::tc* > wraps;
static std::map< const atf_tc_t*, const impl::tc* > cwraps;
-struct impl::tc_impl : atf::noncopyable {
+struct impl::tc_impl {
+private:
+ // Non-copyable.
+ tc_impl(const tc_impl&);
+ tc_impl& operator=(const tc_impl&);
+
+public:
std::string m_ident;
atf_tc_t m_tc;
bool m_has_cleanup;
@@ -435,7 +434,7 @@ const char* tp::m_description =
"This is an independent atf test program.";
tp::tp(void (*add_tcs)(tc_vector&)) :
- app(m_description, "atf-test-program(1)", "atf(7)", false),
+ app(m_description, "atf-test-program(1)"),
m_lflag(false),
m_resfile("/dev/stdout"),
m_srcdir("."),
Modified: head/contrib/atf/atf-c++/tests.hpp
==============================================================================
--- head/contrib/atf/atf-c++/tests.hpp Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/atf-c++/tests.hpp Fri Feb 14 19:33:16 2014 (r261897)
@@ -38,8 +38,6 @@ extern "C" {
#include <atf-c/defs.h>
}
-#include <atf-c++/noncopyable.hpp>
-
namespace atf {
namespace tests {
@@ -74,7 +72,11 @@ typedef std::map< std::string, std::stri
struct tc_impl;
-class tc : noncopyable {
+class tc {
+ // Non-copyable.
+ tc(const tc&);
+ tc& operator=(const tc&);
+
std::auto_ptr< tc_impl > pimpl;
protected:
Modified: head/contrib/atf/atf-c++/tests_test.cpp
==============================================================================
--- head/contrib/atf/atf-c++/tests_test.cpp Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/atf-c++/tests_test.cpp Fri Feb 14 19:33:16 2014 (r261897)
@@ -40,8 +40,8 @@ extern "C" {
#include "macros.hpp"
-#include "detail/parser.hpp"
#include "detail/test_helpers.hpp"
+#include "detail/text.hpp"
// ------------------------------------------------------------------------
// Tests for the "atf_tp_writer" class.
Modified: head/contrib/atf/atf-c/config.c
==============================================================================
--- head/contrib/atf/atf-c/config.c Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/atf-c/config.c Fri Feb 14 19:33:16 2014 (r261897)
@@ -45,18 +45,14 @@ static struct var {
const char *value;
bool can_be_empty;
} vars[] = {
- { "atf_arch", ATF_ARCH, NULL, false, },
{ "atf_build_cc", ATF_BUILD_CC, NULL, false, },
{ "atf_build_cflags", ATF_BUILD_CFLAGS, NULL, true, },
{ "atf_build_cpp", ATF_BUILD_CPP, NULL, false, },
{ "atf_build_cppflags", ATF_BUILD_CPPFLAGS, NULL, true, },
{ "atf_build_cxx", ATF_BUILD_CXX, NULL, false, },
{ "atf_build_cxxflags", ATF_BUILD_CXXFLAGS, NULL, true, },
- { "atf_confdir", ATF_CONFDIR, NULL, false, },
{ "atf_includedir", ATF_INCLUDEDIR, NULL, false, },
- { "atf_libdir", ATF_LIBDIR, NULL, false, },
{ "atf_libexecdir", ATF_LIBEXECDIR, NULL, false, },
- { "atf_machine", ATF_MACHINE, NULL, false, },
{ "atf_pkgdatadir", ATF_PKGDATADIR, NULL, false, },
{ "atf_shell", ATF_SHELL, NULL, false, },
{ "atf_workdir", ATF_WORKDIR, NULL, false, },
Modified: head/contrib/atf/atf-c/config_test.c
==============================================================================
--- head/contrib/atf/atf-c/config_test.c Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/atf-c/config_test.c Fri Feb 14 19:33:16 2014 (r261897)
@@ -44,18 +44,14 @@ static struct varnames {
const char *uc;
bool can_be_empty;
} all_vars[] = {
- { "atf_arch", "ATF_ARCH", false },
{ "atf_build_cc", "ATF_BUILD_CC", false },
{ "atf_build_cflags", "ATF_BUILD_CFLAGS", true },
{ "atf_build_cpp", "ATF_BUILD_CPP", false },
{ "atf_build_cppflags", "ATF_BUILD_CPPFLAGS", true },
{ "atf_build_cxx", "ATF_BUILD_CXX", false },
{ "atf_build_cxxflags", "ATF_BUILD_CXXFLAGS", true },
- { "atf_confdir", "ATF_CONFDIR", false },
{ "atf_includedir", "ATF_INCLUDEDIR", false },
- { "atf_libdir", "ATF_LIBDIR", false },
{ "atf_libexecdir", "ATF_LIBEXECDIR", false },
- { "atf_machine", "ATF_MACHINE", false },
{ "atf_pkgdatadir", "ATF_PKGDATADIR", false },
{ "atf_shell", "ATF_SHELL", false },
{ "atf_workdir", "ATF_WORKDIR", false },
Modified: head/contrib/atf/atf-c/detail/test_helpers.c
==============================================================================
--- head/contrib/atf/atf-c/detail/test_helpers.c Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/atf-c/detail/test_helpers.c Fri Feb 14 19:33:16 2014 (r261897)
@@ -43,10 +43,8 @@
#include "process.h"
#include "test_helpers.h"
-static
-void
-build_check_c_o_aux(const char *path, const char *failmsg,
- const bool expect_pass)
+bool
+build_check_c_o(const char *path)
{
bool success;
atf_dynstr_t iflag;
@@ -63,20 +61,19 @@ build_check_c_o_aux(const char *path, co
atf_dynstr_fini(&iflag);
- if ((expect_pass && !success) || (!expect_pass && success))
- atf_tc_fail("%s", failmsg);
+ return success;
}
-void
-build_check_c_o(const atf_tc_t *tc, const char *sfile, const char *failmsg,
- const bool expect_pass)
+bool
+build_check_c_o_srcdir(const atf_tc_t *tc, const char *sfile)
{
atf_fs_path_t path;
RE(atf_fs_path_init_fmt(&path, "%s/%s",
atf_tc_get_config_var(tc, "srcdir"), sfile));
- build_check_c_o_aux(atf_fs_path_cstring(&path), failmsg, expect_pass);
+ const bool result = build_check_c_o(atf_fs_path_cstring(&path));
atf_fs_path_fini(&path);
+ return result;
}
void
@@ -93,7 +90,8 @@ header_check(const char *hdrname)
snprintf(failmsg, sizeof(failmsg),
"Header check failed; %s is not self-contained", hdrname);
- build_check_c_o_aux("test.c", failmsg, true);
+ if (!build_check_c_o("test.c"))
+ atf_tc_fail("%s", failmsg);
}
void
Modified: head/contrib/atf/atf-c/detail/test_helpers.h
==============================================================================
--- head/contrib/atf/atf-c/detail/test_helpers.h Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/atf-c/detail/test_helpers.h Fri Feb 14 19:33:16 2014 (r261897)
@@ -63,21 +63,12 @@ struct atf_fs_path;
} \
ATF_TC_BODY(name, tc) \
{ \
- build_check_c_o(tc, sfile, failmsg, true); \
+ if (!build_check_c_o_srcdir(tc, sfile)) \
+ atf_tc_fail("%s", failmsg); \
}
-#define BUILD_TC_FAIL(name, sfile, descr, failmsg) \
- ATF_TC(name); \
- ATF_TC_HEAD(name, tc) \
- { \
- atf_tc_set_md_var(tc, "descr", descr); \
- } \
- ATF_TC_BODY(name, tc) \
- { \
- build_check_c_o(tc, sfile, failmsg, false); \
- }
-
-void build_check_c_o(const atf_tc_t *, const char *, const char *, const bool);
+bool build_check_c_o(const char *);
+bool build_check_c_o_srcdir(const atf_tc_t *, const char *);
void header_check(const char *);
void get_process_helpers_path(const atf_tc_t *, const bool,
struct atf_fs_path *);
Copied: head/contrib/atf/atf-c/detail/version_helper.c (from r261889, vendor/atf/dist/atf-c/detail/version_helper.c)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/contrib/atf/atf-c/detail/version_helper.c Fri Feb 14 19:33:16 2014 (r261897, copy of r261889, vendor/atf/dist/atf-c/detail/version_helper.c)
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2014 Google 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:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * 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.
+ * * Neither the name of Google Inc. nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT
+ * OWNER 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(HAVE_CONFIG_H)
+#include "bconfig.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main(void)
+{
+ printf("%s\n", PACKAGE_VERSION);
+ return EXIT_SUCCESS;
+}
Modified: head/contrib/atf/atf-c/macros_test.c
==============================================================================
--- head/contrib/atf/atf-c/macros_test.c Fri Feb 14 17:47:18 2014 (r261896)
+++ head/contrib/atf/atf-c/macros_test.c Fri Feb 14 19:33:16 2014 (r261897)
@@ -843,11 +843,30 @@ BUILD_TC(use, "macros_h_test.c",
"do not cause syntax errors when used",
"Build of macros_h_test.c failed; some macros in atf-c/macros.h "
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-all
mailing list