[testsuite] Fix running in-src-dir in the same directory twice

Message ID 20140828211010.GA4960@host2.jankratochvil.net
State New, archived
Headers

Commit Message

Jan Kratochvil Aug. 28, 2014, 9:10 p.m. UTC
  Hi,

./configure; make; cd gdb; make check; make check
->
Running ./gdb.base/argv0-symlink-dirlink/a2-run.exp ...
Running ./gdb.base/argv0-symlink-dirlink/advance.exp ...
Running ./gdb.base/argv0-symlink-dirlink/argv0-symlink-dirlink/a2-run.exp ...
Running ./gdb.base/argv0-symlink-dirlink/argv0-symlink-dirlink/advance.exp ...
Running ./gdb.base/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/double-prompt-target-event-error.exp ...

particularly I was testing it with:
cp -a testsuite/ testsuite-clean;make -C testsuite/ -k -j1 check;cp -a testsuite/ testsuite-pass1;make -C testsuite/ -k -j1 check;cp -a testsuite/ testsuite-pass2

(The second run still has many FAILs due to deleted source files but that is
a different patch going to be posted.)


Thanks,
Jan
gdb/testsuite/
2014-08-28  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix running in-src-dir testsuite in the same directory twice.
	* gdb.base/argv0-symlink.exp: Delete $dirlink.
  

Comments

Doug Evans Aug. 28, 2014, 9:53 p.m. UTC | #1
Jan Kratochvil writes:
 > Hi,
 > 
 > ./configure; make; cd gdb; make check; make check
 > ->
 > Running ./gdb.base/argv0-symlink-dirlink/a2-run.exp ...
 > Running ./gdb.base/argv0-symlink-dirlink/advance.exp ...
 > Running ./gdb.base/argv0-symlink-dirlink/argv0-symlink-dirlink/a2-run.exp ...
 > Running ./gdb.base/argv0-symlink-dirlink/argv0-symlink-dirlink/advance.exp ...
 > Running ./gdb.base/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/argv0-symlink-dirlink/double-prompt-target-event-error.exp ...
 > 
 > particularly I was testing it with:
 > cp -a testsuite/ testsuite-clean;make -C testsuite/ -k -j1 check;cp -a testsuite/ testsuite-pass1;make -C testsuite/ -k -j1 check;cp -a testsuite/ testsuite-pass2
 > 
 > (The second run still has many FAILs due to deleted source files but that is
 > a different patch going to be posted.)
 > 
 > 
 > Thanks,
 > Jan
 > gdb/testsuite/
 > 2014-08-28  Jan Kratochvil  <jan.kratochvil@redhat.com>
 > 
 > 	Fix running in-src-dir testsuite in the same directory twice.
 > 	* gdb.base/argv0-symlink.exp: Delete $dirlink.
 > 
 > diff --git a/gdb/testsuite/gdb.base/argv0-symlink.exp b/gdb/testsuite/gdb.base/argv0-symlink.exp
 > index d849b4c..39aab9c 100644
 > --- a/gdb/testsuite/gdb.base/argv0-symlink.exp
 > +++ b/gdb/testsuite/gdb.base/argv0-symlink.exp
 > @@ -59,6 +59,7 @@ set dirlink "${testfile}-dirlink"
 >  remote_exec host "rm -f [standard_output_file $dirlink]"
 >  set status [remote_exec host "ln -sf . [standard_output_file $dirlink]"]
 >  if {[lindex $status 0] != 0} {
 > +    remote_exec host "rm -f [standard_output_file $dirlink]"
 >      unsupported "$test (host does not support symbolic links)"
 >      return 0
 >  }
 > @@ -66,6 +67,7 @@ if {[lindex $status 0] != 0} {
 >  clean_restart "$dirlink/$filelink"
 >  
 >  if ![runto_main] {
 > +    remote_exec host "rm -f [standard_output_file $dirlink]"
 >      untested "could not run to main"
 >      return -1
 >  }
 > @@ -79,3 +81,8 @@ if ![is_remote target] {
 >  }
 >  gdb_test {print argv[0]} "/$dirlink/$filelink\"" $test
 >  gdb_test "info inferiors" "/$lastdir/$filelink *" "$test for info inferiors"
 > +
 > +# Stale directory symlink would deadlock runtest:
 > +# Running ./gdb.base/argv0-symlink-dirlink/a2-run.exp ...
 > +# Running ./gdb.base/argv0-symlink-dirlink/argv0-symlink-dirlink/a2-run.exp ...
 > +remote_exec host "rm -f [standard_output_file $dirlink]"

Tests can prematurely terminate for various unanticipatable reasons.
Can this be solved by making sure any possibly hazardous left
over files are cleaned up at start?
  
Jan Kratochvil Aug. 29, 2014, 12:49 p.m. UTC | #2
On Thu, 28 Aug 2014 23:53:59 +0200, Doug Evans wrote:
> Tests can prematurely terminate for various unanticipatable reasons.
> Can this be solved by making sure any possibly hazardous left
> over files are cleaned up at start?

Do you mean start of argv0-symlink.exp?  There was/is already:
	remote_file host delete [standard_output_file $filelink]
	set status [remote_exec host "ln -sf ${testfile} [standard_output_file $filelink]"]

Or do you mean moving this 'remote_file host delete' to the very start of the
testcase - that is just moving it before [build_executable]?

I do not know if there is a possibility to register some cleanup function for
the current testcase.  But also I do not know how the testcase could end by
a different codepath than those I protected in the patch.


Thanks,
Jan
  
Jan Kratochvil Aug. 29, 2014, 1:13 p.m. UTC | #3
On Thu, 28 Aug 2014 23:53:59 +0200, Doug Evans wrote:
> Tests can prematurely terminate for various unanticipatable reasons.
> Can this be solved by making sure any possibly hazardous left
> over files are cleaned up at start?

I think it would be best to modify the testcase so that the '. -> symlink'
is made in a special subdirectory so that the *.exp files loop cannot occur
even if the symlink is left there.

Besides that I think it is primarily a dejagnu/runtest bug but I did not file
it.


Jan
  

Patch

diff --git a/gdb/testsuite/gdb.base/argv0-symlink.exp b/gdb/testsuite/gdb.base/argv0-symlink.exp
index d849b4c..39aab9c 100644
--- a/gdb/testsuite/gdb.base/argv0-symlink.exp
+++ b/gdb/testsuite/gdb.base/argv0-symlink.exp
@@ -59,6 +59,7 @@  set dirlink "${testfile}-dirlink"
 remote_exec host "rm -f [standard_output_file $dirlink]"
 set status [remote_exec host "ln -sf . [standard_output_file $dirlink]"]
 if {[lindex $status 0] != 0} {
+    remote_exec host "rm -f [standard_output_file $dirlink]"
     unsupported "$test (host does not support symbolic links)"
     return 0
 }
@@ -66,6 +67,7 @@  if {[lindex $status 0] != 0} {
 clean_restart "$dirlink/$filelink"
 
 if ![runto_main] {
+    remote_exec host "rm -f [standard_output_file $dirlink]"
     untested "could not run to main"
     return -1
 }
@@ -79,3 +81,8 @@  if ![is_remote target] {
 }
 gdb_test {print argv[0]} "/$dirlink/$filelink\"" $test
 gdb_test "info inferiors" "/$lastdir/$filelink *" "$test for info inferiors"
+
+# Stale directory symlink would deadlock runtest:
+# Running ./gdb.base/argv0-symlink-dirlink/a2-run.exp ...
+# Running ./gdb.base/argv0-symlink-dirlink/argv0-symlink-dirlink/a2-run.exp ...
+remote_exec host "rm -f [standard_output_file $dirlink]"