Add max-completions parameter, and implement tab-completion limiting.
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.base / completion.exp
index 1123b993c9bf5e6957047b0625cecc74d84eb04e..f77bfe23e5cc01a39ea5e41888b6fd034f195800 100644 (file)
@@ -67,6 +67,7 @@ if ![runto_main] then {
 }
 
 set timeout 30
+gdb_test_no_output "set max-completions unlimited"
 
 gdb_test_no_output "complete print values\[0\].x." \
     "field completion with invalid field"
@@ -775,4 +776,86 @@ gdb_test_multiple "" "$test" {
     }
 }
 
-return 0
+#
+# Completion limiting.
+#
+
+gdb_test_no_output "set max-completions 5"
+
+set test "command-name completion limiting using tab character"
+send_gdb "p\t"
+gdb_test_multiple "" "$test" {
+    -re "^p\\\x07$" {
+       send_gdb "\t"
+       gdb_test_multiple "" "$test" {
+           -re "List may be truncated, max-completions reached.*\r\n$gdb_prompt p$" {
+               # Complete the command and ignore the output to resync
+               # gdb for the next test.
+               send_gdb "\n"
+               gdb_test_multiple "" "$test" {
+                   -re "$gdb_prompt $" {
+                       pass "$test"
+                   }
+               }
+           }
+           -re "$gdb_prompt p$" {
+               # Complete the command and ignore the output to resync
+               # gdb for the next test.
+               send_gdb "\n"
+               gdb_test_multiple "" "$test" {
+                   -re "$gdb_prompt $" {
+                       fail "$test"
+                   }
+               }
+           }
+        }
+    }
+}
+
+set test "command-name completion limiting using complete command"
+send_gdb "complete p\n"
+gdb_test_multiple "" "$test" {
+    -re "List may be truncated, max-completions reached.*\r\n$gdb_prompt $" {
+       pass "$test"
+    }
+}
+
+gdb_test_no_output "set max-completions 3"
+
+set test "symbol-name completion limiting using tab character"
+send_gdb "p marker\t"
+gdb_test_multiple "" "$test" {
+    -re "^p marker\\\x07$" {
+       send_gdb "\t"
+       gdb_test_multiple "" "$test" {
+           -re "List may be truncated, max-completions reached.*\r\n$gdb_prompt p marker$" {
+               # Complete the command and ignore the output to resync
+               # gdb for the next test.
+               send_gdb "\n"
+               gdb_test_multiple "" "$test" {
+                   -re "$gdb_prompt $" {
+                       pass "$test"
+                   }
+               }
+           }
+           -re "$gdb_prompt p marker$" {
+               # Complete the command and ignore the output to resync
+               # gdb for the next test.
+               send_gdb "\n"
+               gdb_test_multiple "" "$test" {
+                   -re "$gdb_prompt $" {
+                       fail "$test"
+                   }
+               }
+           }
+        }
+    }
+}
+
+set test "symbol-name completion limiting using complete command"
+send_gdb "complete p mark\n"
+gdb_test_multiple "" "$test" {
+    -re "List may be truncated, max-completions reached.*\r\n$gdb_prompt $" {
+       pass "$test"
+    }
+}
This page took 0.026197 seconds and 4 git commands to generate.