diff --git a/tests/lib/vfs/Makefile.am b/tests/lib/vfs/Makefile.am index 8c50d286e..e64fbc035 100644 --- a/tests/lib/vfs/Makefile.am +++ b/tests/lib/vfs/Makefile.am @@ -13,6 +13,7 @@ TESTS = \ current_dir \ path_recode \ path_serialize \ + tempdir \ vfs_parse_ls_lga \ vfs_path_string_convert \ vfs_prefix_to_class \ @@ -33,6 +34,9 @@ path_recode_SOURCES = \ path_serialize_SOURCES = \ path_serialize.c +tempdir_SOURCES = \ + tempdir.c + vfs_split_SOURCES = \ vfs_split.c diff --git a/tests/lib/vfs/tempdir.c b/tests/lib/vfs/tempdir.c new file mode 100644 index 000000000..328d108ee --- /dev/null +++ b/tests/lib/vfs/tempdir.c @@ -0,0 +1,134 @@ +/* + lib/vfs - manipulations with temp files and dirs + + Copyright (C) 2012 + The Free Software Foundation, Inc. + + Written by: + Slava Zanko , 2012 + + This file is part of the Midnight Commander. + + The Midnight Commander is free software: you can redistribute it + and/or modify it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the License, + or (at your option) any later version. + + The Midnight Commander is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#define TEST_SUITE_NAME "/lib/vfs" + +#include + +#include + +#include "lib/global.c" + +#ifndef HAVE_CHARSET +#define HAVE_CHARSET 1 +#endif + +#include "lib/charsets.h" + +#include "lib/strutil.h" +#include "lib/vfs/xdirentry.h" +#include "lib/vfs/path.h" + +#include "src/vfs/local/local.c" + + +struct vfs_s_subclass test_subclass1, test_subclass2, test_subclass3; +struct vfs_class vfs_test_ops1, vfs_test_ops2, vfs_test_ops3; + +static void +setup (void) +{ +} + +static void +teardown (void) +{ +} + +/* --------------------------------------------------------------------------------------------- */ +START_TEST (test_mc_tmpdir) +{ + const char *tmpdir; + const char *env_tmpdir; + + tmpdir = mc_tmpdir(); + fail_unless ( + g_file_test (tmpdir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR), + "\nNo such directory: %s\n", tmpdir + ); + + env_tmpdir = g_getenv ("MC_TMPDIR"); + fail_unless ( + strcmp (env_tmpdir, tmpdir) == 0, + "\nenv_tmpdir=%s\n tmpdir=%s\n", env_tmpdir, tmpdir + ); +} +END_TEST + +START_TEST (test_mc_mkstemps) +{ + char *pname = NULL; + char *begin_pname; + int fd; + + fd = mc_mkstemps (&pname, "mctest-", NULL); + if (fd == -1) + { + fail ("\nerror creating temp file!\n"); + } + close (fd); + fail_unless ( + g_file_test (pname, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR), + "\nNo such file: %s\n", pname + ); + unlink(pname); + + begin_pname = g_build_filename (mc_tmpdir(), "mctest-", NULL); + fail_unless ( + strncmp(pname, begin_pname, strlen(begin_pname)) == 0, + "\nstart of %s should be equal to %s\n", pname, begin_pname + ); + g_free (pname); +} +END_TEST + +/* --------------------------------------------------------------------------------------------- */ + +int +main (void) +{ + int number_failed; + + Suite *s = suite_create (TEST_SUITE_NAME); + TCase *tc_core = tcase_create ("Core"); + SRunner *sr; + + tcase_add_checked_fixture (tc_core, setup, teardown); + + /* Add new tests here: *************** */ + tcase_add_test (tc_core, test_mc_tmpdir); + tcase_add_test (tc_core, test_mc_mkstemps); + /* *********************************** */ + + suite_add_tcase (s, tc_core); + sr = srunner_create (s); + srunner_set_log (sr, "tempdir.log"); + srunner_run_all (sr, CK_NORMAL); + number_failed = srunner_ntests_failed (sr); + srunner_free (sr); + return (number_failed == 0) ? 0 : 1; +} + +/* --------------------------------------------------------------------------------------------- */