Commit | Line | Data |
---|---|---|
88b9d363 | 1 | # Copyright (C) 2008-2022 Free Software Foundation, Inc. |
ed3ef339 DE |
2 | |
3 | # This program is free software; you can redistribute it and/or modify | |
4 | # it under the terms of the GNU General Public License as published by | |
5 | # the Free Software Foundation; either version 3 of the License, or | |
6 | # (at your option) any later version. | |
7 | # | |
8 | # This program is distributed in the hope that it will be useful, | |
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
11 | # GNU General Public License for more details. | |
12 | # | |
13 | # You should have received a copy of the GNU General Public License | |
14 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
15 | ||
16 | # This file is part of the GDB testsuite. | |
17 | # It tests basic Guile features. | |
18 | ||
19 | load_lib gdb-guile.exp | |
20 | ||
21 | # Start with a fresh gdb. | |
22 | gdb_exit | |
23 | gdb_start | |
24 | gdb_reinitialize_dir $srcdir/$subdir | |
25 | ||
26 | # Do this instead of the skip_guile_check. | |
27 | # We want to do some tests when Guile is not present. | |
28 | gdb_test_multiple "guile (display 23) (newline)" "verify guile support" { | |
29 | -re "Undefined command.*$gdb_prompt $" { | |
bc6c7af4 | 30 | unsupported "guile not supported." |
ed3ef339 DE |
31 | return |
32 | } | |
33 | -re "not supported.*$gdb_prompt $" { | |
34 | unsupported "guile support is disabled" | |
35 | ||
36 | # If Guile is not supported, verify that sourcing a guile script | |
37 | # causes an error. | |
38 | gdb_test "source $srcdir/$subdir/source2.scm" \ | |
39 | "Error in sourced command file:.*" \ | |
40 | "source source2.scm when guile disabled" | |
51b8d20c DE |
41 | |
42 | # Verify multi-line guile commands cause an error. | |
43 | gdb_test_multiline "multi-line guile command" \ | |
44 | "guile" "" \ | |
45 | "(print 23)" "" \ | |
46 | "end" "not supported.*" | |
47 | ||
ed3ef339 DE |
48 | return |
49 | } | |
50 | -re "$gdb_prompt $" {} | |
51 | } | |
52 | ||
53 | gdb_install_guile_utils | |
54 | gdb_install_guile_module | |
55 | ||
56 | gdb_test_multiline "multi-line guile command" \ | |
57 | "guile" "" \ | |
58 | "(print 23)" "" \ | |
59 | "end" "= 23" | |
60 | ||
61 | gdb_test_multiline "show guile command" \ | |
62 | "define zzq" "Type commands for definition of .* just \"end\"\\.*" \ | |
63 | "guile" "" \ | |
64 | "(print 23)" "" \ | |
65 | "end" "" \ | |
66 | "end" "" \ | |
67 | "show user zzq" "User command \"zzq\":.* guile.*\\(print 23\\).* end" | |
68 | ||
69 | gdb_test "source $srcdir/$subdir/source2.scm" "yes" "source source2.scm" | |
70 | ||
d1e36019 | 71 | gdb_test "source -s source2.scm" "yes" |
ed3ef339 DE |
72 | |
73 | gdb_test "guile (print (current-objfile))" "= #f" | |
74 | gdb_test "guile (print (objfiles))" "= \\(\\)" | |
75 | ||
76 | gdb_test_no_output \ | |
77 | {guile (define x (execute "printf \"%d\", 23" #:to-string #t))} | |
78 | gdb_test "guile (print x)" "= 23" | |
79 | ||
80 | gdb_test_no_output "guile (define a (execute \"help\" #:to-string #t))" \ | |
81 | "collect help from uiout" | |
82 | ||
746ebfe8 | 83 | gdb_test "guile (print a)" "= .*aliases -- User-defined aliases of other commands.*" \ |
ed3ef339 | 84 | "verify help to uiout" |
1845e254 AB |
85 | |
86 | # Verify that we can source a guile script using ~ for the HOME directory. | |
87 | save_vars { env(HOME) } { | |
9344937b AB |
88 | # Create a new directory to act as a temporary HOME directory. |
89 | set tmp_home [standard_output_file tmp_home] | |
90 | file mkdir $tmp_home | |
91 | ||
92 | # Copy the file we want to source into the new HOME directory. | |
93 | gdb_remote_download host ${srcdir}/${subdir}/source2.scm \ | |
94 | ${tmp_home}/source2.scm | |
95 | ||
96 | # Arrange to use the new HOME directory. | |
97 | set env(HOME) $tmp_home | |
1845e254 | 98 | clean_restart |
9344937b AB |
99 | |
100 | # Finally, source the file out of our new HOME directory. | |
1845e254 AB |
101 | gdb_test "source ~/source2.scm" "yes" |
102 | } |