![[^]](../icons/first.png)
![[v]](../icons/last.png)
![[top]](../icons/top.png)
![[bottom]](../icons/bottom.png)
![[index]](../icons/index.png)
![[help]](../icons/help.png)
- tests/src/execute__execute_external_editor_or_viewer.c
This source file includes following definitions.
- execute_get_external_cmd_opts_from_config
- execute_get_external_cmd_opts_from_config__init
- execute_get_external_cmd_opts_from_config__deinit
- do_executev
- do_executev__init
- do_executev__deinit
- my_setup
- my_teardown
- START_TEST
- main
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 #define TEST_SUITE_NAME "/src"
27
28 #include "tests/mctest.h"
29
30 #include "execute__common.c"
31
32
33
34 char *execute_get_external_cmd_opts_from_config (const char *command,
35 const vfs_path_t *filename_vpath, long start_line);
36
37
38 static char *execute_external_cmd_opts__command__captured;
39
40 static vfs_path_t *execute_external_cmd_opts__filename_vpath__captured;
41
42 static int execute_external_cmd_opts__start_line__captured;
43
44
45 static char *execute_external_cmd_opts__return_value;
46
47
48 char *
49 execute_get_external_cmd_opts_from_config (const char *command, const vfs_path_t *filename_vpath,
50 long start_line)
51 {
52 execute_external_cmd_opts__command__captured = g_strdup (command);
53 execute_external_cmd_opts__filename_vpath__captured = vfs_path_clone (filename_vpath);
54 execute_external_cmd_opts__start_line__captured = start_line;
55
56 return execute_external_cmd_opts__return_value;
57 }
58
59 static void
60 execute_get_external_cmd_opts_from_config__init (void)
61 {
62 execute_external_cmd_opts__command__captured = NULL;
63 execute_external_cmd_opts__filename_vpath__captured = NULL;
64 execute_external_cmd_opts__start_line__captured = 0;
65 }
66
67 static void
68 execute_get_external_cmd_opts_from_config__deinit (void)
69 {
70 g_free (execute_external_cmd_opts__command__captured);
71 vfs_path_free (execute_external_cmd_opts__filename_vpath__captured, TRUE);
72 }
73
74
75 void do_executev (const char *lc_shell, int flags, char *const argv[]);
76
77
78 static char *do_executev__lc_shell__captured;
79
80 static int do_executev__flags__captured;
81
82 static GPtrArray *do_executev__argv__captured;
83
84
85 void
86 do_executev (const char *lc_shell, int flags, char *const argv[])
87 {
88 do_executev__lc_shell__captured = g_strdup (lc_shell);
89 do_executev__flags__captured = flags;
90
91 for (; argv != NULL && *argv != NULL; argv++)
92 g_ptr_array_add (do_executev__argv__captured, g_strdup (*argv));
93 }
94
95 static void
96 do_executev__init (void)
97 {
98 do_executev__lc_shell__captured = NULL;
99 do_executev__argv__captured = g_ptr_array_new_with_free_func (g_free);
100 do_executev__flags__captured = 0;
101 }
102
103 static void
104 do_executev__deinit (void)
105 {
106 g_free (do_executev__lc_shell__captured);
107 g_ptr_array_free (do_executev__argv__captured, TRUE);
108 }
109
110
111
112
113 static void
114 my_setup (void)
115 {
116 setup ();
117
118 execute_get_external_cmd_opts_from_config__init ();
119 do_executev__init ();
120 }
121
122
123
124
125 static void
126 my_teardown (void)
127 {
128 do_executev__deinit ();
129 execute_get_external_cmd_opts_from_config__deinit ();
130
131 teardown ();
132 }
133
134
135
136
137 START_TEST (do_open_external_editor_or_viewer)
138 {
139
140 vfs_path_t *filename_vpath;
141 filename_vpath = vfs_path_from_str ("/path/to/file.txt");
142
143 vfs_file_is_local__return_value = TRUE;
144 execute_external_cmd_opts__return_value = g_strdup (
145 " 'param 1 with spaces' \"param 2\" -a -b -cdef /path/to/file.txt +123");
146
147
148 execute_external_editor_or_viewer ("editor_or_viewer", filename_vpath, 123);
149
150
151
152
153 mctest_assert_str_eq (execute_external_cmd_opts__command__captured, "editor_or_viewer");
154 mctest_assert_true (
155 vfs_path_equal (execute_external_cmd_opts__filename_vpath__captured, filename_vpath));
156 ck_assert_int_eq (execute_external_cmd_opts__start_line__captured, 123);
157
158
159 mctest_assert_str_eq (do_executev__lc_shell__captured, "editor_or_viewer");
160 ck_assert_int_eq (do_executev__flags__captured, EXECUTE_INTERNAL);
161 ck_assert_int_eq (do_executev__argv__captured->len, 7);
162
163 mctest_assert_str_eq (g_ptr_array_index (do_executev__argv__captured, 0),
164 "param 1 with spaces");
165 mctest_assert_str_eq (g_ptr_array_index (do_executev__argv__captured, 1), "param 2");
166 mctest_assert_str_eq (g_ptr_array_index (do_executev__argv__captured, 2), "-a");
167 mctest_assert_str_eq (g_ptr_array_index (do_executev__argv__captured, 3), "-b");
168 mctest_assert_str_eq (g_ptr_array_index (do_executev__argv__captured, 4), "-cdef");
169 mctest_assert_str_eq (g_ptr_array_index (do_executev__argv__captured, 5), "/path/to/file.txt");
170 mctest_assert_str_eq (g_ptr_array_index (do_executev__argv__captured, 6), "+123");
171
172 vfs_path_free (filename_vpath, TRUE);
173 }
174 END_TEST
175
176
177
178 int
179 main (void)
180 {
181 TCase *tc_core;
182
183 tc_core = tcase_create ("Core");
184
185 tcase_add_checked_fixture (tc_core, my_setup, my_teardown);
186
187
188 tcase_add_test (tc_core, do_open_external_editor_or_viewer);
189
190
191 return mctest_run_all (tc_core);
192 }
193
194