# This testcase is part of GDB, the GNU debugger. # Copyright 2019-2021 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 . # Test the "default-args" arguments and completion of alias command. load_lib completion-support.exp standard_testfile .c if {[build_executable "failed to prepare" $testfile $srcfile debug]} { return -1 } clean_restart $binfile # Basic/core tests using user-visible commands. with_test_prefix "basics" { # Define an alias to pretty print something. gdb_test "print g_s" " = {a = 1, b = 2, c = 3}" "simple print" gdb_test_no_output "alias PP = print -pretty --" "alias PP" gdb_test "help PP" "print, PP, inspect, p\r\n alias PP = print -pretty --\r\n.*" gdb_test "PP g_s" \ [multi_line \ " = {" \ " a = 1," \ " b = 2," \ " c = 3" \ "}"] # Define an alias of frame apply all with some default args. gdb_test_no_output "alias frame apply tout = frame apply all -past-entry -past-main" \ "alias frame apply tout" gdb_test "help frame apply tout" \ "frame apply all, frame apply tout\r\n alias frame apply tout = frame apply all -past-entry -past-main\r\n.*" # Show all aliases. gdb_test "help aliases" \ [multi_line \ "User-defined aliases of other commands." \ "" \ "List of commands:" \ "" \ "PP -- Print value of expression EXP." \ " alias PP = print -pretty --" \ "frame apply tout -- Apply a command to all frames." \ " alias frame apply tout = frame apply all -past-entry -past-main" \ ".*" ] \ "help aliases" } # Check errors. with_test_prefix "errors" { # Try an unknown root setting. gdb_test "alias wrong = xxxx yyyy -someoption" \ "Undefined command: \"xxxx\". Try \"help\"\\." # Try ambiguous command. gdb_test "alias wrong = a" \ "Ambiguous command \"a\":.*" "ambiguous a" gdb_test "alias wrong = frame a" \ "Ambiguous frame command \"a\":.*" "ambiguous frame a" } # Check completion. with_test_prefix "completion" { test_gdb_complete_unique \ "alias set pri" \ "alias set print" test_gdb_complete_unique \ "alias set print items = set pri" \ "alias set print items = set print" test_gdb_complete_unique \ "alias set print items = set print ele" \ "alias set print items = set print elements" test_gdb_complete_unique \ "alias btfu = backt" \ "alias btfu = backtrace" test_gdb_complete_unique \ "alias btfu = backtrace -fu" \ "alias btfu = backtrace -full" test_gdb_complete_unique \ "alias btfu = backtrace -full -past-e" \ "alias btfu = backtrace -full -past-entry" gdb_test_no_output "alias btfu = backtrace -full -past-entry" \ "alias btfu" } # Check alias of alias. with_test_prefix "alias_of_alias" { # Verify we can alias an alias that has no default args. # We allow an alias of an alias, to be backward compatible with # GDB 9.1 . gdb_test_no_output "alias aaa = backtrace" gdb_test_no_output "alias bbb = backtrace" # Verify that we cannot define an alias of an alias that has default args. gdb_test_no_output "alias ccc = backtrace -full" gdb_test "alias ddd = ccc" \ "Cannot define an alias of an alias that has default args" }