xref: /netbsd-src/external/bsd/libarchive/dist/cat/test/test_0.c (revision ed66d5db202cde0e41926c53a8ebd19810120223)
140b1a6e6Sjoerg /*-
2*ed66d5dbSchristos  * SPDX-License-Identifier: BSD-2-Clause
3*ed66d5dbSchristos  *
440b1a6e6Sjoerg  * Copyright (c) 2003-2007 Tim Kientzle
540b1a6e6Sjoerg  * All rights reserved.
640b1a6e6Sjoerg  */
740b1a6e6Sjoerg #include "test.h"
840b1a6e6Sjoerg 
940b1a6e6Sjoerg /*
1040b1a6e6Sjoerg  * This first test does basic sanity checks on the environment.  For
1140b1a6e6Sjoerg  * most of these, we just exit on failure.
1240b1a6e6Sjoerg  */
1340b1a6e6Sjoerg #if !defined(_WIN32) || defined(__CYGWIN__)
1440b1a6e6Sjoerg #define DEV_NULL "/dev/null"
1540b1a6e6Sjoerg #else
1640b1a6e6Sjoerg #define DEV_NULL "NUL"
1740b1a6e6Sjoerg #endif
1840b1a6e6Sjoerg 
1940b1a6e6Sjoerg DEFINE_TEST(test_0)
2040b1a6e6Sjoerg {
2140b1a6e6Sjoerg 	struct stat st;
2240b1a6e6Sjoerg 
2340b1a6e6Sjoerg 	failure("File %s does not exist?!", testprog);
2440b1a6e6Sjoerg 	if (!assertEqualInt(0, stat(testprogfile, &st))) {
2540b1a6e6Sjoerg 		fprintf(stderr,
2640b1a6e6Sjoerg 		    "\nFile %s does not exist; aborting test.\n\n",
2740b1a6e6Sjoerg 		    testprog);
2840b1a6e6Sjoerg 		exit(1);
2940b1a6e6Sjoerg 	}
3040b1a6e6Sjoerg 
3140b1a6e6Sjoerg 	failure("%s is not executable?!", testprog);
3240b1a6e6Sjoerg 	if (!assert((st.st_mode & 0111) != 0)) {
3340b1a6e6Sjoerg 		fprintf(stderr,
3440b1a6e6Sjoerg 		    "\nFile %s not executable; aborting test.\n\n",
3540b1a6e6Sjoerg 		    testprog);
3640b1a6e6Sjoerg 		exit(1);
3740b1a6e6Sjoerg 	}
3840b1a6e6Sjoerg 
3940b1a6e6Sjoerg 	/*
4040b1a6e6Sjoerg 	 * Try to successfully run the program; this requires that
4140b1a6e6Sjoerg 	 * we know some option that will succeed.
4240b1a6e6Sjoerg 	 */
4340b1a6e6Sjoerg 	if (0 != systemf("%s --version >" DEV_NULL, testprog)) {
44eb896107Schristos 		failure("Unable to successfully run: %s --version\n", testprog);
4540b1a6e6Sjoerg 		assert(0);
4640b1a6e6Sjoerg 	}
4740b1a6e6Sjoerg 
4840b1a6e6Sjoerg 	/* TODO: Ensure that our reference files are available. */
4940b1a6e6Sjoerg }
50