Re: [PATCH] Fix test always passing in python/py-linetable.exp

Sergio Durigan Junior
2014-11-26T21:08:59Z

On Wednesday, November 26 2014, Simon Marchi wrote:

> The following test is found in python/py-linetable.exp:
>
> gdb_test "python print sorted(fset)" \
> "\[20L, 21L, 22L, 24L, 25L, 28L, 29L, 30L, 32L, 33L, 37L, 39L, 40L, 42L, 44L, 45L, 46L\].*" \
> "Test frozen set contains line numbers"
>
> I noticed that it passed when using Python 3, even though it should fail
> because of the missing parentheses for the call print.
>
> There needs to be more escaping of the square brackets. Currently, it is
> interpreted as "any one character from this big list of characters,
> followed by .*". When adding the required amount of backslashes, the
> test starts failing as it should.

Hi Simon,

This fix makes sense to me. Escaping brackets are always a source of
confusion in TCL. Thanks for doing that.

> Moreover, both in Python 2.7 and Python 3.3 the numbers don't have the L
> suffix, so now the test fails because of that. Anybody knows why they
> were there in the first place? I just tested with Python 2.4 and there
> are no Ls.

Yeah, I don't know. My wild guess it that it was a thinko because of
the test just above it:

gdb_test "python list_lines()" \
"L20 A $hex.*L21 A $hex.*L22 A $hex.*L24 A $hex.*L25 A $hex.*L40 A $hex.*L42 A $hex.*L44 A $hex.*L42 A $hex.*L46 A $hex.*" \
"test linetable iterator addr"

Phil?

> gdb/testsuite/ChangeLog:
>
> * gdb.python/py-linetable.exp: Properly escape sorted(fset)
> test expected output. Add parentheses for the call to print.
> Remove L suffix from integers.

Two spaces after periods.

>
> Signed-off-by: Simon Marchi <simon.marchi@ericsson.com>
> ---
> gdb/testsuite/gdb.python/py-linetable.exp | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/gdb/testsuite/gdb.python/py-linetable.exp b/gdb/testsuite/gdb.python/py-linetable.exp
> index 351f380..5d9b262 100644
> --- a/gdb/testsuite/gdb.python/py-linetable.exp
> +++ b/gdb/testsuite/gdb.python/py-linetable.exp
> @@ -60,8 +60,8 @@ gdb_test "python print (lt.line(1))" "None" \
> # Test gdb.Linetable.sourcelines ()
> gdb_py_test_silent_cmd "python fset = lt.source_lines()" \
> "Get all source lines into a frozen set" 0
> -gdb_test "python print sorted(fset)" \
> - "\[20L, 21L, 22L, 24L, 25L, 28L, 29L, 30L, 32L, 33L, 37L, 39L, 40L, 42L, 44L, 45L, 46L\].*" \
> +gdb_test "python print (sorted(fset))" \
> + "\\\[20, 21, 22, 24, 25, 28, 29, 30, 32, 33, 37, 39, 40, 42, 44, 45, 46\\\].*" \
> "Test frozen set contains line numbers"
>
> # Test gdb.Linetable.has_line ()
> --
> 2.1.3

Other than that, LGTM (not an approval).

Cheers,

--
Sergio
GPG key ID: 0x65FC5E36
Please send encrypted e-mail if possible