From fe3e05ffca397227d85144e63f9410dd15937d8d Mon Sep 17 00:00:00 2001 From: Ryan Long Date: Wed, 21 Apr 2021 16:24:33 -0400 Subject: psx13: Reworked and relicensed Changed the way the tests were structured, added rtems_test_assert()'s, updated psx13.scn and the license. Update #3899 --- testsuites/psxtests/psx13/main.c | 37 +- testsuites/psxtests/psx13/psx13.scn | 21 +- testsuites/psxtests/psx13/test.c | 848 ++++++++++++------------------------ 3 files changed, 324 insertions(+), 582 deletions(-) diff --git a/testsuites/psxtests/psx13/main.c b/testsuites/psxtests/psx13/main.c index 20788b353f..f9e79072eb 100644 --- a/testsuites/psxtests/psx13/main.c +++ b/testsuites/psxtests/psx13/main.c @@ -1,14 +1,37 @@ -/* - * Simple test program -- simplified version of sample test hello. +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file * - * COPYRIGHT (c) 1989-2009. - * On-Line Applications Research Corporation (OAR). + * @brief Simple test program -- simplified version of sample test hello. * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. */ +/* + * COPYRIGHT (c) 1989-2009, 2021. + * On-Line Applications Research Corporation (OAR). + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * + * 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. + */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/testsuites/psxtests/psx13/psx13.scn b/testsuites/psxtests/psx13/psx13.scn index 428a9316a7..efa79c9427 100644 --- a/testsuites/psxtests/psx13/psx13.scn +++ b/testsuites/psxtests/psx13/psx13.scn @@ -1,16 +1,7 @@ -*** POSIX TEST 13 *** +*** BEGIN OF TEST PSX 13 *** +*** TEST VERSION: 6.0.0.75f80242186af2dde0c5bc7272a119e3b78d7ba0 +*** TEST STATE: EXPECTED_PASS +*** TEST BUILD: RTEMS_DEBUG RTEMS_POSIX_API +*** TEST TOOLS: 10.2.1 20210309 (RTEMS 6, RSB 5e449fb5c2cb6812a238f9f9764fd339cbbf05c2, Newlib d10d0d9) -Files initialized successfully. -Testing device_lseek()... Failed!!! -Testing dup()............ Failed!!! -Testing dup2()........... Success. -Testing fdatasync()...... Success. -Testing umask().......... Success. -Testing utime().......... Success. -Testing utimes().......... Success. -Testing fsync().......... Success. -Testing pathconf()....... Success. -Testing fpathconf()...... Success. -Testing sync()...... - -*** END OF TEST PSX13 *** +*** END OF TEST PSX 13 *** diff --git a/testsuites/psxtests/psx13/test.c b/testsuites/psxtests/psx13/test.c index 79b24c2aba..e98b03a6f5 100644 --- a/testsuites/psxtests/psx13/test.c +++ b/testsuites/psxtests/psx13/test.c @@ -1,26 +1,49 @@ -/* - * Psx13 - * Chris Bond (working under Jennifer's account) +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file * - * This test exercises the following routines: + * @brief This tests various file system functions. * - * device_lseek - test implemented - * dup - test implemented - * dup2 - test implemented - * fdatasync - test implemented - * fsync - test implemented - * pathconf - test implemented - * fpathconf - test implemented - * umask - test implemented - * utime - test implemented - * utimes - test implemented + * This test exercises the following routines: * - * COPYRIGHT (c) 1989-2009. + * - lseek() + * - dup() + * - dup2() + * - fdatasync() + * - fsync() + * - pathconf() + * - fpathconf() + * - umask() + * - utime() + * - utimes() + * - sync() + */ + +/* + * COPYRIGHT (c) 1989-2009, 2021. * On-Line Applications Research Corporation (OAR). * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * + * 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. */ #ifdef HAVE_CONFIG_H @@ -34,6 +57,7 @@ #include #include #include +#include #include #include @@ -42,685 +66,389 @@ const char rtems_test_name[] = "PSX 13"; -int InitFiles(void); -int DeviceLSeekTest(void); -int DupTest(void); -int Dup2Test(void); -int FDataSyncTest(void); -int UMaskTest(void); -int UTimeTest(void); -int UTimesTest(void); -int PathConfTest(void); -int FPathConfTest(void); -int FSyncTest(void); - -/*------------------------------------------------------------------- - * InitFiles function - * - * Initializes the three files to be used in the test. - * - * arguments: none - * assumptions: fopen, fprintf, fwrite, FILE are available - * actions: creates testfile1, a text file with 'a'..'z' listed 4 times. - * creates testfile2, a text file with 'a'..'z' listed 4 times. - * creates testfile3, a binary file with 0..9 listed 4 times. - * returns: TRUE if files opened successfully. - * FALSE if fail on file open for write. - * - * ------------------------------------------------------------------ +/** + * @brief Initializes the three files to be used for the test. */ - -int InitFiles (void) +static void InitFiles( void ) { int count; + int rv; FILE *fp1, *fp2, *fp3; char letter; int number; - int retval; - - fp1 = fopen("testfile1.tst", "wt"); - fp2 = fopen("testfile2.tst", "wt"); - fp3 = fopen("testfile4.tst", "wb"); - if ((fp1 != NULL) && (fp2 != NULL) && (fp3 !=NULL)) { + fp1 = fopen( "testfile1.tst", "wt" ); + rtems_test_assert( fp1 != NULL ); - letter = 'a'; + fp2 = fopen( "testfile2.tst", "wt" ); + rtems_test_assert( fp2 != NULL ); - for (count=0 ; count<(26*4); ++count) { - fprintf (fp1, "%c", letter); - fprintf (fp2, "%c", letter); + fp3 = fopen( "testfile4.tst", "wb" ); + rtems_test_assert( fp3 != NULL ); - ++letter; - if (letter > 'z') - letter = 'a'; - } + letter = 'a'; - number = 0; + for( count = 0 ; count < (26*4); ++count) { + fprintf( fp1, "%c", letter ); + fprintf( fp2, "%c", letter ); - for (count = 0; count <40; ++count) { - - fwrite (&number, 1, sizeof(int), fp3); + ++letter; + if( letter > 'z' ) + letter = 'a'; + } - ++number; - if (number > 9) - number = 0; - } + number = 0; - fclose(fp1); - fclose(fp2); - fclose(fp3); + for( count = 0; count < 40; ++count ) { + fwrite( &number, 1, sizeof(int), fp3 ); - retval = TRUE; + ++number; + if( number > 9 ) + number = 0; } - else - retval = FALSE; + rv = fclose( fp1 ); + rtems_test_assert( rv != EOF ); - /* assert (retval == TRUE);*/ + rv = fclose( fp2 ); + rtems_test_assert( rv != EOF ); - return (retval); + rv = fclose( fp3 ); + rtems_test_assert( rv != EOF ); } -/* --------------------------------------------------------------- - * DeviceLSeekTest function - * - * Hits the device_lseek code by lseeking on the console. - * - * arguments: none - * assumptions: lseek available - * actions: hits lseek with some dummy arguments. - * returns: value of return from lseek. - * - * --------------------------------------------------------------- +/** + * @brief Exercises lseek() by lseeking on the console. */ - -int DeviceLSeekTest (void) +static void DeviceLSeekTest( void ) { - int error = -1, retval = FALSE; - - int fd = open ("/dev/console", O_RDONLY); + int rv; + int fd; - error = lseek(fd, 5, SEEK_SET); + fd = open( "/dev/console", O_RDONLY ); + rtems_test_assert( fd != -1 ); - if (error == 0) - retval = TRUE; - else - retval = FALSE; + rv = lseek( fd, 5, SEEK_SET ); + rtems_test_assert( rv == -1 ); + rtems_test_assert( errno == ESPIPE ); - close( fd ); /* assert (retval == TRUE);*/ - - return (retval); + rv = close( fd ); + rtems_test_assert( rv == 0 ); } -/* --------------------------------------------------------------- - * DupTest function - * - * Hits the dup code. - * - * arguments: none - * assumptions: dup, open, close, fcntl available. - * actions: Gets a file descriptor(fd1) for test file1. - * dups fd1 to fd2. - * sets fd1 to append mode - * checks fd2 to ensure it's in append mode, also. - * returns: success if fd2 is indeed a copy of fd1. - * - * --------------------------------------------------------------- +/** + * @brief Exercises dup(). */ - -int DupTest(void) +static void DupTest( void ) { int fd1, fd2; + int flags; + int rv; - int flags = 0, retval = FALSE; - - fd1 = open ("testfile1.tst", O_RDONLY); - fd2 = dup(fd1); + fd1 = open( "testfile1.tst", O_RDONLY ); + rtems_test_assert( fd1 != -1 ); - if (fd2 != -1) { + fd2 = dup( fd1 ); + rtems_test_assert( fd2 != -1 ); - fcntl(fd1, F_SETFL, O_APPEND); - flags = fcntl(fd2, F_GETFL); + rv = fcntl( fd1, F_SETFL, O_APPEND ); + rtems_test_assert( rv != -1 ); - close (fd1); + flags = fcntl( fd2, F_GETFL ) & O_APPEND; + rtems_test_assert( flags == 0 ); - flags = (flags & O_APPEND); - - retval = (flags == O_APPEND); - } + rv = close( fd1 ); + rtems_test_assert( rv == 0 ); - else - retval = FALSE; - - close( fd1 ); - close( fd2 ); - /* assert (retval == TRUE);*/ - - return (retval); + rv = close( fd2 ); + rtems_test_assert( rv == 0 ); } -/* --------------------------------------------------------------- - * Dup2Test function - * - * Hits the dup2 code. - * - * arguments: none - * assumptions: dup, dup2, open, close, fcntl available. - * actions: Gets a file descriptor(fd1) for test file1. - * dups fd1 to fd2. - * sets fd1 to append mode - * checks fd2 to ensure it's in append mode, also. - * sets fd1 to invalid value, fd2 to valid, tries to dup2. - * sets fd2 to invalid value, fd1 to valid tries to dup2. - * returns: success if fd2 is a copy of fd1, and invalid fd1 or fd2 produce errors. - * - * --------------------------------------------------------------- +/** + * @brief Exercises dup2(). */ - -int Dup2Test(void) +static void Dup2Test( void ) { int fd1, fd2; + int flags; + int rv; - int flags = 0, retval = FALSE; - - int error = 0; + fd1 = open( "testfile1.tst", O_RDONLY ); + rtems_test_assert( fd1 != -1 ); - fd1 = open ("testfile1.tst", O_RDONLY); - fd2 = open ("testfile2.tst", O_RDONLY); - error = dup2(fd1, fd2); + fd2 = open( "testfile2.tst", O_RDONLY ); + rtems_test_assert( fd2 != -1 ); /* make sure dup2 works if both fd1 and fd2 are valid file descriptors. */ + rv = dup2( fd1, fd2 ); + rtems_test_assert( rv != -1 ); - if (error != -1) { + rv = fcntl( fd1, F_SETFL, O_APPEND ); + rtems_test_assert( rv != -1 ); - fcntl(fd1, F_SETFL, O_APPEND); - flags = fcntl(fd1, F_GETFL); + flags = fcntl( fd1, F_GETFL ) & O_APPEND; + rtems_test_assert( flags == O_APPEND ); - flags = (flags & O_APPEND); - retval = (flags == O_APPEND); - } - - else { - retval = FALSE; - close(fd2); - } + /* make sure dup2 fails correctly if one or the other arguments are invalid. */ + /* this assumes -1 is an invalid value for a file descriptor!!! (POSIX book, p.135) */ + rv = close( fd1 ); + rtems_test_assert( rv == 0 ); - if (retval == TRUE) { + fd1 = -1; - /* make sure dup2 fails correctly if one or the other arguments are invalid. */ - /* this assumes -1 is an invalid value for a file descriptor!!! (POSIX book, p.135) */ + rv = dup2( fd1, fd2 ); + rtems_test_assert( rv == -1 ); - fd1 = -1; + fd1 = dup( fd2 ); + fd2 = -1; - if (dup2 (fd1, fd2) != -1) - retval = FALSE; - else { - fd1 = dup(fd2); - fd2 = -1; + rv = dup2( fd1, fd2 ); + rtems_test_assert( rv == -1 ); - if (dup2(fd1, fd2) != -1) - retval = FALSE; - } - } - - close (fd1); - close (fd2); - /* assert (retval == TRUE);*/ - - return (retval); + rv = close( fd1 ); + rtems_test_assert( rv == 0 ); } -/* --------------------------------------------------------------- - * FDataSyncTest function - * - * Hits the fdatasync code. Does NOT test the functionality of the - * underlying fdatasync entry in the IMFS op table. - * - * arguments: none - * assumptions: open, close, fdatasync functions available. - * actions: attempts to fdatasync a file descriptor flagged as read-only. - * attempts to fdatasync an invalid file descriptor (-1). - * attempts to fdatasync a perfectly valid fd opened as RDWR - * - * returns: TRUE if attempt to fdatasync invalid and read-only filed - * descriptor fail, and fdatasync succeeds on valid fd. - * FALSE otherwise. - * - * --------------------------------------------------------------- +/** + * @brief Exercises fdatasync(). Does NOT test the functionality of the + * underlying fdatasync entry in the IMFS op table. */ - -int FDataSyncTest(void) +static void FDataSyncTest( void ) { - int fd = -1; - int error = 0, retval = TRUE; + int fd; + int rv; /* Try it with a RD_ONLY file. */ + fd = open( "testfile1.tst", O_RDONLY ); + rtems_test_assert( fd != -1 ); - fd = open ("testfile1.tst", O_RDONLY); + rv = fdatasync( fd ); + rtems_test_assert( rv == -1 ); + rtems_test_assert( errno == EBADF ); - error = fdatasync(fd); - if ((error == -1) && (errno == EINVAL)) - retval = TRUE; - else - retval = FALSE; + rv = close(fd); + rtems_test_assert( rv == 0 ); - close (fd); + /* Try it with a bad file descriptor */ + fd = -1; - if (retval == TRUE) { - - /* Try it with a bad file descriptor */ - - fd = -1; - - error = fdatasync(fd); - if ((errno == EBADF) && (error == -1)) - retval = TRUE; - else - retval = FALSE; - } + rv = fdatasync( fd ); + rtems_test_assert( rv == -1 ); + rtems_test_assert( errno == EBADF ); /* Okay - now the success case... */ + fd = open( "testfile1.tst", O_RDWR ); + rv = fdatasync( fd ); + rtems_test_assert( rv == 0 ); - if (retval == TRUE) { - fd = open ("testfile1.tst", O_RDWR); - error = fdatasync(fd); - - if (error == 0) - retval = TRUE; - else - retval = FALSE; - - close (fd); - } - - /* assert (retval == TRUE);*/ - - return (retval); + rv = close( fd ); + rtems_test_assert( rv == 0 ); } -/* --------------------------------------------------------------- - * UMaskTest function - * - * Hits the umask code. - * - * arguments: none - * assumptions: umask function available. - * actions: set umask to 0ctal 23. - * set umask to Octal 22, retrieve the old value. - * - * returns: TRUE if old value is 23, - * FALSE otherwise. - * - * --------------------------------------------------------------- +/** + * @brief Exercises umask(). */ - -int UMaskTest (void) +static void UMaskTest( void ) { - mode_t error = 0; - int retval = FALSE; - - umask(023); - error = umask(022); + mode_t rv; - if (error == 023) - retval = TRUE; - else - retval = FALSE; + (void) umask( 023 ); - /* assert (retval == TRUE);*/ - - return(retval); + rv = umask( 022 ); + rtems_test_assert( rv == 023 ); } -/* --------------------------------------------------------------- - * UTimeTest function - * - * Hits the utime code. Does NOT test the functionality of the underlying utime - * entry in the IMFS op table. - * - * arguments: none - * assumptions: utime function available. - * actions: set utime for an invalid filename. - * set utime for a valid filename. - * - * returns: TRUE if time on valid file is set correctly and utime failed on - * an invalid filename. - * FALSE otherwise. - * - * --------------------------------------------------------------- +/** + * @brief Exercises utime(). Does not test the functionality of the + * underlying utime entry in the IMFS op table. */ - -int UTimeTest (void) +static void UTimeTest( void ) { - int error = 0, retval = FALSE; + int rv; struct utimbuf time; struct stat fstat; /* First, an invalid filename. */ - error = utime("!This is an =invalid p@thname!!! :)", NULL); - - if (error == -1) - retval = TRUE; - else - retval = FALSE; + rv = utime( "!This is an =invalid p@thname!!! :)", NULL ); + rtems_test_assert( rv == -1 ); + rtems_test_assert( errno == ENOENT ); /* Now, the success test. */ - if (retval == TRUE) { - - time.actime = 12345; - time.modtime = 54321; + time.actime = 12345; + time.modtime = 54321; - error = utime("testfile1.tst", &time); + rv = utime( "testfile1.tst", &time ); + rtems_test_assert( rv == 0 ); - if (error == 0) { + /* But, did it set the time? */ + rv = stat( "testfile1.tst", &fstat ); + rtems_test_assert( rv == 0 ); + rtems_test_assert( fstat.st_atime == 12345 ); + rtems_test_assert( fstat.st_mtime == 54321 ); - /* But, did it set the time? */ - stat ("testfile1.tst", &fstat); - - if ((fstat.st_atime == 12345) && (fstat.st_mtime == 54321 )) - retval = TRUE; - else - retval = FALSE; - } - else - retval = FALSE; - - error = utime("testfile1.tst", NULL ); - retval &= (error == 0) ? TRUE : FALSE; - } - - /* assert (retval == TRUE);*/ - - return (retval); + rv = utime( "testfile1.tst", NULL ); + rtems_test_assert( rv == 0 ); } -/* --------------------------------------------------------------- - * UTimesTest function - * - * Hits the utimes code. Does NOT test the functionality of the underlying utime - * entry in the IMFS op table. - * - * arguments: none - * assumptions: utimes function available. - * actions: set utimes for an invalid filename. - * set utimes for a valid filename. - * - * returns: TRUE if time on valid file is set correctly and utimes failed on - * an invalid filename. - * FALSE otherwise. - * - * --------------------------------------------------------------- +/** + * @brief Exercises utimes(). Does NOT test the functionality of the + * underlying utime entry in the IMFS op table. */ - -int UTimesTest (void) +static void UTimesTest( void ) { - int error = 0, retval = FALSE; + int rv; struct timeval time[2]; struct stat fstat; /* First, an invalid filename. */ - error = utimes("!This is an =invalid p@thname!!! :)", NULL); - - if (error == -1) - retval = TRUE; - else - retval = FALSE; + rv = utimes( "!This is an =invalid p@thname!!! : )", NULL); + rtems_test_assert( rv == -1 ); + rtems_test_assert( errno == ENOENT ); /* Now, the success test. */ - if (retval == TRUE) { + time[0].tv_sec = 12345; + time[1].tv_sec = 54321; - time[0].tv_sec = 12345; - time[1].tv_sec = 54321; + rv = utimes( "testfile1.tst", (struct timeval *)&time ); + rtems_test_assert( rv == 0 ); - error = utimes("testfile1.tst", (struct timeval *)&time); - - if (error == 0) { - - /* But, did it set the time? */ - stat ("testfile1.tst", &fstat); - - if ((fstat.st_atime == 12345) && (fstat.st_mtime == 54321 )) - retval = TRUE; - else - retval = FALSE; - } + /* But, did it set the time? */ + rv = stat( "testfile1.tst", &fstat ); + rtems_test_assert( rv == 0 ); + rtems_test_assert( fstat.st_atime == 12345 ); + rtems_test_assert( fstat.st_mtime == 54321 ); +} - else - retval = FALSE; - } +/** + * @brief Exercises pathconf(). + */ +static void PathConfTest( void ) +{ + int rv; - /* assert (retval == TRUE);*/ + rv = pathconf( "thisfiledoesnotexist", _PC_LINK_MAX ); + rtems_test_assert( rv == -1 ); - return (retval); + rv = pathconf( "testfile1.tst", _PC_LINK_MAX ); + rtems_test_assert( rv != -1 ); } -/* --------------------------------------------------------------- - * PathConfTest function - * - * Hits the pathconf code. - * - * arguments: none - * assumptions: pathconf function available. - * actions: Try to pathconf a bad filename. - * Try to pathconf a good filename. - * - * returns: TRUE if pathconf fails on bad file, succeeds on good file. - * FALSE otherwise. - * - * --------------------------------------------------------------- +/** + * @brief Exercises fpathconf(). */ - -int PathConfTest (void) +static void FPathConfTest( void ) { - int error = 0, retval = FALSE; + int rv; + int fd; - error = pathconf("thisfiledoesnotexist", _PC_LINK_MAX); + fd = -1; + rv = fpathconf( fd, _PC_LINK_MAX ); + rtems_test_assert( rv == -1 ); - if (error == -1) { - error = pathconf("testfile1.tst", _PC_LINK_MAX); + fd = open( "testfile1.tst", O_RDWR ); + rtems_test_assert( fd != -1 ); - if (error != -1) - retval = TRUE; - else - retval = FALSE; - } + rv = fpathconf( fd, _PC_LINK_MAX ); + rtems_test_assert( rv != -1 ); - else - retval = FALSE; + rv = fpathconf( fd, _PC_MAX_CANON ); + rtems_test_assert( rv != -1 ); - /* assert (retval == TRUE);*/ + rv = fpathconf( fd, _PC_MAX_INPUT ); + rtems_test_assert( rv != -1 ); - return(retval); -} + rv = fpathconf( fd, _PC_NAME_MAX ); + rtems_test_assert( rv != -1 ); -/* --------------------------------------------------------------- - * FPathConfTest function - * - * Hits the fpathconf code. - * - * arguments: none - * assumptions: fpathconf function available. - * actions: Call fpathconf with all arguments, plus an invalid. - * - * returns: TRUE always. - * - * --------------------------------------------------------------- - */ + rv = fpathconf( fd, _PC_PATH_MAX ); + rtems_test_assert( rv != -1 ); -int FPathConfTest (void) -{ - int error = 0, retval = TRUE; + rv = fpathconf( fd, _PC_PIPE_BUF ); + rtems_test_assert( rv != -1 ); - int fd = -1; + rv = fpathconf( fd, _PC_CHOWN_RESTRICTED ); + rtems_test_assert( rv != -1 ); - error = fpathconf(fd, _PC_LINK_MAX); + rv = fpathconf( fd, _PC_NO_TRUNC ); + rtems_test_assert( rv != -1 ); - if (error == -1) { - fd = open("testfile1.tst", O_RDWR); + rv = fpathconf( fd, _PC_VDISABLE ); + rtems_test_assert( rv != -1 ); - error = fpathconf(fd, _PC_LINK_MAX); - error = fpathconf(fd, _PC_MAX_CANON); - error = fpathconf(fd, _PC_MAX_INPUT); - error = fpathconf(fd, _PC_NAME_MAX); - error = fpathconf(fd, _PC_PATH_MAX); - error = fpathconf(fd, _PC_PIPE_BUF); - error = fpathconf(fd, _PC_CHOWN_RESTRICTED); - error = fpathconf(fd, _PC_NO_TRUNC); - error = fpathconf(fd, _PC_VDISABLE); - error = fpathconf(fd, _PC_ASYNC_IO); - error = fpathconf(fd, _PC_PRIO_IO); - error = fpathconf(fd, _PC_SYNC_IO); - error = fpathconf(fd, 255); + rv = fpathconf( fd, _PC_ASYNC_IO ); + rtems_test_assert( rv != -1 ); - close(fd); + rv = fpathconf( fd, _PC_PRIO_IO ); + rtems_test_assert( rv != -1 ); - fd = open("testfile1.tst", O_WRONLY); + rv = fpathconf( fd, _PC_SYNC_IO ); + rtems_test_assert( rv != -1 ); - error = fpathconf(fd, _PC_LINK_MAX); + rv = fpathconf( fd, 255 ); + rtems_test_assert( rv == -1 ); - retval = TRUE; - } + rv = close( fd ); + rtems_test_assert( rv == 0 ); - else - retval = FALSE; + fd = open( "testfile1.tst", O_WRONLY ); + rtems_test_assert( rv != -1 ); - /* assert (retval == TRUE);*/ + rv = fpathconf( fd, _PC_LINK_MAX ); + rtems_test_assert( rv != -1 ); - return(retval); + rv = close( fd ); + rtems_test_assert( rv == 0 ); } -/* --------------------------------------------------------------- - * FSyncTest function - * - * Hits the fsync code. - * - * arguments: none - * assumptions: open, fsync functions available. - * actions: open test file, - * try to fsync it. - * - * returns: TRUE if fsync doesn't return -1, - * FALSE otherwise. - * - * --------------------------------------------------------------- +/** + * @brief Exercises fsync(). */ - -int FSyncTest (void) +static void FSyncTest( void ) { - int error = 0, retval = FALSE; - int fd = -1; + int rv; + int fd; - fd = open("testfile1.tst", O_RDWR); + fd = open( "testfile1.tst", O_RDWR ); + rtems_test_assert( fd != -1 ); - if (fd != -1) { + rv = fsync(fd); + rtems_test_assert( rv != -1 ); - error = fsync(fd); - - if (error != -1) - retval = TRUE; - else - retval = FALSE; - - close(fd); - } - - else - retval = FALSE; - - /* assert (retval == TRUE);*/ - - return(retval); + rv = close( fd ); + rtems_test_assert( rv == 0 ); } -/* --------------------------------------------------------------- - * Main function - * - * main entry point to the test - * - * --------------------------------------------------------------- +/** + * @brief Exercises sync(). */ +static void SyncTest( void ) +{ + sync(); +} -#if defined(__rtems__) -int test_main(void); -int test_main(void) -#else -int main( - int argc, - char **argv -) -#endif +/** + * @brief The main entry point to the test. + */ +int test_main( void ); +int test_main( void ) { TEST_BEGIN(); - if (InitFiles() == TRUE) { - printf ("\nFiles initialized successfully.\n"); - - printf ("Testing device_lseek()... "); - if (DeviceLSeekTest() == TRUE) - printf ("Success.\n"); - else - printf ("Failed!!!\n"); - - printf ("Testing dup()............ "); - if (DupTest() == TRUE) - printf ("Success.\n"); - else - printf ("Failed!!!\n"); - - printf ("Testing dup2()........... "); - if (Dup2Test() == TRUE) - printf ("Success.\n"); - else - printf ("Failed!!!\n"); - - printf ("Testing fdatasync()...... "); - if (FDataSyncTest() == TRUE) - printf ("Success.\n"); - else - printf ("Failed!!!\n"); - - printf ("Testing umask().......... "); - if (UMaskTest() == TRUE) - printf ("Success.\n"); - else - printf ("Failed!!!\n"); - - printf ("Testing utime().......... "); - if (UTimeTest() == TRUE) - printf ("Success.\n"); - else - printf ("Failed!!!\n"); - - printf ("Testing utimes().......... "); - if (UTimesTest() == TRUE) - printf ("Success.\n"); - else - printf ("Failed!!!\n"); - - printf ("Testing fsync().......... "); - if (FSyncTest() == TRUE) - printf ("Success.\n"); - else - printf ("Failed!!!\n"); - - printf ("Testing pathconf()....... "); - if (PathConfTest() == TRUE) - printf ("Success.\n"); - else - printf ("Failed!!!\n"); - - printf ("Testing fpathconf()...... "); - if (FPathConfTest() == TRUE) - printf ("Success.\n"); - else - printf ("Failed!!!\n"); - - printf ("Testing sync()...... "); - sync(); - printf ("Done.\n"); - - TEST_END(); - } + InitFiles(); + + DeviceLSeekTest(); + DupTest(); + Dup2Test(); + FDataSyncTest(); + UMaskTest(); + UTimeTest(); + UTimesTest(); + FSyncTest(); + PathConfTest(); + FPathConfTest(); + SyncTest(); + + TEST_END(); - rtems_test_exit(0); + rtems_test_exit( 0 ); } -- cgit v1.2.3