Mercurial > dovecot > core-2.2
annotate src/lib/test-file-create-locked.c @ 23007:36e01285b5b8
lib: buffer - Improve header comment for buffer_insert() and buffer_delete().
author | Stephan Bosch <stephan.bosch@dovecot.fi> |
---|---|
date | Mon, 18 Mar 2019 00:52:37 +0100 |
parents | cb108f786fb4 |
children |
rev | line source |
---|---|
22713
cb108f786fb4
Updated copyright notices to include the year 2018.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents:
22282
diff
changeset
|
1 /* Copyright (c) 2017-2018 Dovecot authors, see the included COPYING file */ |
22271
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
2 |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
3 #include "test-lib.h" |
22272
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
4 #include "unlink-directory.h" |
22271
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
5 #include "file-create-locked.h" |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
6 |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
7 #include <fcntl.h> |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
8 #include <signal.h> |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
9 #include <sys/stat.h> |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
10 |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
11 static void create_file(const char *path) |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
12 { |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
13 int fd; |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
14 |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
15 fd = creat(path, 0600); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
16 if (fd == -1) |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
17 i_fatal("creat(%s) failed: %m", path); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
18 i_close_fd(&fd); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
19 } |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
20 |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
21 static bool wait_for_file(pid_t pid, const char *path) |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
22 { |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
23 struct stat st; |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
24 |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
25 for (unsigned int i = 0; i < 1000; i++) { |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
26 if (stat(path, &st) == 0) |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
27 return TRUE; |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
28 if (errno != ENOENT) |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
29 i_fatal("stat(%s) failed: %m", path); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
30 if (kill(pid, 0) < 0) { |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
31 if (errno == ESRCH) |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
32 return FALSE; |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
33 i_fatal("kill(SIGSRCH) failed: %m"); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
34 } |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
35 usleep(10000); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
36 } |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
37 i_error("%s isn't being created", path); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
38 return FALSE; |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
39 } |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
40 |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
41 static void test_file_create_locked_basic(void) |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
42 { |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
43 struct file_create_settings set = { |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
44 .lock_timeout_secs = 0, |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
45 .lock_method = FILE_LOCK_METHOD_FCNTL, |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
46 }; |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
47 const char *path = ".test-file-create-locked"; |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
48 struct file_lock *lock; |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
49 const char *error; |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
50 bool created; |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
51 pid_t pid; |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
52 int fd; |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
53 |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
54 test_begin("file_create_locked()"); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
55 |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
56 i_unlink_if_exists(path); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
57 i_unlink_if_exists(".test-temp-file-create-locked-child"); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
58 pid = fork(); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
59 switch (pid) { |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
60 case (pid_t)-1: |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
61 i_error("fork() failed: %m"); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
62 break; |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
63 case 0: |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
64 /* child */ |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
65 fd = file_create_locked(path, &set, &lock, &created, &error); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
66 test_assert(fd > 0); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
67 test_assert(created); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
68 if (test_has_failed()) |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
69 exit(1); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
70 create_file(".test-temp-file-create-locked-child"); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
71 sleep(60); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
72 i_close_fd(&fd); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
73 exit(0); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
74 default: |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
75 /* parent */ |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
76 test_assert(wait_for_file(pid, ".test-temp-file-create-locked-child")); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
77 if (test_has_failed()) |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
78 break; |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
79 test_assert(file_create_locked(path, &set, &lock, &created, &error) == -1); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
80 test_assert(errno == EAGAIN); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
81 if (kill(pid, SIGKILL) < 0) |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
82 i_error("kill(SIGKILL) failed: %m"); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
83 break; |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
84 } |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
85 i_unlink_if_exists(".test-temp-file-create-locked-child"); |
22282
6ea40be7e586
lib: Fix file_create_locked() unit test to delete temp file afterwards
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22272
diff
changeset
|
86 i_unlink_if_exists(path); |
22271
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
87 test_end(); |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
88 } |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
89 |
22272
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
90 static void test_file_create_locked_mkdir(void) |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
91 { |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
92 struct file_create_settings set = { |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
93 .lock_timeout_secs = 0, |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
94 .lock_method = FILE_LOCK_METHOD_FCNTL, |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
95 }; |
22282
6ea40be7e586
lib: Fix file_create_locked() unit test to delete temp file afterwards
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22272
diff
changeset
|
96 const char *path; |
22272
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
97 struct file_lock *lock; |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
98 const char *error, *dir; |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
99 bool created; |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
100 int fd; |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
101 |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
102 test_begin("file_create_locked() with mkdir"); |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
103 |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
104 dir = ".test-temp-file-create-locked-dir"; |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
105 if (unlink_directory(dir, UNLINK_DIRECTORY_FLAG_RMDIR) < 0) |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
106 i_fatal("unlink_directory(%s) failed: %m", dir); |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
107 path = t_strconcat(dir, "/lockfile", NULL); |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
108 |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
109 /* try without mkdir enabled */ |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
110 test_assert(file_create_locked(path, &set, &lock, &created, &error) == -1); |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
111 test_assert(errno == ENOENT); |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
112 |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
113 /* try with mkdir enabled */ |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
114 set.mkdir_mode = 0700; |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
115 fd = file_create_locked(path, &set, &lock, &created, &error); |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
116 test_assert(fd > 0); |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
117 test_assert(created); |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
118 i_close_fd(&fd); |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
119 |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
120 struct stat st; |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
121 if (stat(dir, &st) < 0) |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
122 i_error("stat(%s) failed: %m", dir); |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
123 test_assert((st.st_mode & 0777) == 0700); |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
124 i_unlink(path); |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
125 file_lock_free(&lock); |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
126 |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
127 if (unlink_directory(dir, UNLINK_DIRECTORY_FLAG_RMDIR) < 0) |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
128 i_fatal("unlink_directory(%s) failed: %m", dir); |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
129 |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
130 test_end(); |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
131 } |
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
132 |
22271
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
133 void test_file_create_locked(void) |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
134 { |
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
135 test_file_create_locked_basic(); |
22272
651fa80715a3
lib: file_create_locked() - Add settings to mkdir() missing parent directories
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22271
diff
changeset
|
136 test_file_create_locked_mkdir(); |
22271
5c7987bec546
lib: Add unit test for file_create_locked()
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff
changeset
|
137 } |