mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-02-26 20:36:01 +00:00
update fileio test
This updates the fileio test to be parallel-safe. 2013-11-04 Tom Tromey <tromey@redhat.com> * gdb.base/fileio.c (test_open, test_write, test_read) (test_lseek, test_close, test_stat, test_fstat) (test_isatty, test_system, test_rename, test_unlink): Use OUTDIR define. * gdb.base/fileio.exp: Define OUTDIR during compilation. Use standard_output_file.
This commit is contained in:
parent
59b28c5dd2
commit
b44b82afd9
@ -1,3 +1,12 @@
|
||||
2013-11-04 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* gdb.base/fileio.c (test_open, test_write, test_read)
|
||||
(test_lseek, test_close, test_stat, test_fstat)
|
||||
(test_isatty, test_system, test_rename, test_unlink):
|
||||
Use OUTDIR define.
|
||||
* gdb.base/fileio.exp: Define OUTDIR during compilation.
|
||||
Use standard_output_file.
|
||||
|
||||
2013-11-04 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* gdb.base/checkpoint.c (main): Use PI_TXT and COPY1_TXT
|
||||
|
@ -58,6 +58,7 @@ system (const char * string);
|
||||
1) Invalid string/command. - returns 127. */
|
||||
static const char *strerrno (int err);
|
||||
|
||||
/* Note that OUTDIR is defined by the test suite. */
|
||||
#define FILENAME "foo.fileio.test"
|
||||
#define RENAMED "bar.fileio.test"
|
||||
#define NONEXISTANT "nofoo.fileio.test"
|
||||
@ -77,7 +78,7 @@ test_open ()
|
||||
|
||||
/* Test opening */
|
||||
errno = 0;
|
||||
ret = open (FILENAME, O_CREAT | O_TRUNC | O_RDWR, S_IWUSR | S_IRUSR);
|
||||
ret = open (OUTDIR FILENAME, O_CREAT | O_TRUNC | O_RDWR, S_IWUSR | S_IRUSR);
|
||||
printf ("open 1: ret = %d, errno = %d %s\n", ret, errno,
|
||||
ret >= 0 ? "OK" : "");
|
||||
|
||||
@ -86,7 +87,7 @@ test_open ()
|
||||
stop ();
|
||||
/* Creating an already existing file (created by fileio.exp) */
|
||||
errno = 0;
|
||||
ret = open (FILENAME, O_CREAT | O_EXCL | O_WRONLY, S_IWUSR | S_IRUSR);
|
||||
ret = open (OUTDIR FILENAME, O_CREAT | O_EXCL | O_WRONLY, S_IWUSR | S_IRUSR);
|
||||
printf ("open 2: ret = %d, errno = %d %s\n", ret, errno,
|
||||
strerrno (errno));
|
||||
if (ret >= 0)
|
||||
@ -110,13 +111,13 @@ test_open ()
|
||||
stop ();
|
||||
/* Open for write but no write permission */
|
||||
errno = 0;
|
||||
ret = open (NOWRITE, O_CREAT | O_RDONLY, S_IRUSR);
|
||||
ret = open (OUTDIR NOWRITE, O_CREAT | O_RDONLY, S_IRUSR);
|
||||
if (ret >= 0)
|
||||
{
|
||||
close (ret);
|
||||
stop ();
|
||||
errno = 0;
|
||||
ret = open (NOWRITE, O_WRONLY);
|
||||
ret = open (OUTDIR NOWRITE, O_WRONLY);
|
||||
printf ("open 5: ret = %d, errno = %d %s\n", ret, errno,
|
||||
strerrno (errno));
|
||||
if (ret >= 0)
|
||||
@ -137,7 +138,7 @@ test_write ()
|
||||
|
||||
/* Test writing */
|
||||
errno = 0;
|
||||
fd = open (FILENAME, O_WRONLY);
|
||||
fd = open (OUTDIR FILENAME, O_WRONLY);
|
||||
if (fd >= 0)
|
||||
{
|
||||
errno = 0;
|
||||
@ -157,7 +158,7 @@ test_write ()
|
||||
stop ();
|
||||
/* Write to a read-only file */
|
||||
errno = 0;
|
||||
fd = open (FILENAME, O_RDONLY);
|
||||
fd = open (OUTDIR FILENAME, O_RDONLY);
|
||||
if (fd >= 0)
|
||||
{
|
||||
errno = 0;
|
||||
@ -178,7 +179,7 @@ test_read ()
|
||||
|
||||
/* Test reading */
|
||||
errno = 0;
|
||||
fd = open (FILENAME, O_RDONLY);
|
||||
fd = open (OUTDIR FILENAME, O_RDONLY);
|
||||
if (fd >= 0)
|
||||
{
|
||||
memset (buf, 0, 16);
|
||||
@ -210,7 +211,7 @@ test_lseek ()
|
||||
|
||||
/* Test seeking */
|
||||
errno = 0;
|
||||
fd = open (FILENAME, O_RDONLY);
|
||||
fd = open (OUTDIR FILENAME, O_RDONLY);
|
||||
if (fd >= 0)
|
||||
{
|
||||
errno = 0;
|
||||
@ -251,7 +252,7 @@ test_close ()
|
||||
|
||||
/* Test close */
|
||||
errno = 0;
|
||||
fd = open (FILENAME, O_RDONLY);
|
||||
fd = open (OUTDIR FILENAME, O_RDONLY);
|
||||
if (fd >= 0)
|
||||
{
|
||||
errno = 0;
|
||||
@ -278,7 +279,7 @@ test_stat ()
|
||||
|
||||
/* Test stat */
|
||||
errno = 0;
|
||||
ret = stat (FILENAME, &st);
|
||||
ret = stat (OUTDIR FILENAME, &st);
|
||||
if (!ret)
|
||||
printf ("stat 1: ret = %d, errno = %d %s\n", ret, errno,
|
||||
st.st_size == 11 ? "OK" : "");
|
||||
@ -313,7 +314,7 @@ test_fstat ()
|
||||
|
||||
/* Test fstat */
|
||||
errno = 0;
|
||||
fd = open (FILENAME, O_RDONLY);
|
||||
fd = open (OUTDIR FILENAME, O_RDONLY);
|
||||
if (fd >= 0)
|
||||
{
|
||||
errno = 0;
|
||||
@ -352,7 +353,7 @@ test_isatty ()
|
||||
printf ("isatty 4: invalid %s\n", isatty (999) ? "yes" : "no OK");
|
||||
stop ();
|
||||
/* Check open file */
|
||||
fd = open (FILENAME, O_RDONLY);
|
||||
fd = open (OUTDIR FILENAME, O_RDONLY);
|
||||
if (fd >= 0)
|
||||
{
|
||||
printf ("isatty 5: file %s\n", isatty (fd) ? "yes" : "no OK");
|
||||
@ -364,6 +365,8 @@ test_isatty ()
|
||||
}
|
||||
|
||||
|
||||
char sys[1512];
|
||||
|
||||
int
|
||||
test_system ()
|
||||
{
|
||||
@ -371,14 +374,13 @@ test_system ()
|
||||
* Requires test framework to switch on "set remote system-call-allowed 1"
|
||||
*/
|
||||
int ret;
|
||||
char sys[512];
|
||||
|
||||
/* Test for shell */
|
||||
ret = system (NULL);
|
||||
printf ("system 1: ret = %d %s\n", ret, ret != 0 ? "OK" : "");
|
||||
stop ();
|
||||
/* This test prepares the directory for test_rename() */
|
||||
sprintf (sys, "mkdir -p %s %s", TESTSUBDIR, TESTDIR2);
|
||||
sprintf (sys, "mkdir -p %s/%s %s/%s", OUTDIR, TESTSUBDIR, OUTDIR, TESTDIR2);
|
||||
ret = system (sys);
|
||||
if (ret == 127)
|
||||
printf ("system 2: ret = %d /bin/sh unavailable???\n", ret);
|
||||
@ -399,7 +401,7 @@ test_rename ()
|
||||
|
||||
/* Test rename */
|
||||
errno = 0;
|
||||
ret = rename (FILENAME, RENAMED);
|
||||
ret = rename (OUTDIR FILENAME, OUTDIR RENAMED);
|
||||
if (!ret)
|
||||
{
|
||||
errno = 0;
|
||||
@ -407,7 +409,7 @@ test_rename ()
|
||||
if (ret && errno == ENOENT)
|
||||
{
|
||||
errno = 0;
|
||||
ret = stat (RENAMED, &st);
|
||||
ret = stat (OUTDIR RENAMED, &st);
|
||||
printf ("rename 1: ret = %d, errno = %d %s\n", ret, errno,
|
||||
strerrno (errno));
|
||||
errno = 0;
|
||||
@ -420,50 +422,50 @@ test_rename ()
|
||||
stop ();
|
||||
/* newpath is existing directory, oldpath is not a directory */
|
||||
errno = 0;
|
||||
ret = rename (RENAMED, TESTDIR2);
|
||||
ret = rename (OUTDIR RENAMED, OUTDIR TESTDIR2);
|
||||
printf ("rename 2: ret = %d, errno = %d %s\n", ret, errno,
|
||||
strerrno (errno));
|
||||
stop ();
|
||||
/* newpath is a non-empty directory */
|
||||
errno = 0;
|
||||
ret = rename (TESTDIR2, TESTDIR1);
|
||||
ret = rename (OUTDIR TESTDIR2, OUTDIR TESTDIR1);
|
||||
printf ("rename 3: ret = %d, errno = %d %s\n", ret, errno,
|
||||
strerrno (errno));
|
||||
stop ();
|
||||
/* newpath is a subdirectory of old path */
|
||||
errno = 0;
|
||||
ret = rename (TESTDIR1, TESTSUBDIR);
|
||||
ret = rename (OUTDIR TESTDIR1, OUTDIR TESTSUBDIR);
|
||||
printf ("rename 4: ret = %d, errno = %d %s\n", ret, errno,
|
||||
strerrno (errno));
|
||||
stop ();
|
||||
/* oldpath does not exist */
|
||||
errno = 0;
|
||||
ret = rename (NONEXISTANT, FILENAME);
|
||||
ret = rename (OUTDIR NONEXISTANT, OUTDIR FILENAME);
|
||||
printf ("rename 5: ret = %d, errno = %d %s\n", ret, errno,
|
||||
strerrno (errno));
|
||||
stop ();
|
||||
}
|
||||
|
||||
char name[1256];
|
||||
|
||||
int
|
||||
test_unlink ()
|
||||
{
|
||||
int ret;
|
||||
char name[256];
|
||||
char sys[512];
|
||||
|
||||
/* Test unlink */
|
||||
errno = 0;
|
||||
ret = unlink (RENAMED);
|
||||
ret = unlink (OUTDIR RENAMED);
|
||||
printf ("unlink 1: ret = %d, errno = %d %s\n", ret, errno,
|
||||
strerrno (errno));
|
||||
stop ();
|
||||
/* No write access */
|
||||
sprintf (name, "%s/%s", TESTDIR2, FILENAME);
|
||||
sprintf (name, "%s/%s/%s", OUTDIR, TESTDIR2, FILENAME);
|
||||
errno = 0;
|
||||
ret = open (name, O_CREAT | O_RDONLY, S_IRUSR | S_IWUSR);
|
||||
if (ret >= 0)
|
||||
{
|
||||
sprintf (sys, "chmod -w %s", TESTDIR2);
|
||||
sprintf (sys, "chmod -w %s/%s", OUTDIR, TESTDIR2);
|
||||
ret = system (sys);
|
||||
if (!ret)
|
||||
{
|
||||
@ -480,7 +482,7 @@ test_unlink ()
|
||||
stop ();
|
||||
/* pathname doesn't exist */
|
||||
errno = 0;
|
||||
ret = unlink (NONEXISTANT);
|
||||
ret = unlink (OUTDIR NONEXISTANT);
|
||||
printf ("unlink 3: ret = %d, errno = %d %s\n", ret, errno,
|
||||
strerrno (errno));
|
||||
stop ();
|
||||
|
@ -23,7 +23,15 @@ if [target_info exists gdb,nofileio] {
|
||||
|
||||
standard_testfile
|
||||
|
||||
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
|
||||
if {[is_remote host]} {
|
||||
set outdir .
|
||||
} else {
|
||||
set outdir [standard_output_file {}]
|
||||
}
|
||||
|
||||
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
|
||||
executable \
|
||||
[list debug "additional_flags=-DOUTDIR=\"$outdir/\""]] != "" } {
|
||||
untested fileio.exp
|
||||
return -1
|
||||
}
|
||||
@ -35,8 +43,11 @@ if [get_compiler_info] {
|
||||
return -1
|
||||
}
|
||||
|
||||
remote_exec build {sh -xc test\ -r\ dir2.fileio.test\ &&\ chmod\ -f\ +w\ dir2.fileio.test}
|
||||
remote_exec build {sh -xc rm\ -rf\ *.fileio.test}
|
||||
set dir2 [standard_output_file dir2.fileio.test]
|
||||
if {[file exists $dir2] && ![file writable $dir2]} {
|
||||
system "chmod +w $dir2"
|
||||
}
|
||||
system "rm -rf [standard_output_file *.fileio.test]"
|
||||
|
||||
set oldtimeout $timeout
|
||||
set timeout [expr "$timeout + 60"]
|
||||
@ -78,7 +89,7 @@ gdb_test continue \
|
||||
|
||||
gdb_test "continue" ".*" ""
|
||||
|
||||
catch "system \"chmod -f -w nowrt.fileio.test\""
|
||||
catch "system \"chmod -f -w [standard_output_file nowrt.fileio.test]\""
|
||||
|
||||
gdb_test continue \
|
||||
"Continuing\\..*open 5:.*EACCES$stop_msg" \
|
||||
@ -241,11 +252,6 @@ gdb_test continue \
|
||||
"Time(2) returns feasible values"
|
||||
|
||||
gdb_exit
|
||||
# Wait till GDB really exits.
|
||||
sleep 1
|
||||
|
||||
remote_exec build {sh -xc test\ -r\ dir2.fileio.test\ &&\ chmod\ -f\ +w\ dir2.fileio.test}
|
||||
remote_exec build {sh -xc rm\ -rf\ *.fileio.test}
|
||||
|
||||
set timeout $oldtimeout
|
||||
return 0
|
||||
|
Loading…
x
Reference in New Issue
Block a user