# Copyright (C) 2008, 2009, 2010, 2011 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
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# This file is part of the GDB testsuite.  It tests the mechanism
# exposing values to Python.

if $tracelevel then {
    strace $tracelevel
}

load_lib gdb-python.exp

set testfile "python"
set srcfile  ${testfile}.c
set srcfile1  ${testfile}-1.c
set binfile  ${objdir}/${subdir}/${testfile}

if { [gdb_compile "${srcdir}/${subdir}/${srcfile} ${srcdir}/${subdir}/${srcfile1}" \
	  ${binfile} executable {debug}] != "" } {
    untested "Could not compile $binfile."
    return -1
}

# Start with a fresh gdb.
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir

# Skip all tests if Python scripting is not enabled.
if { [skip_python_tests] } { continue }

gdb_test_multiple "python print 23" "verify python support" {
    -re "not supported.*$gdb_prompt $"	{
      unsupported "python support is disabled"

      # If Python is not supported, verify that sourcing a python script
      # causes an error.
      gdb_test "source $srcdir/$subdir/source2.py" "Error in sourced command file:.*"
      return -1
    }
    -re "$gdb_prompt $"	{}
}

gdb_py_test_multiple "multi-line python command" \
  "python" "" \
  "print 23" "" \
  "end" "23"

gdb_py_test_multiple "show python command" \
  "define zzq" "Type commands for definition of .* just \"end\"\\.*" \
  "python" "" \
  "print 23" "" \
  "end" "" \
  "end" "" \
  "show user zzq" "User command \"zzq\":.*  python.*print 23.*  end"

gdb_py_test_multiple "indented multi-line python command" \
  "python" "" \
  "def foo ():" "" \
  "  print 'hello, world!'" "" \
  "foo ()" "" \
  "end" "hello, world!"

gdb_test "source $srcdir/$subdir/source2.py" "yes"

gdb_test "python print gdb.current_objfile()" "None"
gdb_test "python print gdb.objfiles()" "\\\[\\\]"

# Test http://bugs.python.org/issue4434 workaround in configure.ac
gdb_test "python import itertools; print 'IMPOR'+'TED'" "IMPORTED" "pythonX.Y/lib-dynload/*.so"

gdb_test_no_output \
    "python x = gdb.execute('printf \"%d\", 23', to_string = True)"
gdb_test "python print x" "23"

# Test post_event.
gdb_py_test_multiple "post event insertion" \
  "python" "" \
  "someVal = 0" "" \
  "class Foo(object):" "" \
  "  def __call__(self):" "" \
  "    global someVal" "" \
  "    someVal += 1" "" \
  "gdb.post_event(Foo())" "" \
  "end" ""

gdb_test "python print someVal" "1" "test post event execution"
gdb_test "python gdb.post_event(str(1))" "RuntimeError: Posted event is not callable.*" "Test non callable class"

# Test (no) pagination of the executed command.
gdb_test "show height" {Number of lines gdb thinks are in a page is unlimited\.}
set lines 10
gdb_test_no_output "set height $lines"

set test "verify pagination beforehand"
gdb_test_multiple "python print \"\\n\" * $lines" $test {
    -re "---Type <return> to continue, or q <return> to quit---$" {
	pass $test
    }
}
gdb_test "q" "Quit" "verify pagination beforehand: q"

gdb_test "python if gdb.execute('python print \"\\\\n\" * $lines', to_string=True) == \"\\n\" * [expr $lines + 1]: print \"yes\"" "yes" "gdb.execute does not page"

set test "verify pagination afterwards"
gdb_test_multiple "python print \"\\n\" * $lines" $test {
    -re "---Type <return> to continue, or q <return> to quit---$" {
	pass $test
    }
}
gdb_test "q" "Quit" "verify pagination afterwards: q"

gdb_test_no_output "set height 0"

gdb_test_no_output "python a = gdb.execute('help', to_string=True)" "collect help from uiout"

gdb_test "python print a" ".*aliases -- Aliases of other commands.*" "verify help to uiout"

# Test PR 12212, using InfThread.selected_thread() when no inferior is
# loaded.
gdb_py_test_silent_cmd "python nothread = gdb.selected_thread()" "Attempt to aquire thread with no inferior" 1
gdb_test "python print nothread == None" "True" "Ensure that no threads are returned"

# Start with a fresh gdb.
clean_restart ${testfile}

# The following tests require execution.

if ![runto_main] then {
    fail "Can't run to main"
    return 0
}

runto [gdb_get_line_number "Break to end."]

# Test gdb.decode_line.
gdb_test "python gdb.decode_line(\"main.c:43\")" \
    "gdb.error: No source file named main.c.*" "test decode_line no source named main"

gdb_py_test_silent_cmd "python symtab = gdb.decode_line()" "test decode_line current location" 1
gdb_test "python print len(symtab)" "2" "Test decode_line current location"
gdb_test "python print symtab\[0\]" "None" "Test decode_line expression parse"
gdb_test "python print len(symtab\[1\])" "1" "Test decode_line current location"
gdb_test "python print symtab\[1\]\[0\].symtab" ".*gdb.python/python.c.*" "Test decode_line current locationn filename"
gdb_test "python print symtab\[1\]\[0\].line" "22" "Test decode_line current location line number"

gdb_py_test_silent_cmd "python symtab = gdb.decode_line(\"python.c:26 if foo\")" "test decode_line python.c:26" 1
gdb_test "python print len(symtab)" "2" "Test decode_line python.c:26 length"
gdb_test "python print symtab\[0\]" "if foo" "Test decode_line expression parse"
gdb_test "python print len(symtab\[1\])" "1" "Test decode_line python.c:26 length"
gdb_test "python print symtab\[1\]\[0\].symtab" ".*gdb.python/python.c.*" "Test decode_line python.c:26 filename"
gdb_test "python print symtab\[1\]\[0\].line" "26" "Test decode_line python.c:26 line number"

gdb_test "python gdb.decode_line(\"randomfunc\")" \
    "gdb.error: Function \"randomfunc\" not defined.*" "test decode_line randomfunc"
gdb_py_test_silent_cmd "python symtab = gdb.decode_line(\"func1\")" "test decode_line func1()" 1
gdb_test "python print len(symtab)" "2" "Test decode_line func1 length"
gdb_test "python print len(symtab\[1\])" "1" "Test decode_line func1 length"
gdb_test "python print symtab\[1\]\[0\].symtab" ".*gdb.python/python-1.c.*" "Test decode_line func1 filename"
gdb_test "python print symtab\[1\]\[0\].line" "19" "Test decode_line func1 line number"

# gdb.write
gdb_test "python print sys.stderr" ".*__main__.GdbOutputErrorFile instance at.*" "Test stderr location"
gdb_test "python print sys.stdout" ".*__main__.GdbOutputFile instance at.*" "Test stdout location"
gdb_test "python gdb.write(\"Foo\\n\")" "Foo" "Test default write"
gdb_test "python gdb.write(\"Error stream\\n\", stream=gdb.STDERR)" "Error stream" "Test stderr write"
gdb_test "python gdb.write(\"Normal stream\\n\", stream=gdb.STDOUT)" "Normal stream" "Test stdout write"
gdb_test "python gdb.write(\"Log stream\\n\", stream=gdb.STDLOG)" "Log stream" "Test stdlog write"

# Deprecate maint set/show python print-stack
gdb_test "maint show python print-stack" \
    "Warning: command 'maintenance show python print-stack' is deprecated.*Use 'show python print-stack'.*" \
    "Test deprecation maint show warning."
gdb_test "maint set python print-stack off" \
    "Warning: command 'maintenance set python print-stack' is deprecated.*Use 'set python print-stack'.*" \
    "Test deprecation maint set warning."
gdb_test "show python print-stack" \
    "Whether Python stack will be printed on error is off.*" \
    "Test print-backtrace show setting. Default off."
gdb_py_test_silent_cmd "set python print-stack on" \
    "Test print-backtrace set setting" 1
gdb_test "show python print-stack" \
    "Whether Python stack will be printed on error is on.*" \

# Test prompt substituion

gdb_py_test_multiple "prompt substitution" \
  "python" "" \
  "someCounter = 0" "" \
  "def prompt(current):" "" \
  "   global someCounter" "" \
  "   if (current == \"testfake \"):" "" \
  "      return None" "" \
  "   someCounter = someCounter + 1" "" \
  "   return \"py prompt \" + str (someCounter) + \" \"" "" \
  "end" ""

gdb_py_test_multiple "prompt substitution readline" \
  "python" "" \
  "pCounter = 0" "" \
  "def program_prompt(current):" "" \
  "   global pCounter" "" \
  "   if (current == \">\"):" "" \
  "      pCounter = pCounter + 1" "" \
  "      return \"python line \" + str (pCounter) + \": \"" "" \
  "   return None" "" \
  "end" ""

set newprompt "py prompt 1"
set newprompt2 "py prompt 2"
set testfake "testfake"

gdb_test_multiple "python gdb.prompt_hook = prompt" "set the hook" {
    -re "\[\r\n\]$newprompt $" {
	pass "set hook"
    }
}

gdb_test_multiple "set prompt testfake " "set testfake prompt in GDB" {
    -re "\[\r\n\]$testfake $" {
	pass "set prompt testfake"
    }
}

gdb_test_multiple "show prompt" "show testfake prompt" {
    -re "Gdb's prompt is \"$testfake \"..* $" {
	pass "show prompt shows guarded prompt"
    }
}

gdb_test_multiple "set prompt blah " "set blah in GDB" {
    -re "\[\r\n\]$newprompt2 $" {
	pass "set prompt blah overriden"
    }
}

gdb_test_multiple "python gdb.prompt_hook = None" "Delete hook" {
    -re "\[\r\n\]$newprompt2 $" {
	pass "Delete old hook"
    }
}

gdb_test_multiple "set prompt $gdb_prompt " "set default prompt" {
    -re "\[\r\n\]$gdb_prompt $" {
	pass "set default prompt"
    }
}

gdb_test_multiple "python gdb.prompt_hook = program_prompt" "set the hook" {
    -re "\[\r\n\]$gdb_prompt $" {
	pass "set programming hook"
    }
}

gdb_test_multiple "python" "test we ignore substituion for seconday prompts" {
    -re "\r\n>$" {
	pass "readline secondary are not substituted"
    }
}

gdb_test_multiple "end" "end programming" {
    -re "\[\r\n\]$gdb_prompt $" {
	pass "end programming"
    }
}

gdb_py_test_multiple "prompt substitution readline" \
  "python" "" \
  "import gdb.command.prompt" "" \
  "end" ""

gdb_test_multiple "set extended-prompt one two three " \
    "set basic extended prompt" {
    -re "\[\r\n\]one two three $" {
	pass "set basic extended prompt"
    }
}

gdb_test_multiple "set extended-prompt \\w " \
    "set extended prompt working directory" {
    -re "\[\r\n\].*gdb.*testsuite.* $" {
	pass "set extended prompt working directory"
    }
}

gdb_test_multiple "set extended-prompt some param \\p{python print-stack} " \
    "set extended prompt parameter" {
    -re "\[\r\n\]some param True $" {
	pass "set extended prompt parameter"
    }
}
