Fix parallel testing issues in gdb.guile tests
Commit Message
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
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} {
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.
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!
@@ -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.*" \
@@ -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"
@@ -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} {