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

Doug Evans
2014-08-12T17:15:48Z

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?

At one point I tried to find a place there the testsuite code was
taking care to delete other downloaded files, but couldn't.
Since we've gotten by this long without doing so
[and this is *still* just a hypothesis - I haven't worked with
remote hosts in awhile ...]
I would rather just punt on deleting python files as well,
and document that that is the convention (since for every other
file it already is :-)).
[Why treat python files differently?]

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?