Fix parallel testing issues in gdb.guile tests

Message ID 1417268843-13652-1-git-send-email-yao@codesourcery.com
State New, archived
Headers

Commit Message

Yao Qi Nov. 29, 2014, 1:47 p.m. UTC
  Some gdb.guile tests such as scm-error.exp copies .scm file to
${subdir}/, how ${subdir} doesn't exist in parallel testing
(outputs/${subdir} exists).

$ make -j3 check TESTS='gdb.guile/scm-section-script.exp gdb.guile/scm-error.exp gdb.guile/scm-frame-args.exp'

ERROR: remote_download to host of ../../../../git/gdb/testsuite/gdb.guile/scm-section-script.scm to gdb.guile/t-scm-section-script.scm: cp: cannot create regular file 'gdb.guile/t-scm-section-script.scm': No such file or directory
ERROR: remote_download to host of ../../../../git/gdb/testsuite/gdb.guile/scm-frame-args.scm to gdb.guile/t-scm-frame-args.scm: cp: cannot create regular file
'gdb.guile/t-scm-frame-args.scm': No such file or directory
ERROR: remote_download to host of ../../../../git/gdb/testsuite/gdb.guile/scm-error-1.scm to gdb.guile/t-scm-error-1.scm: cp: cannot create regular file 'gdb.guile/t-scm-error-1.scm': No such file or directory

This patch is to remove the third argument of gdb_remote_download, so
that gdb_remote_download can return the correct location.

Further, these tests only copy .scm files to a different name.  From what
I can tell from the comments, looks we do this to avoid clobbering file
in in-tree build.  However, if source and dest of copy are the same, the
operation is no-op.  So it makes few sense to copy .scm files to a
different names.  I tried in-tree build/test with this patch, test
result isn't changed.

gdb/testsuite:

2014-11-29  Yao Qi  <yao@codesourcery.com>

	* gdb.guile/scm-error.exp: Remove the third argument to
	gdb_remote_download.
	* gdb.guile/scm-frame-args.exp: Likewise.
	* gdb.guile/scm-section-script.exp: Likewise.
---
 gdb/testsuite/gdb.guile/scm-error.exp          | 8 ++------
 gdb/testsuite/gdb.guile/scm-frame-args.exp     | 5 +----
 gdb/testsuite/gdb.guile/scm-section-script.exp | 5 +----
 3 files changed, 4 insertions(+), 14 deletions(-)
  

Comments

Doug Evans Dec. 2, 2014, 1:35 a.m. UTC | #1
Yao Qi <yao@codesourcery.com> writes:

> Some gdb.guile tests such as scm-error.exp copies .scm file to
> ${subdir}/, how ${subdir} doesn't exist in parallel testing
> (outputs/${subdir} exists).
>
> $ make -j3 check TESTS='gdb.guile/scm-section-script.exp gdb.guile/scm-error.exp gdb.guile/scm-frame-args.exp'
>
> ERROR: remote_download to host of ../../../../git/gdb/testsuite/gdb.guile/scm-section-script.scm to gdb.guile/t-scm-section-script.scm: cp: cannot create regular file 'gdb.guile/t-scm-section-script.scm': No such file or directory
> ERROR: remote_download to host of ../../../../git/gdb/testsuite/gdb.guile/scm-frame-args.scm to gdb.guile/t-scm-frame-args.scm: cp: cannot create regular file
> 'gdb.guile/t-scm-frame-args.scm': No such file or directory
> ERROR: remote_download to host of ../../../../git/gdb/testsuite/gdb.guile/scm-error-1.scm to gdb.guile/t-scm-error-1.scm: cp: cannot create regular file 'gdb.guile/t-scm-error-1.scm': No such file or directory

Hmmm, there's something more going on here that we need to understand.
[The patch may still be ok, but I'd still like to understand
this error.]

I don't see these fails.
The files are going into $obj/gdb/testsuite/gdb.guile,
which does exist.
They *should* go in $obj/gdb/testsuite/outputs/foo, sure.
But how come you're getting this error?

> [...]
> diff --git a/gdb/testsuite/gdb.guile/scm-section-script.exp b/gdb/testsuite/gdb.guile/scm-section-script.exp
> index 0c5e489..a1ebd10 100644
> --- a/gdb/testsuite/gdb.guile/scm-section-script.exp
> +++ b/gdb/testsuite/gdb.guile/scm-section-script.exp
> @@ -35,14 +35,11 @@ standard_testfile
>  
>  # Make this available to gdb before the program starts, it is
>  # automagically loaded by gdb.
> -# Give the file a new name so we don't clobber the real one if
> -# objfile == srcdir.
>  # We also need to do this before compiling the program because the name
>  # of the script file is encoded in the binary.
>  # FIXME: Can we get gdb_remote_download to call standard_output_file for us?

Please remove this FIXME while you're at it.

>  set remote_guile_file [gdb_remote_download host \
> -			   ${srcdir}/${subdir}/${testfile}.scm \
> -			   ${subdir}/t-${testfile}.scm]
> +			   ${srcdir}/${subdir}/${testfile}.scm]
>  
>  if {[build_executable $testfile.exp $testfile $srcfile \
>  	[list debug "additional_flags=-I${srcdir}/../../include -DSCRIPT_FILE=\"$remote_guile_file\""]] == -1} {
  
Yao Qi Dec. 5, 2014, 11:36 a.m. UTC | #2
Doug Evans <xdje42@gmail.com> writes:

> Hmmm, there's something more going on here that we need to understand.
> [The patch may still be ok, but I'd still like to understand
> this error.]
>
> I don't see these fails.
> The files are going into $obj/gdb/testsuite/gdb.guile,
> which does exist.
> They *should* go in $obj/gdb/testsuite/outputs/foo, sure.
> But how come you're getting this error?

$obj/gdb/testsuite/gdb.guile doesn't exist in my setting.  I am hacking
gdb testsuite so that it can be run in a sub directory of 'testsuite/',
such as 'testsuite/sequential-tests', so that it can facilitate 'make clean'
('make clean' can only remove the directory 'sequential-tests').  That
is how this problem is exposed.

>
>> [...]
>> diff --git a/gdb/testsuite/gdb.guile/scm-section-script.exp
>> b/gdb/testsuite/gdb.guile/scm-section-script.exp
>> index 0c5e489..a1ebd10 100644
>> --- a/gdb/testsuite/gdb.guile/scm-section-script.exp
>> +++ b/gdb/testsuite/gdb.guile/scm-section-script.exp
>> @@ -35,14 +35,11 @@ standard_testfile
>>  
>>  # Make this available to gdb before the program starts, it is
>>  # automagically loaded by gdb.
>> -# Give the file a new name so we don't clobber the real one if
>> -# objfile == srcdir.
>>  # We also need to do this before compiling the program because the
>> name
>>  # of the script file is encoded in the binary.
>>  # FIXME: Can we get gdb_remote_download to call
>> standard_output_file for us?
>
> Please remove this FIXME while you're at it.

Sure, FIXME is removed.  I'll push it in.
  
Doug Evans Dec. 5, 2014, 4:20 p.m. UTC | #3
On Fri, Dec 5, 2014 at 3:36 AM, Yao Qi <yao@codesourcery.com> wrote:
> I am hacking
> gdb testsuite so that it can be run in a sub directory of 'testsuite/',
> such as 'testsuite/sequential-tests', so that it can facilitate 'make clean'
> ('make clean' can only remove the directory 'sequential-tests').

Awesome!
  

Patch

diff --git a/gdb/testsuite/gdb.guile/scm-error.exp b/gdb/testsuite/gdb.guile/scm-error.exp
index 3de3dc2..8e33adf 100644
--- a/gdb/testsuite/gdb.guile/scm-error.exp
+++ b/gdb/testsuite/gdb.guile/scm-error.exp
@@ -28,14 +28,10 @@  if { [skip_guile_tests] } { continue }
 
 # Test error while loading .scm.
 
-# Give the files a new name so we don't clobber the real one if
-# objfile == srcdir.
 set remote_guile_file_1 [gdb_remote_download host \
-			     ${srcdir}/${subdir}/${testfile}-1.scm \
-			     ${subdir}/t-${testfile}-1.scm]
+			     ${srcdir}/${subdir}/${testfile}-1.scm]
 set remote_guile_file_2 [gdb_remote_download host \
-			     ${srcdir}/${subdir}/${testfile}-2.scm \
-			     ${subdir}/t-${testfile}-2.scm]
+			     ${srcdir}/${subdir}/${testfile}-2.scm]
 
 gdb_test "source $remote_guile_file_1" \
     "(ERROR: )?In procedure \[+\]: Wrong type: #f.*" \
diff --git a/gdb/testsuite/gdb.guile/scm-frame-args.exp b/gdb/testsuite/gdb.guile/scm-frame-args.exp
index 22ce6fe..cfdc8ff 100644
--- a/gdb/testsuite/gdb.guile/scm-frame-args.exp
+++ b/gdb/testsuite/gdb.guile/scm-frame-args.exp
@@ -28,11 +28,8 @@  if ![gdb_guile_runto_main] {
     return
 }
 
-# Give the file a new name so we don't clobber the real one if
-# objfile == srcdir.
 set remote_guile_file [gdb_remote_download host \
-			   ${srcdir}/${subdir}/${testfile}.scm \
-			   ${subdir}/t-${testfile}.scm]
+			   ${srcdir}/${subdir}/${testfile}.scm]
 
 gdb_scm_load_file "$remote_guile_file" "load script"
 
diff --git a/gdb/testsuite/gdb.guile/scm-section-script.exp b/gdb/testsuite/gdb.guile/scm-section-script.exp
index 0c5e489..a1ebd10 100644
--- a/gdb/testsuite/gdb.guile/scm-section-script.exp
+++ b/gdb/testsuite/gdb.guile/scm-section-script.exp
@@ -35,14 +35,11 @@  standard_testfile
 
 # Make this available to gdb before the program starts, it is
 # automagically loaded by gdb.
-# Give the file a new name so we don't clobber the real one if
-# objfile == srcdir.
 # We also need to do this before compiling the program because the name
 # of the script file is encoded in the binary.
 # FIXME: Can we get gdb_remote_download to call standard_output_file for us?
 set remote_guile_file [gdb_remote_download host \
-			   ${srcdir}/${subdir}/${testfile}.scm \
-			   ${subdir}/t-${testfile}.scm]
+			   ${srcdir}/${subdir}/${testfile}.scm]
 
 if {[build_executable $testfile.exp $testfile $srcfile \
 	[list debug "additional_flags=-I${srcdir}/../../include -DSCRIPT_FILE=\"$remote_guile_file\""]] == -1} {