00001
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <config.h>
00023
00024 #include "api_backend.h"
00025
00026 #include <xapian.h>
00027
00028 #include "testsuite.h"
00029 #include "testutils.h"
00030 #include "utils.h"
00031
00032 #include "apitest.h"
00033
00034 using namespace std;
00035
00037 DEFINE_TESTCASE(lockfileumask1, flint) {
00038 #ifndef __WIN32__
00039 mode_t old_umask = umask(022);
00040 try {
00041 Xapian::WritableDatabase db = get_named_writable_database("lockfileumask1");
00042
00043 string path;
00044 const string & dbtype = get_dbtype();
00045 if (dbtype == "flint") {
00046
00047 path = ".flint/dbw__lockfileumask1/flintlock";
00048 } else {
00049 SKIP_TEST("Test only supported for flint backend");
00050 }
00051
00052 struct stat statbuf;
00053 TEST(stat(path, &statbuf) == 0);
00054 TEST_EQUAL(statbuf.st_mode & 0777, 0644);
00055 } catch (...) {
00056 umask(old_umask);
00057 throw;
00058 }
00059
00060 umask(old_umask);
00061 #endif
00062
00063 return true;
00064 }