2 src/filemanager - filemanager functions
4 Copyright (C) 2011-2024
5 Free Software Foundation, Inc.
8 Slava Zanko <slavazanko@gmail.com>, 2011, 2013
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 "tests/mctest.h"
30 #include "lib/file-entry.h"
32 #include "src/vfs/local/local.c"
34 #include "src/filemanager/filemanager.c"
36 #include "src/filemanager/ext.c"
38 /* --------------------------------------------------------------------------------------------- */
39 /* mocked functions */
42 /* --------------------------------------------------------------------------------------------- */
47 str_init_strings (NULL
);
51 vfs_setup_work_dir ();
53 mc_global
.mc_run_mode
= MC_RUN_FULL
;
54 current_panel
= g_new0 (WPanel
, 1);
55 current_panel
->cwd_vpath
= vfs_path_from_str ("/home");
56 current_panel
->dir
.size
= DIR_LIST_MIN_SIZE
;
57 current_panel
->dir
.list
= g_new0 (file_entry_t
, current_panel
->dir
.size
);
58 current_panel
->dir
.len
= 0;
65 str_uninit_strings ();
68 /* --------------------------------------------------------------------------------------------- */
71 START_TEST (sanitize_variables
)
75 vfs_path_t
*filename_vpath
;
76 GString
*actual_string
;
77 const char *expected_string
;
79 current_panel
->current
= 0;
80 current_panel
->dir
.len
= 3;
81 current_panel
->dir
.list
[0].fname
= g_string_new ("selected file.txt");
82 current_panel
->dir
.list
[1].fname
= g_string_new ("tagged file1.txt");
83 current_panel
->dir
.list
[1].f
.marked
= 1;
84 current_panel
->dir
.list
[2].fname
= g_string_new ("tagged file2.txt");
85 current_panel
->dir
.list
[2].f
.marked
= 1;
88 filename_vpath
= vfs_path_from_str ("/tmp/blabla.txt");
89 actual_string
= exec_get_export_variables (filename_vpath
);
90 vfs_path_free (filename_vpath
, TRUE
);
94 MC_EXT_FILENAME=/tmp/blabla.txt\n\
95 export MC_EXT_FILENAME\n\
96 MC_EXT_BASENAME=selected\\ file.txt\n\
97 export MC_EXT_BASENAME\n\
98 MC_EXT_CURRENTDIR=/home\n\
99 export MC_EXT_CURRENTDIR\n\
100 MC_EXT_SELECTED=\"selected\\ file.txt\"\n\
101 export MC_EXT_SELECTED\n\
102 MC_EXT_ONLYTAGGED=\"tagged\\ file1.txt tagged\\ file2.txt \"\n\
103 export MC_EXT_ONLYTAGGED\n";
105 mctest_assert_str_eq (actual_string
->str
, expected_string
);
107 g_string_free (actual_string
, TRUE
);
108 g_string_free (current_panel
->dir
.list
[0].fname
, TRUE
);
109 g_string_free (current_panel
->dir
.list
[1].fname
, TRUE
);
110 g_string_free (current_panel
->dir
.list
[2].fname
, TRUE
);
116 /* --------------------------------------------------------------------------------------------- */
123 tc_core
= tcase_create ("Core");
125 tcase_add_checked_fixture (tc_core
, setup
, teardown
);
127 /* Add new tests here: *************** */
128 tcase_add_test (tc_core
, sanitize_variables
);
129 /* *********************************** */
131 return mctest_run_all (tc_core
);
134 /* --------------------------------------------------------------------------------------------- */