glibc/support
Adhemerval Zanella e23cdedb6b support: Add support_capture_subprogram
Its API is similar to support_capture_subprocess, but rather creates a
new process based on the input path and arguments.  Under the hoods it
uses posix_spawn to create the new process.

It also allows the use of other support_capture_* functions to check
for expected results and free the resources.

Checked on x86_64-linux-gnu.

	* support/Makefile (libsupport-routines): Add support_subprocess,
	xposix_spawn, xposix_spawn_file_actions_addclose, and
	xposix_spawn_file_actions_adddup2.
	(tst-support_capture_subprocess-ARGS): New rule.
	* support/capture_subprocess.h (support_capture_subprogram): New
	prototype.
	* support/support_capture_subprocess.c (support_capture_subprocess):
	Refactor to use support_subprocess and support_capture_poll.
	(support_capture_subprogram): New function.
	* support/tst-support_capture_subprocess.c (write_mode_to_str,
	str_to_write_mode, test_common, parse_int, handle_restart,
	do_subprocess, do_subprogram, do_multiple_tests): New functions.
	(do_test): Add support_capture_subprogram tests.
	* support/subprocess.h: New file.
	* support/support_subprocess.c: Likewise.
	* support/xposix_spawn.c: Likewise.
	* support/xposix_spawn_file_actions_addclose.c: Likewise.
	* support/xposix_spawn_file_actions_adddup2.c: Likewise.
	* support/xspawn.h: Likewise.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
(cherry picked from commit 0e16969129)
2021-04-14 11:20:55 +05:30
..
blob_repeat.c support: Do not require overflow builtin in support/blob_repeat.c 2018-12-15 19:09:25 +01:00
blob_repeat.h stdlib/test-bz22786: Avoid spurious test failures using alias mappings 2018-11-02 10:47:16 +01:00
capture_subprocess.h support: Add support_capture_subprogram 2021-04-14 11:20:55 +05:30
check_addrinfo.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
check_dns_packet.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
check_hostent.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
check_netent.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
check_nss.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
check.c support: Preserve errno in write_message, TEST_VERIFY and other checks 2018-01-12 13:35:01 +01:00
check.h support: Implement <support/descriptors.h> to track file descriptors 2018-12-12 12:04:10 +01:00
delayed_exit.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
descriptors.h support: Implement <support/descriptors.h> to track file descriptors 2018-12-12 12:04:10 +01:00
format_nss.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ignore_stderr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
Makefile support: Add support_capture_subprogram 2021-04-14 11:20:55 +05:30
namespace.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
next_to_fault.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
next_to_fault.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
oom_error.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
README support: Introduce new subdirectory for test infrastructure 2016-12-09 08:18:27 +01:00
README-testing.c support: Introduce new subdirectory for test infrastructure 2016-12-09 08:18:27 +01:00
resolv_test.c resolv: Support binary labels in test framework 2018-01-08 20:07:24 +01:00
resolv_test.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
run_diff.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
set_fortify_handler.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
subprocess.h support: Add support_capture_subprogram 2021-04-14 11:20:55 +05:30
support_become_root.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
support_can_chroot.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
support_capture_subprocess_check.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
support_capture_subprocess.c support: Add support_capture_subprogram 2021-04-14 11:20:55 +05:30
support_chroot.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
support_descriptors.c support: Implement <support/descriptors.h> to track file descriptors 2018-12-12 12:04:10 +01:00
support_enter_mount_namespace.c support_enter_mount_namespace: Fix indentation 2018-01-04 15:11:41 +01:00
support_enter_network_namespace.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
support_format_address_family.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
support_format_addrinfo.c Switch IDNA implementation to libidn2 [BZ #19728] [BZ #19729] [BZ #22247] 2018-05-23 15:27:24 +02:00
support_format_dns_packet.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
support_format_herrno.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
support_format_hostent.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
support_format_netent.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
support_isolate_in_subprocess.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
support_openpty.c [BZ 1190] Make EOF sticky in stdio. 2018-03-13 08:31:56 -04:00
support_quote_blob.c support: Add TEST_COMPARE_BLOB, support_quote_blob 2018-05-16 17:00:36 +02:00
support_quote_string.c support: Implement support_quote_string 2018-12-12 12:03:26 +01:00
support_record_failure.c support: Implement <support/descriptors.h> to track file descriptors 2018-12-12 12:04:10 +01:00
support_run_diff.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
support_shared_allocate.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
support_subprocess.c support: Add support_capture_subprogram 2021-04-14 11:20:55 +05:30
support_test_compare_blob.c support: Add TEST_COMPARE_BLOB, support_quote_blob 2018-05-16 17:00:36 +02:00
support_test_compare_failure.c support: Preserve errno in write_message, TEST_VERIFY and other checks 2018-01-12 13:35:01 +01:00
support_test_main.c support: Print timestamps in timeout handler 2018-11-19 15:42:03 +01:00
support_test_verify_impl.c support: Preserve errno in write_message, TEST_VERIFY and other checks 2018-01-12 13:35:01 +01:00
support_write_file_string.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
support-xfstat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
support-xstat.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
support.h Fix alignment of TLS variables for tls variant TLS_TCB_AT_TP [BZ #23403] 2019-11-06 17:40:18 -05:00
temp_file-internal.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
temp_file.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
temp_file.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
test-driver.c support: Add TEST_NO_SETVBUF 2018-06-26 12:30:50 +02:00
test-driver.h support: Add TEST_NO_SETVBUF 2018-06-26 12:30:50 +02:00
tst-support_blob_repeat.c stdlib/test-bz22786: Avoid spurious test failures using alias mappings 2018-11-02 10:47:16 +01:00
tst-support_capture_subprocess.c support: Add support_capture_subprogram 2021-04-14 11:20:55 +05:30
tst-support_descriptors.c support: Implement <support/descriptors.h> to track file descriptors 2018-12-12 12:04:10 +01:00
tst-support_format_dns_packet.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-support_quote_blob.c support: Add TEST_COMPARE_BLOB, support_quote_blob 2018-05-16 17:00:36 +02:00
tst-support_quote_string.c support: Implement support_quote_string 2018-12-12 12:03:26 +01:00
tst-support_record_failure-2.sh Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-support_record_failure.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-support-namespace.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-test_compare_blob.c support: Add TEST_COMPARE_BLOB, support_quote_blob 2018-05-16 17:00:36 +02:00
tst-test_compare.c support: Increase usability of TEST_COMPARE 2018-01-08 20:07:24 +01:00
tst-xreadlink.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tty.h [BZ 1190] Make EOF sticky in stdio. 2018-03-13 08:31:56 -04:00
write_message.c support: Preserve errno in write_message, TEST_VERIFY and other checks 2018-01-12 13:35:01 +01:00
xaccept4.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xaccept.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xasprintf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xbind.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xcalloc.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xchroot.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xclose.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xconnect.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xdlfcn.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xdlfcn.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xdup2.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xfclose.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xfopen.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xfork.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xftruncate.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xgetsockname.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xlisten.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xlseek.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xmalloc.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xmemstream.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xmemstream.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xmkdir.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xmmap.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xmprotect.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xmunmap.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xopen.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpipe.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpoll.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xposix_memalign.c Fix alignment of TLS variables for tls variant TLS_TCB_AT_TP [BZ #23403] 2019-11-06 17:40:18 -05:00
xposix_spawn_file_actions_addclose.c support: Add support_capture_subprogram 2021-04-14 11:20:55 +05:30
xposix_spawn_file_actions_adddup2.c support: Add support_capture_subprogram 2021-04-14 11:20:55 +05:30
xposix_spawn.c support: Add support_capture_subprogram 2021-04-14 11:20:55 +05:30
xpthread_attr_destroy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_attr_init.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_attr_setdetachstate.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_attr_setguardsize.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_attr_setstack.c Fix alignment of TLS variables for tls variant TLS_TCB_AT_TP [BZ #23403] 2019-11-06 17:40:18 -05:00
xpthread_attr_setstacksize.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_barrier_destroy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_barrier_init.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_barrier_wait.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_barrierattr_destroy.c support: Add wrappers for pthread_barrierattr_t 2018-05-29 15:37:00 +02:00
xpthread_barrierattr_init.c support: Add wrappers for pthread_barrierattr_t 2018-05-29 15:37:00 +02:00
xpthread_barrierattr_setpshared.c support: Add wrappers for pthread_barrierattr_t 2018-05-29 15:37:00 +02:00
xpthread_cancel.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_check_return.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_cond_wait.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_create.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_detach.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_join.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_mutex_consistent.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_mutex_destroy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_mutex_init.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_mutex_lock.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_mutex_unlock.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_mutexattr_destroy.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_mutexattr_init.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_mutexattr_setprotocol.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_mutexattr_setpshared.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_mutexattr_setrobust.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_mutexattr_settype.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_once.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_rwlock_destroy.c nptl: Fix pthread_rwlock_try*lock stalls (Bug 23844) 2019-02-17 11:44:19 +01:00
xpthread_rwlock_init.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_rwlock_rdlock.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_rwlock_unlock.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_rwlock_wrlock.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_rwlockattr_init.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_rwlockattr_setkind_np.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_sigmask.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_spin_lock.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xpthread_spin_unlock.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xraise.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xreadlink.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xrealloc.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xrecvfrom.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xsendto.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xsetsockopt.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xsigaction.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xsignal.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xsignal.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xsocket.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xsocket.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xspawn.h support: Add support_capture_subprogram 2021-04-14 11:20:55 +05:30
xstdio.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xstrdup.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xstrndup.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xsysconf.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xthread.h Fix alignment of TLS variables for tls variant TLS_TCB_AT_TP [BZ #23403] 2019-11-06 17:40:18 -05:00
xunistd.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xunlink.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xwaitpid.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xwrite.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00

This subdirectory contains infrastructure which is not put into
installed libraries, but may be linked into programs (installed or
not) and tests.

# Error-checking wrappers

These wrappers test for error return codes an terminate the process on
error.  They are declared in these header files:

* support.h
* xsignal.h
* xthread.h

In general, new wrappers should be added to support.h if possible.
However, support.h must remain fully compatible with C90 and therefore
cannot include headers which use identifers not reserved in C90.  If
the wrappers need additional types, additional headers such as
signal.h need to be introduced.

# Test framework

The test framework provides a main program for tests, including a
timeout for hanging tests.  See README-testing.c for a minimal
example, and test-driver.c for details how to use it.  The following
header files provide related declarations:

* check.h
* temp_file.h
* test-driver.h