Ticket #2803: fixed bug do_panel_cd: FTBFS with --enable-tests on [kfreebsd-i386...
[midnight-commander.git] / tests / src / filemanager / do_panel_cd.c
blob692c1f62a6b2c5bf60c79c147927454e814d727a
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/main.h"
34 #include "src/vfs/local/local.c"
36 #include "src/filemanager/panel.c"
38 #include "do_panel_cd_stub_env.c"
40 static void
41 setup (void)
43 str_init_strings (NULL);
45 vfs_init ();
46 init_localfs ();
47 vfs_setup_work_dir ();
50 static void
51 teardown (void)
53 vfs_shut ();
54 str_uninit_strings ();
57 /* --------------------------------------------------------------------------------------------- */
59 START_TEST (test_do_panel_cd_empty_mean_home)
61 char *cwd;
62 char *home_wd;
63 const char *home_directory;
64 struct WPanel *panel;
65 gboolean ret;
66 vfs_path_t *empty_path;
68 cmdline = command_new (0, 0, 0);
70 panel = g_new0(struct WPanel, 1);
71 panel->cwd_vpath = vfs_path_from_str("/home");
72 panel->lwd_vpath = vfs_path_from_str("/");
73 panel->sort_info.sort_field = g_new0(panel_field_t,1);
75 home_directory = mc_config_get_home_dir();
76 if (home_directory == NULL)
77 home_directory = "/home/test";
79 empty_path = vfs_path_from_str (home_directory);
82 * normalize path to handle HOME with trailing slashes:
83 * HOME=/home/slyfox///////// ./do_panel_cd
85 home_wd = vfs_path_to_str (empty_path);
86 ret = do_panel_cd (panel, empty_path, cd_parse_command);
87 vfs_path_free (empty_path);
89 fail_unless(ret);
90 cwd = vfs_path_to_str (panel->cwd_vpath);
92 printf ("mc_config_get_home_dir ()=%s\n", mc_config_get_home_dir ());
93 printf ("cwd=%s\n", cwd);
94 printf ("home_wd=%s\n", home_wd);
95 fail_unless(strcmp(cwd, home_wd) == 0);
97 g_free (cwd);
98 g_free (home_wd);
99 vfs_path_free (panel->cwd_vpath);
100 vfs_path_free (panel->lwd_vpath);
101 g_free ((gpointer) panel->sort_info.sort_field);
102 g_free (panel);
105 END_TEST
107 /* --------------------------------------------------------------------------------------------- */
110 main (void)
112 int number_failed;
114 Suite *s = suite_create (TEST_SUITE_NAME);
115 TCase *tc_core = tcase_create ("Core");
116 SRunner *sr;
118 tcase_add_checked_fixture (tc_core, setup, teardown);
120 /* Add new tests here: *************** */
121 tcase_add_test (tc_core, test_do_panel_cd_empty_mean_home);
122 /* *********************************** */
124 suite_add_tcase (s, tc_core);
125 sr = srunner_create (s);
126 srunner_set_log (sr, "do_panel_cd.log");
127 srunner_run_all (sr, CK_NORMAL);
128 number_failed = srunner_ntests_failed (sr);
129 srunner_free (sr);
130 return (number_failed == 0) ? 0 : 1;
133 /* --------------------------------------------------------------------------------------------- */