aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2013-08-23 12:18:39 -0600
committerTom Tromey <tromey@redhat.com>2013-11-04 11:02:08 -0700
commitb44b82afd9ec85bff726e294b0d0065efb5179e0 (patch)
tree52339fdfe89268df470e3d472625dcae3aa52e10
parent59b28c5dd267407c63968cb18d9f3c5aa78fa2ba (diff)
downloadgdb-b44b82afd9ec85bff726e294b0d0065efb5179e0.zip
gdb-b44b82afd9ec85bff726e294b0d0065efb5179e0.tar.gz
gdb-b44b82afd9ec85bff726e294b0d0065efb5179e0.tar.bz2
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.
-rw-r--r--gdb/testsuite/ChangeLog9
-rw-r--r--gdb/testsuite/gdb.base/fileio.c54
-rw-r--r--gdb/testsuite/gdb.base/fileio.exp24
3 files changed, 52 insertions, 35 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 7f076f8..c913cbb 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,5 +1,14 @@
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
defines.
* gdb.base/checkpoint.exp: Define PI_TXT and COPY1_TXT during
diff --git a/gdb/testsuite/gdb.base/fileio.c b/gdb/testsuite/gdb.base/fileio.c
index 329522f..4926c05 100644
--- a/gdb/testsuite/gdb.base/fileio.c
+++ b/gdb/testsuite/gdb.base/fileio.c
@@ -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 ();
diff --git a/gdb/testsuite/gdb.base/fileio.exp b/gdb/testsuite/gdb.base/fileio.exp
index ded043f..b9dfb38 100644
--- a/gdb/testsuite/gdb.base/fileio.exp
+++ b/gdb/testsuite/gdb.base/fileio.exp
@@ -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