Home | History | Annotate | Download | only in newlib_tests
      1 /*
      2  * Copyright (c) 2018 Cyril Hrubis <chrubis (at) suse.cz>
      3  *
      4  * This program is free software; you can redistribute it and/or
      5  * modify it under the terms of the GNU General Public License as
      6  * published by the Free Software Foundation; either version 2 of
      7  * the License, or (at your option) any later version.
      8  *
      9  * This program is distributed in the hope that it would be useful,
     10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     12  * GNU General Public License for more details.
     13  *
     14  * You should have received a copy of the GNU General Public License
     15  * along with this program; if not, write the Free Software Foundation,
     16  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
     17  */
     18 
     19 /*
     20  * Assert that tst_res() from child started by exec() is propagated to the main
     21  * test process.
     22  *
     23  * This test should be executed as:
     24  * $ PATH=$PATH:$PWD ./test_exec
     25  */
     26 
     27 #define _GNU_SOURCE
     28 #include <unistd.h>
     29 #include "tst_test.h"
     30 
     31 static void do_test(void)
     32 {
     33 	char *const argv[] = {"test_exec_child", NULL};
     34 	char path[4096];
     35 
     36 	if (tst_get_path("test_exec_child", path, sizeof(path)))
     37 		tst_brk(TCONF, "Couldn't find test_exec_child in $PATH");
     38 
     39 	execve(path, argv, environ);
     40 
     41 	tst_res(TBROK | TERRNO, "EXEC!");
     42 }
     43 
     44 static struct tst_test test = {
     45 	.test_all = do_test,
     46 	.child_needs_reinit = 1,
     47 };
     48