Require readline for gdb.linespec/explicit.exp tab-completion tests.
authorSandra Loosemore <sandra@codesourcery.com>
Fri, 18 Sep 2015 15:54:20 +0000 (08:54 -0700)
committerSandra Loosemore <sandra@codesourcery.com>
Fri, 18 Sep 2015 15:54:20 +0000 (08:54 -0700)
2015-09-18  Sandra Loosemore  <sandra@codesourcery.com>

gdb/testsuite/
* gdb.linespec/explicit.exp: Check for readline support for
tab-completion tests.  Fix obvious typo.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.linespec/explicit.exp

index 1b8e0e8..acfef04 100644 (file)
@@ -1,3 +1,9 @@
+2015-09-18  Sandra Loosemore  <sandra@codesourcery.com>
+
+       gdb/testsuite/
+       * gdb.linespec/explicit.exp: Check for readline support for
+       tab-completion tests.  Fix obvious typo.
+
 2015-09-18  Markus Metzger  <markus.t.metzger@intel.com>
 
        * gdb.btrace/multi-thread-step.exp: Test scheduler-locking on, step,
index a0851cd..1fa203f 100644 (file)
@@ -145,186 +145,193 @@ namespace eval $testfile {
        gdb_test "break $linespec thread 123" "Unknown thread 123."
     }
 
-    # Test the explicit location completer
-    foreach abbrev {"fun" "so" "lab" "li"}  full {"function" "source" "label" "line"} {
-       set tst "complete 'break -$abbrev'"
-       send_gdb "break -${abbrev}\t"
-       gdb_test_multiple "" $tst {
-           "break -$full " {
-               send_gdb "\n"
-               gdb_test_multiple "" $tst {
-                   -re "missing argument for \"-$full\".*$gdb_prompt " {
-                       pass $tst
+    # Tests below are about tab-completion, which doesn't work if readline
+    # library isn't used.  Check it first.
+    if { [readline_is_used] } {
+
+       # Test the explicit location completer
+       foreach abbrev {"fun" "so" "lab" "li"}  full {"function" "source" "label" "line"} {
+           set tst "complete 'break -$abbrev'"
+           send_gdb "break -${abbrev}\t"
+           gdb_test_multiple "" $tst {
+               "break -$full " {
+                   send_gdb "\n"
+                   gdb_test_multiple "" $tst {
+                       -re "missing argument for \"-$full\".*$gdb_prompt " {
+                           pass $tst
+                       }
                    }
                }
            }
-       }
-       set tst "complete -$full with no value"
-       send_gdb "break -$full \t"
-       gdb_test_multiple "" $tst {
-           -re ".*break -$full " {
-               send_gdb "\n"
-               gdb_test_multiple "" $tst {
-                   -re ".*Source filename requires function, label, or line offset\..*$gdb_prompt " {
-                       if {[string equal $full "source"]} {
+           set tst "complete -$full with no value"
+           send_gdb "break -$full \t"
+           gdb_test_multiple "" $tst {
+               -re ".*break -$full " {
+                   send_gdb "\n"
+                   gdb_test_multiple "" $tst {
+                       -re ".*Source filename requires function, label, or line offset\..*$gdb_prompt " {
+                           if {[string equal $full "source"]} {
+                               pass $tst
+                           } else {
+                               fail $tst
+                           }
+                       }
+                       -re "missing argument for \"-$full\".*$gdb_prompt " {
                            pass $tst
-                       } else {
-                           faill $tst
                        }
                    }
-                   -re "missing argument for \"-$full\".*$gdb_prompt " {
-                       pass $tst
-                   }
                }
            }
        }
-    }
 
-    set tst "complete unique function name"
-    send_gdb "break -function mai\t"
-    gdb_test_multiple "" $tst {
-       "break -function mai\\\x07n" {
-           send_gdb "\n"
-           gdb_test "" ".*Breakpoint \[0-9\]+.*" $tst
-           gdb_test_no_output "delete \$bpnum" "delete $tst breakpoint"
+       set tst "complete unique function name"
+       send_gdb "break -function mai\t"
+       gdb_test_multiple "" $tst {
+           "break -function mai\\\x07n" {
+               send_gdb "\n"
+               gdb_test "" ".*Breakpoint \[0-9\]+.*" $tst
+               gdb_test_no_output "delete \$bpnum" "delete $tst breakpoint"
+           }
        }
-    }
 
-    set tst "complete non-unique function name"
-    send_gdb "break -function myfunc\t"
-    gdb_test_multiple "" $tst {
-       "break -function myfunc\\\x07tion" {
-           send_gdb "\t\t"
-           gdb_test_multiple "" $tst {
-               -re "\\\x07\r\nmyfunction\[ \t\]+myfunction2\[ \t\]+myfunction3\[ \t\]+myfunction4\[ \t\]+\r\n$gdb_prompt " {
-                   gdb_test "2" ".*Breakpoint \[0-9\]+.*" $tst
-                   gdb_test_no_output "delete \$bpnum" "delete $tst breakpoint"
+       set tst "complete non-unique function name"
+       send_gdb "break -function myfunc\t"
+       gdb_test_multiple "" $tst {
+           "break -function myfunc\\\x07tion" {
+               send_gdb "\t\t"
+               gdb_test_multiple "" $tst {
+                   -re "\\\x07\r\nmyfunction\[ \t\]+myfunction2\[ \t\]+myfunction3\[ \t\]+myfunction4\[ \t\]+\r\n$gdb_prompt " {
+                       gdb_test "2" ".*Breakpoint \[0-9\]+.*" $tst
+                       gdb_test_no_output "delete \$bpnum" "delete $tst breakpoint"
+                   }
                }
            }
        }
-    }
 
-    set tst "complete non-existant function name"
-    send_gdb "break -function foo\t"
-    gdb_test_multiple "" $tst {
-       "break -function foo\\\x07" {
-           send_gdb "\t\t"
-           gdb_test_multiple "" $tst {
-               -re "\\\x07\\\x07" {
-                   send_gdb "\n"
-                   gdb_test "" {Function "foo" not defined.} $tst
+       set tst "complete non-existant function name"
+       send_gdb "break -function foo\t"
+       gdb_test_multiple "" $tst {
+           "break -function foo\\\x07" {
+               send_gdb "\t\t"
+               gdb_test_multiple "" $tst {
+                   -re "\\\x07\\\x07" {
+                       send_gdb "\n"
+                       gdb_test "" {Function "foo" not defined.} $tst
+                   }
                }
            }
        }
-    }
 
-    set tst "complete unique file name"
-    send_gdb "break -source 3ex\t"
-    gdb_test_multiple "" $tst {
-       "break -source 3explicit.c " {
-           send_gdb "\n"
-           gdb_test "" \
-               {Source filename requires function, label, or line offset.} $tst
+       set tst "complete unique file name"
+       send_gdb "break -source 3ex\t"
+       gdb_test_multiple "" $tst {
+           "break -source 3explicit.c " {
+               send_gdb "\n"
+               gdb_test "" \
+                   {Source filename requires function, label, or line offset.} $tst
+           }
        }
-    }
 
-    set tst "complete non-unique file name"
-    send_gdb "break -source exp\t"
-    gdb_test_multiple "" $tst {
-       "break -source exp\\\x07licit" {
-           send_gdb "\t\t"
-           gdb_test_multiple "" $tst {
-               -re "\\\x07\r\nexplicit.c\[ \t\]+explicit2.c\[ \t\]+\r\n$gdb_prompt" {
-                   send_gdb "\n"
-                   gdb_test "" \
-                       {Source filename requires function, label, or line offset.} \
-                       $tst
+       set tst "complete non-unique file name"
+       send_gdb "break -source exp\t"
+       gdb_test_multiple "" $tst {
+           "break -source exp\\\x07licit" {
+               send_gdb "\t\t"
+               gdb_test_multiple "" $tst {
+                   -re "\\\x07\r\nexplicit.c\[ \t\]+explicit2.c\[ \t\]+\r\n$gdb_prompt" {
+                       send_gdb "\n"
+                       gdb_test "" \
+                           {Source filename requires function, label, or line offset.} \
+                           $tst
+                   }
                }
            }
-       }
 
-       "break -source exp\\\x07l" {
-           # This pattern may occur when glibc debuginfo is installed.
-           send_gdb "\t\t"
-           gdb_test_multiple "" $tst {
-               -re "\\\x07\r\nexplicit.c\[ \t\]+explicit2.c\[ \t\]+expl.*\r\n$gdb_prompt" {
-                   send_gdb "\n"
-                   gdb_test "" \
-                       {Source filename requires function, label, or line offset.} \
-                       $tst
+           "break -source exp\\\x07l" {
+               # This pattern may occur when glibc debuginfo is installed.
+               send_gdb "\t\t"
+               gdb_test_multiple "" $tst {
+                   -re "\\\x07\r\nexplicit.c\[ \t\]+explicit2.c\[ \t\]+expl.*\r\n$gdb_prompt" {
+                       send_gdb "\n"
+                       gdb_test "" \
+                           {Source filename requires function, label, or line offset.} \
+                           $tst
+                   }
                }
            }
        }
-    }
 
-    set tst "complete non-existant file name"
-    send_gdb "break -source foo\t"
-    gdb_test_multiple "" $tst {
-       "break -source foo" {
-           send_gdb "\t\t"
-           gdb_test_multiple "" $tst {
-               "\\\x07\\\x07" {
-                   send_gdb "\n"
-                   gdb_test "" \
-                       {Source filename requires function, label, or line offset.} \
-                       $tst
+       set tst "complete non-existant file name"
+       send_gdb "break -source foo\t"
+       gdb_test_multiple "" $tst {
+           "break -source foo" {
+               send_gdb "\t\t"
+               gdb_test_multiple "" $tst {
+                   "\\\x07\\\x07" {
+                       send_gdb "\n"
+                       gdb_test "" \
+                           {Source filename requires function, label, or line offset.} \
+                           $tst
+                   }
                }
            }
        }
-    }
 
-    set tst "complete filename and unique function name"
-    send_gdb "break -source explicit.c -function ma\t"
-    gdb_test_multiple "" $tst {
-       "break -source explicit.c -function main " {
-           send_gdb "\n"
-           gdb_test "" ".*Breakpoint .*" $tst
-           gdb_test_no_output "delete \$bpnum" "delete $tst breakpoint"
+       set tst "complete filename and unique function name"
+       send_gdb "break -source explicit.c -function ma\t"
+       gdb_test_multiple "" $tst {
+           "break -source explicit.c -function main " {
+               send_gdb "\n"
+               gdb_test "" ".*Breakpoint .*" $tst
+               gdb_test_no_output "delete \$bpnum" "delete $tst breakpoint"
+           }
        }
-    }
 
-    set tst "complete filename and non-unique function name"
-    send_gdb "break -so 3explicit.c -func myfunc\t"
-    gdb_test_multiple "" $tst {
-       "break -so 3explicit.c -func myfunc\\\x07tion" {
-           send_gdb "\t\t"
-           gdb_test_multiple "" $tst {
-               -re "\\\x07\r\nmyfunction3\[ \t\]+myfunction4\[ \t\]+\r\n$gdb_prompt " {
-                   gdb_test "3" ".*Breakpoint \[0-9\]+.*" $tst
-                   gdb_test_no_output "delete \$bpnum" "delete $tst breakpoint"
+       set tst "complete filename and non-unique function name"
+       send_gdb "break -so 3explicit.c -func myfunc\t"
+       gdb_test_multiple "" $tst {
+           "break -so 3explicit.c -func myfunc\\\x07tion" {
+               send_gdb "\t\t"
+               gdb_test_multiple "" $tst {
+                   -re "\\\x07\r\nmyfunction3\[ \t\]+myfunction4\[ \t\]+\r\n$gdb_prompt " {
+                       gdb_test "3" ".*Breakpoint \[0-9\]+.*" $tst
+                       gdb_test_no_output "delete \$bpnum" "delete $tst breakpoint"
+                   }
                }
            }
        }
-    }
 
-    set tst "complete filename and non-existant function name"
-    send_gdb "break -sou 3explicit.c -fun foo\t"
-    gdb_test_multiple "" $tst {
-       "break -sou 3explicit.c -fun foo\\\x07" {
-           send_gdb "\t\t"
-           gdb_test_multiple "" $tst {
-               "\\\x07\\\x07" {
-                   send_gdb "\n"
-                   gdb_test "" \
-                       {Function "foo" not defined in "3explicit.c".} $tst
+       set tst "complete filename and non-existant function name"
+       send_gdb "break -sou 3explicit.c -fun foo\t"
+       gdb_test_multiple "" $tst {
+           "break -sou 3explicit.c -fun foo\\\x07" {
+               send_gdb "\t\t"
+               gdb_test_multiple "" $tst {
+                   "\\\x07\\\x07" {
+                       send_gdb "\n"
+                       gdb_test "" \
+                           {Function "foo" not defined in "3explicit.c".} $tst
+                   }
                }
            }
        }
-    }
 
-    set tst "complete filename and function reversed"
-    send_gdb "break -func myfunction4 -source 3ex\t"
-    gdb_test_multiple "" $tst {
-       "break -func myfunction4 -source 3explicit.c " {
-           send_gdb "\n"
-           gdb_test "" "Breakpoint \[0-9\]+.*" $tst
-           gdb_test_no_output "delete \$bpnum" "delete $tst breakpoint"
+       set tst "complete filename and function reversed"
+       send_gdb "break -func myfunction4 -source 3ex\t"
+       gdb_test_multiple "" $tst {
+           "break -func myfunction4 -source 3explicit.c " {
+               send_gdb "\n"
+               gdb_test "" "Breakpoint \[0-9\]+.*" $tst
+               gdb_test_no_output "delete \$bpnum" "delete $tst breakpoint"
+           }
        }
-    }
 
-    # NOTE: We don't bother testing more elaborate combinations of options,
-    # such as "-func main -sour 3ex\t" (main is defined in explicit.c).  The
-    # completer cannot handle these yet.
+       # NOTE: We don't bother testing more elaborate combinations of options,
+       # such as "-func main -sour 3ex\t" (main is defined in explicit.c).
+       # The completer cannot handle these yet.
+
+    }
+    # End of completion tests.
 
     # Test pending explicit breakpoints
     gdb_exit