Re: [PATCH] Copy .py files to remote host

Stan Shebs
2014-08-12T23:57:00Z

On 8/12/14, 10:15 AM, Doug Evans wrote:
> Yao Qi writes:
> > Some gdb.python/*.exp tests fail because the .py files aren't copied
> > to the (remote) host. This patch is to copy needed .py files to host.
> > Most of gdb.python/*.exp tests do this.
> >
> > gdb/testsuite:
> >
> > 2014-08-12 Yao Qi <yao@codesourcery.com>
> >
> > * gdb.python/py-finish-breakpoint.exp: Copy .py file to host.
> > Delete the .py file on host when test is finished.
> > * gdb.python/py-finish-breakpoint2.exp: Likewise.
> > * gdb.python/python.exp: Likewise. Use .py file on the host
> > instead of the build.
> > [...]
> > ---
> > gdb/testsuite/gdb.python/py-finish-breakpoint.exp | 15 ++++++++++++---
> > gdb/testsuite/gdb.python/py-finish-breakpoint2.exp | 6 +++++-
> > gdb/testsuite/gdb.python/python.exp | 13 +++++++++++--
> > 3 files changed, 28 insertions(+), 6 deletions(-)
> >
> > diff --git a/gdb/testsuite/gdb.python/py-finish-breakpoint.exp b/gdb/testsuite/gdb.python/py-finish-breakpoint.exp
> > index 43d0d81..45aa231 100644
> > --- a/gdb/testsuite/gdb.python/py-finish-breakpoint.exp
> > +++ b/gdb/testsuite/gdb.python/py-finish-breakpoint.exp
> > @@ -53,9 +53,6 @@ if { $gdb_py_is_py24 == 1 } {
> > return 0
> > }
> >
> > -set python_file ${srcdir}/${subdir}/${testfile}.py
> > -
> > -
> > # Skip all tests if Python scripting is not enabled.
> > if { [skip_python_tests] } { continue }
> >
> > @@ -71,6 +68,9 @@ if ![runto_main] then {
> > return 0
> > }
> >
> > +set python_file [gdb_remote_download host \
> > + ${srcdir}/${subdir}/${testfile}.py]
> > +
> > gdb_test_no_output "set confirm off" "disable confirmation"
> > gdb_test "source $python_file" "Python script imported.*" \
> > "import python scripts"
> > @@ -115,6 +115,7 @@ gdb_test "source $python_file" "Python script imported.*" \
> > set cond_line [gdb_get_line_number "Condition Break."]
> >
> > if ![runto_main] then {
> > + remote_file host delete ${python_file}
> > fail "Cannot run to main."
> > return 0
> > }
> > @@ -141,6 +142,7 @@ gdb_test "source $python_file" "Python script imported.*" \
> > "import python scripts"
> >
> > if ![runto call_longjmp_1] then {
> > + remote_file host delete ${python_file}
> > perror "couldn't run to breakpoint call_longjmp"
> > continue
> > }
> > [...]
>
> Hi.
>
> I still have an outstanding question on this topic,
> and before this gets checked in I'd like to get it resolved.
> Do we delete other files downloaded to the remote target?

Going by instances of remote_file delete in the testsuite,
it's at least semi-standard to do so. It certainly reduces
the chances of confusion for any functionality that is based
on searching for a matching file to load/process.

> If we really did want to fully clean up after each test,
> and we should first establish that that is indeed what we want to do,
> instead of filling every test exit point with explicit code to delete
> only one kind of downloaded file, how about instead keep a list of all
> downloaded files and call a routine to delete the files in that list
> from some central cleanup point?

I could go for that. The existing deletions seem to be in a variety
of styles, and it would be useful to have standard failure handling
and such.

Stan
stan@codesourcery.com