Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [PATCH] Change method of loading .py files in Python tests
@ 2017-01-21  4:52 Simon Marchi
  2017-01-26 16:33 ` Pedro Alves
  0 siblings, 1 reply; 4+ messages in thread
From: Simon Marchi @ 2017-01-21  4:52 UTC (permalink / raw)
  To: gdb-patches; +Cc: Simon Marchi

With my debug build of Python (--with-pydebug), many tests fails because
of the same issue.  Python scripts are loaded by the tests using this
pattern:

  (gdb) python exec (open ('file.py').read ())

This causes Python to output this warning:

  __main__:1: ResourceWarning: unclosed file <_io.TextIOWrapper name='file.py' mode='r' encoding='ANSI_X3.4-1968'>

and the test to fail because of that extra output.  Instead of using the
open + read + exec trick which leaks the file and causes the warning,
why not just source the files?

  (gdb) source file.py

This patch changes this, and standardizes the test names of the tests I
touched to "load python file" (some of them were empty, others were
overly complicated).

gdb/testsuite/ChangeLog:

	* gdb.python/py-bad-printers.exp: Load python file using "source".
	* gdb.python/py-events.exp: Likewise.
	* gdb.python/py-evsignal.exp: Likewise.
	* gdb.python/py-evthreads.exp: Likewise.
	* gdb.python/py-frame-args.exp: Likewise.
	* gdb.python/py-framefilter-invalidarg.exp: Likewise.
	* gdb.python/py-framefilter-mi.exp: Likewise.
	* gdb.python/py-framefilter.exp: Likewise.
	* gdb.python/py-mi.exp: Likewise.
	* gdb.python/py-pp-maint.exp: Likewise.
	* gdb.python/py-pp-registration.exp: Likewise.
	* gdb.python/py-prettyprint.exp: Likewise.
	(run_lang_tests): Likewise.
	* gdb.python/py-typeprint.exp: Likewise.
---
 gdb/testsuite/gdb.python/py-bad-printers.exp           | 3 +--
 gdb/testsuite/gdb.python/py-events.exp                 | 2 +-
 gdb/testsuite/gdb.python/py-evsignal.exp               | 2 +-
 gdb/testsuite/gdb.python/py-evthreads.exp              | 2 +-
 gdb/testsuite/gdb.python/py-frame-args.exp             | 3 +--
 gdb/testsuite/gdb.python/py-framefilter-invalidarg.exp | 3 +--
 gdb/testsuite/gdb.python/py-framefilter-mi.exp         | 3 +--
 gdb/testsuite/gdb.python/py-framefilter.exp            | 6 ++----
 gdb/testsuite/gdb.python/py-mi.exp                     | 2 +-
 gdb/testsuite/gdb.python/py-pp-maint.exp               | 2 +-
 gdb/testsuite/gdb.python/py-pp-registration.exp        | 3 +--
 gdb/testsuite/gdb.python/py-prettyprint.exp            | 6 ++----
 gdb/testsuite/gdb.python/py-typeprint.exp              | 3 +--
 13 files changed, 15 insertions(+), 25 deletions(-)

diff --git a/gdb/testsuite/gdb.python/py-bad-printers.exp b/gdb/testsuite/gdb.python/py-bad-printers.exp
index ecc259edac..0e39763791 100644
--- a/gdb/testsuite/gdb.python/py-bad-printers.exp
+++ b/gdb/testsuite/gdb.python/py-bad-printers.exp
@@ -35,8 +35,7 @@ if ![runto_main ] then {
 set remote_python_file [gdb_remote_download host \
 			    ${srcdir}/${subdir}/${testfile}.py]
 
-gdb_test_no_output "python exec (open ('${remote_python_file}').read ())" \
-    "load python file"
+gdb_test_no_output "source ${remote_python_file}" "load python file"
 
 gdb_breakpoint [gdb_get_line_number "break here"]
 gdb_continue_to_breakpoint "break here" ".* break here .*"
diff --git a/gdb/testsuite/gdb.python/py-events.exp b/gdb/testsuite/gdb.python/py-events.exp
index 12936f3609..16ea110737 100644
--- a/gdb/testsuite/gdb.python/py-events.exp
+++ b/gdb/testsuite/gdb.python/py-events.exp
@@ -43,7 +43,7 @@ clean_restart ${testfile}
 
 if { [skip_python_tests] } { continue }
 
-gdb_test_no_output "python exec (open ('${pyfile}').read ())" ""
+gdb_test_no_output "source ${pyfile}" "load python file"
 
 gdb_test "test-objfile-events" "Object file events registered."
 
diff --git a/gdb/testsuite/gdb.python/py-evsignal.exp b/gdb/testsuite/gdb.python/py-evsignal.exp
index 65a558ca5f..8a39f4eacb 100644
--- a/gdb/testsuite/gdb.python/py-evsignal.exp
+++ b/gdb/testsuite/gdb.python/py-evsignal.exp
@@ -31,7 +31,7 @@ clean_restart $testfile
 
 if { [skip_python_tests] } { continue }
 
-gdb_test_no_output "python exec (open ('${pyfile}').read ())" ""
+gdb_test_no_output "source ${pyfile}" "load python file"
 
 gdb_test "test-events" "Event testers registered."
 gdb_test_no_output "set non-stop on"
diff --git a/gdb/testsuite/gdb.python/py-evthreads.exp b/gdb/testsuite/gdb.python/py-evthreads.exp
index 1ebab40318..64b2af5fef 100644
--- a/gdb/testsuite/gdb.python/py-evthreads.exp
+++ b/gdb/testsuite/gdb.python/py-evthreads.exp
@@ -36,7 +36,7 @@ clean_restart $testfile
 
 if { [skip_python_tests] } { continue }
 
-gdb_test_no_output "python exec (open ('${pyfile}').read ())" ""
+gdb_test_no_output "source ${pyfile}" "load python file"
 
 gdb_test "test-events" "Event testers registered."
 gdb_test_no_output "set non-stop on"
diff --git a/gdb/testsuite/gdb.python/py-frame-args.exp b/gdb/testsuite/gdb.python/py-frame-args.exp
index 91f200f4f3..08f2171633 100644
--- a/gdb/testsuite/gdb.python/py-frame-args.exp
+++ b/gdb/testsuite/gdb.python/py-frame-args.exp
@@ -29,8 +29,7 @@ if ![runto_main] {
 set remote_python_file [gdb_remote_download host \
 			    ${srcdir}/${subdir}/${testfile}.py]
 
-gdb_test_no_output "python exec (open ('${remote_python_file}').read ())" \
-    "python exec (open ('[file tail ${remote_python_file}]').read ())"
+gdb_test_no_output "source ${remote_python_file}" "load python file"
 
 gdb_breakpoint [gdb_get_line_number "break-here"]
 gdb_continue_to_breakpoint "break-here" ".* break-here .*"
diff --git a/gdb/testsuite/gdb.python/py-framefilter-invalidarg.exp b/gdb/testsuite/gdb.python/py-framefilter-invalidarg.exp
index bf9d0767ad..881ebe4ed8 100644
--- a/gdb/testsuite/gdb.python/py-framefilter-invalidarg.exp
+++ b/gdb/testsuite/gdb.python/py-framefilter-invalidarg.exp
@@ -61,7 +61,6 @@ gdb_test_no_output "set python print-stack full" \
 # Load global frame-filters
 set remote_python_file [gdb_remote_download host \
 			    ${srcdir}/${subdir}/${testfile}.py]
-gdb_test_no_output "python exec (open ('${remote_python_file}').read ())" \
-    "load python file"
+gdb_test_no_output "source ${remote_python_file}" "load python file"
 
 gdb_test "bt" " in niam \\(argc=<error reading variable: dwarf expression stack underflow>, argv=0x\[0-9a-f\]+\\) at py-framefilter-invalidarg.c:\[0-9\]+" "bt full with filters"
diff --git a/gdb/testsuite/gdb.python/py-framefilter-mi.exp b/gdb/testsuite/gdb.python/py-framefilter-mi.exp
index eef7a1ea8e..91e07dd10a 100644
--- a/gdb/testsuite/gdb.python/py-framefilter-mi.exp
+++ b/gdb/testsuite/gdb.python/py-framefilter-mi.exp
@@ -46,8 +46,7 @@ mi_runto main
 
 set remote_python_file [gdb_remote_download host ${srcdir}/${subdir}/${pyfile}]
 
-mi_gdb_test "python exec (open ('${remote_python_file}').read ())" ".*\\^done." \
-    "Load python file"
+mi_gdb_test "source ${remote_python_file}" ".*\\^done." "load python file"
 
 # Multiple blocks test
 mi_continue_to_line [gdb_get_line_number {Inner test breakpoint} ${srcfile}] \
diff --git a/gdb/testsuite/gdb.python/py-framefilter.exp b/gdb/testsuite/gdb.python/py-framefilter.exp
index 76184c0ce0..bad4d7cc19 100644
--- a/gdb/testsuite/gdb.python/py-framefilter.exp
+++ b/gdb/testsuite/gdb.python/py-framefilter.exp
@@ -63,8 +63,7 @@ gdb_test_no_output "set python print-stack full" \
 # Load global frame-filters
 set remote_python_file [gdb_remote_download host \
 			    ${srcdir}/${subdir}/${testfile}.py]
-gdb_test_no_output "python exec (open ('${remote_python_file}').read ())" \
-    "load python file"
+gdb_test_no_output "source ${remote_python_file}" "load python file"
 
 gdb_breakpoint [gdb_get_line_number "Backtrace end breakpoint"]
 gdb_breakpoint [gdb_get_line_number "Inner test breakpoint"]
@@ -253,8 +252,7 @@ gdb_test_no_output "set python print-stack full" \
 # Load global frame-filters
 set remote_python_file [gdb_remote_download host \
 			    ${srcdir}/${subdir}/${testfile}.py]
-gdb_test_no_output "python exec (open ('${remote_python_file}').read ())" \
-    "load python file for no debuginfo tests"
+gdb_test_no_output "source ${remote_python_file}" "load python file for no debuginfo tests"
 
 # Disable Reverse
 gdb_test_no_output "disable frame-filter global Reverse" \
diff --git a/gdb/testsuite/gdb.python/py-mi.exp b/gdb/testsuite/gdb.python/py-mi.exp
index 920e9d678e..736dc7a0d6 100644
--- a/gdb/testsuite/gdb.python/py-mi.exp
+++ b/gdb/testsuite/gdb.python/py-mi.exp
@@ -44,7 +44,7 @@ mi_runto main
 
 set remote_python_file [gdb_remote_download host ${srcdir}/${subdir}/${pyfile}]
 
-mi_gdb_test "python exec (open ('${remote_python_file}').read ())" ""
+mi_gdb_test "source ${remote_python_file}" "load python file"
 
 mi_continue_to_line [gdb_get_line_number {MI breakpoint here} ${srcfile}] \
   "step to breakpoint"
diff --git a/gdb/testsuite/gdb.python/py-pp-maint.exp b/gdb/testsuite/gdb.python/py-pp-maint.exp
index ba0d0f04fe..6ca0ee6b56 100644
--- a/gdb/testsuite/gdb.python/py-pp-maint.exp
+++ b/gdb/testsuite/gdb.python/py-pp-maint.exp
@@ -43,7 +43,7 @@ gdb_test "continue" ".*Breakpoint.*"
 
 set python_file ${srcdir}/${subdir}/${testfile}.py
 
-gdb_test_no_output "python exec (open ('${python_file}').read ())" ""
+gdb_test_no_output "source ${python_file}" "load python file"
 
 gdb_test "info pretty-printer" \
     {.*function_lookup_test.*pp-test.*struct ss.*}
diff --git a/gdb/testsuite/gdb.python/py-pp-registration.exp b/gdb/testsuite/gdb.python/py-pp-registration.exp
index def44160ac..0bd6d871db 100644
--- a/gdb/testsuite/gdb.python/py-pp-registration.exp
+++ b/gdb/testsuite/gdb.python/py-pp-registration.exp
@@ -46,8 +46,7 @@ proc prepare_test { } {
 	return 0
     }
 
-    gdb_test_no_output "python exec (open ('${remote_python_file}').read ())" \
-	"read file"
+    gdb_test_no_output "source ${remote_python_file}" "read file"
 
     gdb_test_no_output "py progspace = gdb.current_progspace()"
     gdb_test_no_output "py my_pretty_printer1 = build_pretty_printer1()"
diff --git a/gdb/testsuite/gdb.python/py-prettyprint.exp b/gdb/testsuite/gdb.python/py-prettyprint.exp
index 2ba2a8f6ce..b0a9e32df6 100644
--- a/gdb/testsuite/gdb.python/py-prettyprint.exp
+++ b/gdb/testsuite/gdb.python/py-prettyprint.exp
@@ -56,8 +56,7 @@ proc run_lang_tests {exefile lang} {
     set remote_python_file [gdb_remote_download host \
 				${srcdir}/${subdir}/${testfile}.py]
 
-    gdb_test_no_output "python exec (open ('${remote_python_file}').read ())" \
-	"python exec (open ('[file tail ${remote_python_file}]').read ())"
+    gdb_test_no_output "source ${remote_python_file}" "load python file"
     
     gdb_test "print ss" " = a=< a=<1> b=<$hex>> b=< a=<2> b=<$hex>>"
     gdb_test "print ssa\[1\]" " = a=< a=<5> b=<$hex>> b=< a=<6> b=<$hex>>"
@@ -137,8 +136,7 @@ if ![runto_main ] then {
 set remote_python_file [gdb_remote_download host \
 			    ${srcdir}/${subdir}/${testfile}.py]
 
-gdb_test_no_output "python exec (open ('${remote_python_file}').read ())" \
-    "python exec (open ('[file tail ${remote_python_file}]').read ())"
+gdb_test_no_output "source ${remote_python_file}" "load python file"
 
 gdb_breakpoint [gdb_get_line_number "eval-break"]
 gdb_continue_to_breakpoint "eval-break" ".* eval-break .*"
diff --git a/gdb/testsuite/gdb.python/py-typeprint.exp b/gdb/testsuite/gdb.python/py-typeprint.exp
index 73db732c3d..28e505331f 100644
--- a/gdb/testsuite/gdb.python/py-typeprint.exp
+++ b/gdb/testsuite/gdb.python/py-typeprint.exp
@@ -29,8 +29,7 @@ if { [skip_python_tests] } { continue }
 set remote_python_file [gdb_remote_download host \
 			    ${srcdir}/${subdir}/${testfile}.py]
 
-gdb_test_no_output "python exec (open ('${remote_python_file}').read ())" \
-    "python exec (open ('[file tail ${remote_python_file}]').read ())"
+gdb_test_no_output "source ${remote_python_file}" "load python file"
 
 cp_test_ptype_class s "basic test" "class" "templ<string>" {
     { field public "T x;" }
-- 
2.11.0


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] Change method of loading .py files in Python tests
  2017-01-21  4:52 [PATCH] Change method of loading .py files in Python tests Simon Marchi
@ 2017-01-26 16:33 ` Pedro Alves
  2017-01-26 21:13   ` Simon Marchi
  2017-01-27  4:33   ` Joel Brobecker
  0 siblings, 2 replies; 4+ messages in thread
From: Pedro Alves @ 2017-01-26 16:33 UTC (permalink / raw)
  To: Simon Marchi, gdb-patches

On 01/21/2017 04:52 AM, Simon Marchi wrote:
> With my debug build of Python (--with-pydebug), many tests fails because
> of the same issue.  Python scripts are loaded by the tests using this
> pattern:
> 
>   (gdb) python exec (open ('file.py').read ())
> 
> This causes Python to output this warning:
> 
>   __main__:1: ResourceWarning: unclosed file <_io.TextIOWrapper name='file.py' mode='r' encoding='ANSI_X3.4-1968'>
> 
> and the test to fail because of that extra output.  Instead of using the
> open + read + exec trick which leaks the file and causes the warning,
> why not just source the files?
> 
>   (gdb) source file.py

Maybe historical.  ISTR that "source" didn't read in python
files automatically originally.  But I may easily be misremembering.

> 
> This patch changes this, and standardizes the test names of the tests I
> touched to "load python file" (some of them were empty, others were
> overly complicated).

Guess we could have:

proc gdb_load_python_file { pyfile {test "load python file"} } {
  gdb_test_no_output "source $pyfile" $test
}

But what you have LGTM.

> -gdb_test_no_output "python exec (open ('${remote_python_file}').read ())" \
> -    "load python file for no debuginfo tests"
> +gdb_test_no_output "source ${remote_python_file}" "load python file for no debuginfo tests"

Long line?

Thanks,
Pedro Alves


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] Change method of loading .py files in Python tests
  2017-01-26 16:33 ` Pedro Alves
@ 2017-01-26 21:13   ` Simon Marchi
  2017-01-27  4:33   ` Joel Brobecker
  1 sibling, 0 replies; 4+ messages in thread
From: Simon Marchi @ 2017-01-26 21:13 UTC (permalink / raw)
  To: Pedro Alves; +Cc: gdb-patches

On 2017-01-26 11:33, Pedro Alves wrote:
> On 01/21/2017 04:52 AM, Simon Marchi wrote:
>> With my debug build of Python (--with-pydebug), many tests fails 
>> because
>> of the same issue.  Python scripts are loaded by the tests using this
>> pattern:
>> 
>>   (gdb) python exec (open ('file.py').read ())
>> 
>> This causes Python to output this warning:
>> 
>>   __main__:1: ResourceWarning: unclosed file <_io.TextIOWrapper 
>> name='file.py' mode='r' encoding='ANSI_X3.4-1968'>
>> 
>> and the test to fail because of that extra output.  Instead of using 
>> the
>> open + read + exec trick which leaks the file and causes the warning,
>> why not just source the files?
>> 
>>   (gdb) source file.py
> 
> Maybe historical.  ISTR that "source" didn't read in python
> files automatically originally.  But I may easily be misremembering.
> 
>> 
>> This patch changes this, and standardizes the test names of the tests 
>> I
>> touched to "load python file" (some of them were empty, others were
>> overly complicated).
> 
> Guess we could have:
> 
> proc gdb_load_python_file { pyfile {test "load python file"} } {
>   gdb_test_no_output "source $pyfile" $test
> }
> 
> But what you have LGTM.
> 
>> -gdb_test_no_output "python exec (open ('${remote_python_file}').read 
>> ())" \
>> -    "load python file for no debuginfo tests"
>> +gdb_test_no_output "source ${remote_python_file}" "load python file 
>> for no debuginfo tests"
> 
> Long line?

Thanks, pushed with that fixed.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] Change method of loading .py files in Python tests
  2017-01-26 16:33 ` Pedro Alves
  2017-01-26 21:13   ` Simon Marchi
@ 2017-01-27  4:33   ` Joel Brobecker
  1 sibling, 0 replies; 4+ messages in thread
From: Joel Brobecker @ 2017-01-27  4:33 UTC (permalink / raw)
  To: Pedro Alves; +Cc: Simon Marchi, gdb-patches

> > With my debug build of Python (--with-pydebug), many tests fails because
> > of the same issue.  Python scripts are loaded by the tests using this
> > pattern:
> > 
> >   (gdb) python exec (open ('file.py').read ())
> > 
> > This causes Python to output this warning:
> > 
> >   __main__:1: ResourceWarning: unclosed file <_io.TextIOWrapper name='file.py' mode='r' encoding='ANSI_X3.4-1968'>
> > 
> > and the test to fail because of that extra output.  Instead of using the
> > open + read + exec trick which leaks the file and causes the warning,
> > why not just source the files?
> > 
> >   (gdb) source file.py
> 
> Maybe historical.  ISTR that "source" didn't read in python
> files automatically originally.  But I may easily be misremembering.

It is historical. At the beginning the idea of being able to source
a Python script using "source" generated some disagreements, and we
had to discuss a number of options before we could settle on a design
that we could agree on.

-- 
Joel


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2017-01-27  4:33 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-21  4:52 [PATCH] Change method of loading .py files in Python tests Simon Marchi
2017-01-26 16:33 ` Pedro Alves
2017-01-26 21:13   ` Simon Marchi
2017-01-27  4:33   ` Joel Brobecker

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox