Module Name:    src
Committed By:   jmmv
Date:           Tue Jun 14 15:26:21 UTC 2011

Modified Files:
        src/external/bsd/atf/dist/atf-c: defs.h.in tc.h
        src/external/bsd/atf/dist/atf-c++: tests.cpp
        src/external/bsd/atf/dist/atf-c/detail: process.c
        src/external/bsd/atf/dist/atf-run: atf-run.cpp integration_test.sh
            test-program.cpp test_program_test.cpp
        src/external/bsd/atf/dist/doc: atf-test-case.4

Log Message:
Post-import merge of atf-0.14.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/external/bsd/atf/dist/atf-c/defs.h.in \
    src/external/bsd/atf/dist/atf-c/tc.h
cvs rdiff -u -r1.6 -r1.7 src/external/bsd/atf/dist/atf-c++/tests.cpp
cvs rdiff -u -r1.2 -r1.3 src/external/bsd/atf/dist/atf-c/detail/process.c
cvs rdiff -u -r1.11 -r1.12 src/external/bsd/atf/dist/atf-run/atf-run.cpp
cvs rdiff -u -r1.2 -r1.3 \
    src/external/bsd/atf/dist/atf-run/integration_test.sh \
    src/external/bsd/atf/dist/atf-run/test_program_test.cpp
cvs rdiff -u -r1.8 -r1.9 src/external/bsd/atf/dist/atf-run/test-program.cpp
cvs rdiff -u -r1.3 -r1.4 src/external/bsd/atf/dist/doc/atf-test-case.4

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/bsd/atf/dist/atf-c/defs.h.in
diff -u src/external/bsd/atf/dist/atf-c/defs.h.in:1.2 src/external/bsd/atf/dist/atf-c/defs.h.in:1.3
--- src/external/bsd/atf/dist/atf-c/defs.h.in:1.2	Sat Jun 11 18:03:57 2011
+++ src/external/bsd/atf/dist/atf-c/defs.h.in	Tue Jun 14 15:26:20 2011
@@ -1,7 +1,7 @@
 /*
  * Automated Testing Framework (atf)
  *
- * Copyright (c) 2008 The NetBSD Foundation, Inc.
+ * Copyright (c) 2008, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -30,6 +30,7 @@
 #if !defined(ATF_C_DEFS_H)
 #define ATF_C_DEFS_H
 
+#define ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(a, b) @ATTRIBUTE_FORMAT_PRINTF@
 #define ATF_DEFS_ATTRIBUTE_NORETURN @ATTRIBUTE_NORETURN@
 #define ATF_DEFS_ATTRIBUTE_PRINTF(a,b) @ATTRIBUTE_PRINTF(a,b)@
 
Index: src/external/bsd/atf/dist/atf-c/tc.h
diff -u src/external/bsd/atf/dist/atf-c/tc.h:1.2 src/external/bsd/atf/dist/atf-c/tc.h:1.3
--- src/external/bsd/atf/dist/atf-c/tc.h:1.2	Sat Jun 11 18:03:57 2011
+++ src/external/bsd/atf/dist/atf-c/tc.h	Tue Jun 14 15:26:20 2011
@@ -1,7 +1,7 @@
 /*
  * Automated Testing Framework (atf)
  *
- * Copyright (c) 2008, 2009, 2010 The NetBSD Foundation, Inc.
+ * Copyright (c) 2008, 2009, 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -104,33 +104,33 @@
 
 /* To be run from test case bodies only. */
 void atf_tc_fail(const char *, ...)
-    ATF_DEFS_ATTRIBUTE_PRINTF(1, 2)
+    ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(1, 2)
     ATF_DEFS_ATTRIBUTE_NORETURN;
 void atf_tc_fail_nonfatal(const char *, ...)
-    ATF_DEFS_ATTRIBUTE_PRINTF(1, 2);
+    ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(1, 2);
 void atf_tc_pass(void)
     ATF_DEFS_ATTRIBUTE_NORETURN;
 void atf_tc_require_prog(const char *);
 void atf_tc_skip(const char *, ...)
-    ATF_DEFS_ATTRIBUTE_PRINTF(1, 2)
+    ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(1, 2)
     ATF_DEFS_ATTRIBUTE_NORETURN;
 void atf_tc_expect_pass(void);
 void atf_tc_expect_fail(const char *, ...)
-    ATF_DEFS_ATTRIBUTE_PRINTF(1, 2);
+    ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(1, 2);
 void atf_tc_expect_exit(const int, const char *, ...)
-    ATF_DEFS_ATTRIBUTE_PRINTF(2, 3);
+    ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(2, 3);
 void atf_tc_expect_signal(const int, const char *, ...)
-    ATF_DEFS_ATTRIBUTE_PRINTF(2, 3);
+    ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(2, 3);
 void atf_tc_expect_death(const char *, ...)
-    ATF_DEFS_ATTRIBUTE_PRINTF(1, 2);
+    ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(1, 2);
 void atf_tc_expect_timeout(const char *, ...)
-    ATF_DEFS_ATTRIBUTE_PRINTF(1, 2);
+    ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(1, 2);
 
 /* To be run from test case bodies only; internal to macros.h. */
 void atf_tc_fail_check(const char *, const size_t, const char *, ...)
-    ATF_DEFS_ATTRIBUTE_PRINTF(3, 4);
+    ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(3, 4);
 void atf_tc_fail_requirement(const char *, const size_t, const char *, ...)
-    ATF_DEFS_ATTRIBUTE_PRINTF(3, 4)
+    ATF_DEFS_ATTRIBUTE_FORMAT_PRINTF(3, 4)
     ATF_DEFS_ATTRIBUTE_NORETURN;
 void atf_tc_check_errno(const char *, const size_t, const int,
                         const char *, const bool);

Index: src/external/bsd/atf/dist/atf-c++/tests.cpp
diff -u src/external/bsd/atf/dist/atf-c++/tests.cpp:1.6 src/external/bsd/atf/dist/atf-c++/tests.cpp:1.7
--- src/external/bsd/atf/dist/atf-c++/tests.cpp:1.6	Sun Nov  7 17:45:22 2010
+++ src/external/bsd/atf/dist/atf-c++/tests.cpp	Tue Jun 14 15:26:20 2011
@@ -1,7 +1,7 @@
 //
 // Automated Testing Framework (atf)
 //
-// Copyright (c) 2007, 2008, 2009, 2010 The NetBSD Foundation, Inc.
+// Copyright (c) 2007, 2008, 2009, 2010, 2011 The NetBSD Foundation, Inc.
 // All rights reserved.
 //
 // Redistribution and use in source and binary forms, with or without
@@ -641,6 +641,16 @@
 
     impl::tc* tc = find_tc(init_tcs(), fields.first);
 
+    if (!atf::env::has("__RUNNING_INSIDE_ATF_RUN") || atf::env::get(
+        "__RUNNING_INSIDE_ATF_RUN") != "internal-yes-value")
+    {
+        std::cerr << m_prog_name << ": WARNING: Running test cases without "
+            "atf-run(1) is unsupported\n";
+        std::cerr << m_prog_name << ": WARNING: No isolation nor timeout "
+            "control is being applied; you may get unexpected failures; see "
+            "atf-test-case(4)\n";
+    }
+
     try {
         switch (fields.second) {
         case BODY:

Index: src/external/bsd/atf/dist/atf-c/detail/process.c
diff -u src/external/bsd/atf/dist/atf-c/detail/process.c:1.2 src/external/bsd/atf/dist/atf-c/detail/process.c:1.3
--- src/external/bsd/atf/dist/atf-c/detail/process.c:1.2	Tue Apr  5 17:17:35 2011
+++ src/external/bsd/atf/dist/atf-c/detail/process.c	Tue Jun 14 15:26:20 2011
@@ -412,6 +412,24 @@
 }
 
 static
+atf_error_t
+silence_stdin(void)
+{
+    atf_error_t err;
+
+    close(STDIN_FILENO);
+    int fd = open("/dev/zero", O_RDONLY);
+    if (fd == -1)
+        err = atf_libc_error(errno, "Could not open /dev/zero");
+    else {
+        INV(fd == STDIN_FILENO);
+        err = atf_no_error();
+    }
+
+    return err;
+}
+
+static
 void
 do_child(void (*)(void *),
          void *,
@@ -427,6 +445,10 @@
 {
     atf_error_t err;
 
+    err = silence_stdin();
+    if (atf_is_error(err))
+        goto out;
+
     err = child_connect(outsp, STDOUT_FILENO);
     if (atf_is_error(err))
         goto out;

Index: src/external/bsd/atf/dist/atf-run/atf-run.cpp
diff -u src/external/bsd/atf/dist/atf-run/atf-run.cpp:1.11 src/external/bsd/atf/dist/atf-run/atf-run.cpp:1.12
--- src/external/bsd/atf/dist/atf-run/atf-run.cpp:1.11	Tue Apr  5 17:17:35 2011
+++ src/external/bsd/atf/dist/atf-run/atf-run.cpp	Tue Jun 14 15:26:21 2011
@@ -33,6 +33,7 @@
 
 extern "C" {
 #include <sys/types.h>
+#include <sys/param.h>
 #include <sys/stat.h>
 #include <sys/wait.h>
 #include <unistd.h>
@@ -67,6 +68,12 @@
 
 namespace impl = atf::atf_run;
 
+#if defined(MAXCOMLEN)
+static const std::string::size_type max_core_name_length = MAXCOMLEN;
+#else
+static const std::string::size_type max_core_name_length = std::string::npos;
+#endif
+
 class atf_run : public atf::application::app {
     static const char* m_description;
 
@@ -119,7 +126,8 @@
 
     w.stderr_tc("Test program crashed; attempting to get stack trace");
 
-    const atf::fs::path corename = workdir / (tp.leaf_name() + ".core");
+    const atf::fs::path corename = workdir /
+        (tp.leaf_name().substr(0, max_core_name_length) + ".core");
     if (!atf::fs::exists(corename)) {
         w.stderr_tc("Expected file " + corename.str() + " not found");
         return;

Index: src/external/bsd/atf/dist/atf-run/integration_test.sh
diff -u src/external/bsd/atf/dist/atf-run/integration_test.sh:1.2 src/external/bsd/atf/dist/atf-run/integration_test.sh:1.3
--- src/external/bsd/atf/dist/atf-run/integration_test.sh:1.2	Sun Nov  7 17:54:03 2010
+++ src/external/bsd/atf/dist/atf-run/integration_test.sh	Tue Jun 14 15:26:21 2011
@@ -1,7 +1,7 @@
 #
 # Automated Testing Framework (atf)
 #
-# Copyright (c) 2007, 2008, 2009, 2010 The NetBSD Foundation, Inc.
+# Copyright (c) 2007, 2008, 2009, 2010, 2011 The NetBSD Foundation, Inc.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -120,6 +120,18 @@
 EOF
 }
 
+atf_test_case no_warnings
+no_warnings_head()
+{
+    atf_set "descr" "Tests that atf-run suppresses warnings about not running" \
+                    "within atf-run"
+}
+no_warnings_body()
+{
+    create_helper pass
+    atf_check -s eq:0 -o ignore -e not-match:'WARNING.*atf-run' atf-run helper
+}
+
 atf_test_case config
 config_head()
 {
@@ -583,8 +595,8 @@
 isolation_env_body()
 {
     undef_vars="LANG LC_ALL LC_COLLATE LC_CTYPE LC_MESSAGES LC_MONETARY \
-                LC_NUMERIC LC_TIME TZ"
-    def_vars="HOME"
+                LC_NUMERIC LC_TIME"
+    def_vars="HOME TZ"
 
     mangleenv="env"
     for v in ${undef_vars} ${def_vars}; do
@@ -607,6 +619,8 @@
     for v in ${def_vars}; do
         atf_check -s eq:0 -o ignore -e empty grep "^tc-so:${v}=" stdout
     done
+
+    atf_check -s eq:0 -o ignore -e empty grep "^tc-so:TZ=UTC" stdout
 }
 
 atf_test_case isolation_home
@@ -621,6 +635,18 @@
     atf_check -s eq:0 -o ignore -e ignore env HOME=foo atf-run helper
 }
 
+atf_test_case isolation_stdin
+isolation_stdin_head()
+{
+    atf_set "descr" "Tests that atf-run nullifies the stdin of test cases"
+}
+isolation_stdin_body()
+{
+    create_helper read_stdin
+    create_atffile helper
+    atf_check -s eq:0 -o ignore -e ignore -x 'echo hello world | atf-run helper'
+}
+
 atf_test_case isolation_umask
 isolation_umask_head()
 {
@@ -855,6 +881,36 @@
         -v var1=a -v var2=' ' helper
 }
 
+atf_test_case require_files
+require_files_head()
+{
+    atf_set "descr" "Tests that atf-run validates the require.files property"
+}
+require_files_body()
+{
+    create_helper require_files
+    create_atffile helper
+
+    touch i-exist
+
+    echo "Checking absolute paths"
+    atf_check -s eq:0 -o match:"${TESTCASE}, passed" -e ignore atf-run \
+        -v files='/bin/cp' helper
+    atf_check -s eq:0 -o match:"${TESTCASE}, passed" -e ignore atf-run \
+        -v files="$(pwd)/i-exist" helper
+    atf_check -s eq:0 \
+        -o match:"${TESTCASE}, skipped, .*/dont-exist" \
+        -e ignore atf-run -v files="$(pwd)/i-exist $(pwd)/dont-exist" helper
+
+    echo "Checking that relative paths are not allowed"
+    atf_check -s eq:1 \
+        -o match:"${TESTCASE}, failed, Relative paths.*not allowed.*hello" \
+        -e ignore atf-run -v files='hello' helper
+    atf_check -s eq:1 \
+        -o match:"${TESTCASE}, failed, Relative paths.*not allowed.*a/b" \
+        -e ignore atf-run -v files='a/b' helper
+}
+
 atf_test_case require_machine
 require_machine_head()
 {
@@ -1031,6 +1087,7 @@
 
 atf_init_test_cases()
 {
+    atf_add_test_case no_warnings
     atf_add_test_case config
     atf_add_test_case vflag
     atf_add_test_case atffile
@@ -1047,6 +1104,7 @@
     atf_add_test_case hooks
     atf_add_test_case isolation_env
     atf_add_test_case isolation_home
+    atf_add_test_case isolation_stdin
     atf_add_test_case isolation_umask
     atf_add_test_case cleanup_pass
     atf_add_test_case cleanup_fail
@@ -1057,6 +1115,7 @@
     atf_add_test_case cleanup_symlink
     atf_add_test_case require_arch
     atf_add_test_case require_config
+    atf_add_test_case require_files
     atf_add_test_case require_machine
     atf_add_test_case require_progs
     atf_add_test_case require_user_root
Index: src/external/bsd/atf/dist/atf-run/test_program_test.cpp
diff -u src/external/bsd/atf/dist/atf-run/test_program_test.cpp:1.2 src/external/bsd/atf/dist/atf-run/test_program_test.cpp:1.3
--- src/external/bsd/atf/dist/atf-run/test_program_test.cpp:1.2	Tue Nov 16 17:55:56 2010
+++ src/external/bsd/atf/dist/atf-run/test_program_test.cpp	Tue Jun 14 15:26:21 2011
@@ -1,7 +1,7 @@
 //
 // Automated Testing Framework (atf)
 //
-// Copyright (c) 2010 The NetBSD Foundation, Inc.
+// Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
 // All rights reserved.
 //
 // Redistribution and use in source and binary forms, with or without
@@ -227,6 +227,7 @@
         "timeout: 300\n"
         "require.arch: thearch\n"
         "require.config: foo-bar\n"
+        "require.files: /a/1 /b/2\n"
         "require.machine: themachine\n"
         "require.progs: /bin/cp mv\n"
         "require.user: root\n"
@@ -234,7 +235,7 @@
 
     // NO_CHECK_STYLE_BEGIN
     const char* exp_calls[] = {
-        "got_tc(single_test, {descr=Some description, ident=single_test, require.arch=thearch, require.config=foo-bar, require.machine=themachine, require.progs=/bin/cp mv, require.user=root, timeout=300})",
+        "got_tc(single_test, {descr=Some description, ident=single_test, require.arch=thearch, require.config=foo-bar, require.files=/a/1 /b/2, require.machine=themachine, require.progs=/bin/cp mv, require.user=root, timeout=300})",
         "got_eof()",
         NULL
     };

Index: src/external/bsd/atf/dist/atf-run/test-program.cpp
diff -u src/external/bsd/atf/dist/atf-run/test-program.cpp:1.8 src/external/bsd/atf/dist/atf-run/test-program.cpp:1.9
--- src/external/bsd/atf/dist/atf-run/test-program.cpp:1.8	Thu Mar 17 19:45:36 2011
+++ src/external/bsd/atf/dist/atf-run/test-program.cpp	Tue Jun 14 15:26:21 2011
@@ -239,7 +239,9 @@
     atf::env::unset("LC_MONETARY");
     atf::env::unset("LC_NUMERIC");
     atf::env::unset("LC_TIME");
-    atf::env::unset("TZ");
+    atf::env::set("TZ", "UTC");
+
+    atf::env::set("__RUNNING_INSIDE_ATF_RUN", "internal-yes-value");
 
     impl::change_directory(workdir);
 }
@@ -418,6 +420,7 @@
                               ident_regex + "; was '" + value + "'");
     } else if (name == "require.arch") {
     } else if (name == "require.config") {
+    } else if (name == "require.files") {
     } else if (name == "require.machine") {
     } else if (name == "require.progs") {
     } else if (name == "require.user") {

Index: src/external/bsd/atf/dist/doc/atf-test-case.4
diff -u src/external/bsd/atf/dist/doc/atf-test-case.4:1.3 src/external/bsd/atf/dist/doc/atf-test-case.4:1.4
--- src/external/bsd/atf/dist/doc/atf-test-case.4:1.3	Thu Mar 31 16:44:17 2011
+++ src/external/bsd/atf/dist/doc/atf-test-case.4	Tue Jun 14 15:26:21 2011
@@ -1,7 +1,7 @@
 .\"
 .\" Automated Testing Framework (atf)
 .\"
-.\" Copyright (c) 2007, 2008, 2010 The NetBSD Foundation, Inc.
+.\" Copyright (c) 2007, 2008, 2010, 2011 The NetBSD Foundation, Inc.
 .\" All rights reserved.
 .\"
 .\" Redistribution and use in source and binary forms, with or without
@@ -26,7 +26,7 @@
 .\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
 .\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd December 13, 2010
+.Dd May 29, 2011
 .Dt ATF-TEST-CASE 4
 .Os
 .Sh NAME
@@ -148,6 +148,9 @@
 collected by the test program they are contained in.
 The developer need not care about this as long as he uses the correct
 APIs to implement the test cases.
+.Pp
+The standard input of the test cases is unconditionally connected to
+.Sq /dev/zero .
 .Ss Meta-data
 The following list describes all meta-data properties interpreted
 internally by ATF.
@@ -179,7 +182,7 @@
 The test case's identifier.
 Must be unique inside the test program and should be short but descriptive.
 .It require.arch
-Type textual.
+Type: textual.
 Optional.
 .Pp
 A whitespace separated list of architectures that the test case can be run
@@ -192,8 +195,17 @@
 to execute the test case.
 If any of the required variables is not defined, the test case is
 .Em skipped .
+.It require.files
+Type: textual.
+Optional.
+.Pp
+A whitespace separated list of files that must be present to execute the
+test case.
+The names of these files must be absolute paths.
+If any of the required files is not found, the test case is
+.Em skipped .
 .It require.machine
-Type textual.
+Type: textual.
 Optional.
 .Pp
 A whitespace separated list of machine types that the test case can be run
@@ -219,14 +231,19 @@
 .Sq root
 or
 .Sq unprivileged .
-If the requested privileges do not match the current user, the test case is
+.Pp
+If the test case is running as a regular user and this property is
+.Sq root ,
+the test case is
 .Em skipped .
 .Pp
-.Em NOTE :
-In the future, it is expected that the test case will attempt to gain the
-necessary privileges on its own before failing.
-At the very least, lowering the privileges from the super-user to an
-unprivileged user will be supported.
+If the test case is running as root and this property is
+.Sq unprivileged ,
+.Xr atf-run 1
+will automatically drop the privileges if the
+.Sq unprivileged-user
+configuration property is set; otherwise the test case is
+.Em skipped .
 .It timeout
 Type: integral.
 Optional; defaults to
@@ -268,7 +285,8 @@
 .It Ev LC_TIME
 Undefined.
 .It Ev TZ
-Undefined.
+Hardcoded to
+.Sq UTC .
 .El
 .Ss Work directories
 The test program always creates a temporary directory
@@ -284,6 +302,7 @@
 .Sq 0022 .
 The test case's code is free to change this during execution.
 .Sh SEE ALSO
+.Xr atf-run 1 ,
 .Xr atf-test-program 1 ,
 .Xr atf-formats 5 ,
 .Xr atf 7

Reply via email to