-# Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 2008-2013 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# This file is part of the GDB testsuite. It tests the mechanism
# exposing values to Python.
-if $tracelevel then {
- strace $tracelevel
-}
+if { [skip_cplus_tests] } { continue }
-set testfile "py-template"
-set srcfile ${testfile}.cc
-set binfile ${objdir}/${subdir}/${testfile}
+standard_testfile .cc
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable \
{debug c++}] != "" } {
untested "Couldn't compile ${srcfile}"
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
-gdb_test_multiple "python print 23" "verify python support" {
- -re "not supported.*$gdb_prompt $" {
- unsupported "python support is disabled"
- return -1
- }
- -re "$gdb_prompt $" {}
-}
+# Skip all tests if Python scripting is not enabled.
+if { [skip_python_tests] } { continue }
-proc test_template_arg {type} {
- global testfile srcdir subdir srcfile binfile
- if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
+proc test_template_arg {exefile type} {
+ global testfile srcdir subdir srcfile
+ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${exefile}" \
executable \
[list debug c++ additional_flags="-DTYPE=$type"]] != "" } {
untested $type
return -1
}
- gdb_load ${binfile}
+ gdb_load ${exefile}
if ![runto_main ] then {
perror "couldn't run to breakpoint"
return
}
# There is no executable code in main(), so we are where we want to be
- gdb_test "print foo" ""
- gdb_test "python foo = gdb.history(0)" ""
+ gdb_test "print (foo)" ".*"
+ gdb_test_no_output "python foo = gdb.history(0)"
# Replace '*' with '\*' in regex.
regsub -all {\*} $type {\*} t
- gdb_test "python print foo.type.template_argument(0)" $t $type
+ gdb_test "python print (foo.type.template_argument(0))" $t $type
}
-test_template_arg "const int"
-test_template_arg "volatile int"
-test_template_arg "const int &"
-test_template_arg "volatile int &"
-test_template_arg "volatile int * const"
-test_template_arg "volatile int * const *"
-test_template_arg "const int * volatile"
-test_template_arg "const int * volatile * const * volatile *"
+test_template_arg "${binfile}-ci" "const int"
+test_template_arg "${binfile}-vi" "volatile int"
+test_template_arg "${binfile}-cir" "const int &"
+test_template_arg "${binfile}-vir" "volatile int &"
+test_template_arg "${binfile}-vipc" "volatile int * const"
+test_template_arg "${binfile}-vipcp" "volatile int * const *"
+test_template_arg "${binfile}-cipv" "const int * volatile"
+test_template_arg "${binfile}-cipvpcpvp" "const int * volatile * const * volatile *"