| # 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 <http://www.gnu.org/licenses/>. |
| |
| # 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" |
| |
| } |