Refactoring of subshell support.
[midnight-commander.git] / tests / src / filemanager / do_panel_cd.c
blobeea29523f1387463c35c1f7f9ec5b717824ae2d0
1 /*
2 lib/vfs - manipulate with current directory
4 Copyright (C) 2011
5 The Free Software Foundation, Inc.
7 Written by:
8 Slava Zanko <slavazanko@gmail.com>, 2011
10 This file is part of the Midnight Commander.
12 The Midnight Commander is free software: you can redistribute it
13 and/or modify it under the terms of the GNU General Public License as
14 published by the Free Software Foundation, either version 3 of the License,
15 or (at your option) any later version.
17 The Midnight Commander is distributed in the hope that it will be useful,
18 but WITHOUT ANY WARRANTY; without even the implied warranty of
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 GNU General Public License for more details.
22 You should have received a copy of the GNU General Public License
23 along with this program. If not, see <http://www.gnu.org/licenses/>.
26 #define TEST_SUITE_NAME "/src/filemanager"
28 #include <config.h>
30 #include <check.h>
32 #include "lib/global.h"
33 #include "src/vfs/local/local.c"
35 #include "src/filemanager/panel.c"
37 /* --------------------------------------------------------------------------------------------- */
38 /* mocked functions */
39 #ifdef ENABLE_SUBSHELL
40 void
41 do_subshell_chdir (const vfs_path_t * vpath, gboolean update_prompt, gboolean reset_prompt)
43 (void) vpath;
44 (void) update_prompt;
45 (void) reset_prompt;
47 #endif
49 int
50 do_load_dir (const vfs_path_t *vpath, dir_list * list, sortfn * sort, gboolean reverse,
51 gboolean case_sensitive, gboolean exec_ff, const char *fltr)
53 (void) vpath;
54 (void) list;
55 (void) sort;
56 (void) reverse;
57 (void) case_sensitive;
58 (void) exec_ff;
59 (void) fltr;
61 return 0;
65 void
66 load_hint (gboolean force)
68 (void) force;
71 /* --------------------------------------------------------------------------------------------- */
73 static void
74 setup (void)
76 str_init_strings (NULL);
78 vfs_init ();
79 init_localfs ();
80 vfs_setup_work_dir ();
83 static void
84 teardown (void)
86 vfs_shut ();
87 str_uninit_strings ();
90 /* --------------------------------------------------------------------------------------------- */
92 START_TEST (test_do_panel_cd_empty_mean_home)
94 char *cwd;
95 char *home_wd;
96 const char *home_directory;
97 struct WPanel *panel;
98 gboolean ret;
99 vfs_path_t *empty_path;
101 cmdline = command_new (0, 0, 0);
103 panel = g_new0(struct WPanel, 1);
104 panel->cwd_vpath = vfs_path_from_str("/home");
105 panel->lwd_vpath = vfs_path_from_str("/");
106 panel->sort_info.sort_field = g_new0(panel_field_t,1);
108 home_directory = mc_config_get_home_dir();
109 if (home_directory == NULL)
110 home_directory = "/home/test";
112 empty_path = vfs_path_from_str (home_directory);
115 * normalize path to handle HOME with trailing slashes:
116 * HOME=/home/slyfox///////// ./do_panel_cd
118 home_wd = vfs_path_to_str (empty_path);
119 ret = do_panel_cd (panel, empty_path, cd_parse_command);
120 vfs_path_free (empty_path);
122 fail_unless(ret);
123 cwd = vfs_path_to_str (panel->cwd_vpath);
125 printf ("mc_config_get_home_dir ()=%s\n", mc_config_get_home_dir ());
126 printf ("cwd=%s\n", cwd);
127 printf ("home_wd=%s\n", home_wd);
128 fail_unless(strcmp(cwd, home_wd) == 0);
130 g_free (cwd);
131 g_free (home_wd);
132 vfs_path_free (panel->cwd_vpath);
133 vfs_path_free (panel->lwd_vpath);
134 g_free ((gpointer) panel->sort_info.sort_field);
135 g_free (panel);
138 END_TEST
140 /* --------------------------------------------------------------------------------------------- */
143 main (void)
145 int number_failed;
147 Suite *s = suite_create (TEST_SUITE_NAME);
148 TCase *tc_core = tcase_create ("Core");
149 SRunner *sr;
151 tcase_add_checked_fixture (tc_core, setup, teardown);
153 /* Add new tests here: *************** */
154 tcase_add_test (tc_core, test_do_panel_cd_empty_mean_home);
155 /* *********************************** */
157 suite_add_tcase (s, tc_core);
158 sr = srunner_create (s);
159 srunner_set_log (sr, "do_panel_cd.log");
160 srunner_run_all (sr, CK_NORMAL);
161 number_failed = srunner_ntests_failed (sr);
162 srunner_free (sr);
163 return (number_failed == 0) ? 0 : 1;
166 /* --------------------------------------------------------------------------------------------- */