summaryrefslogtreecommitdiffstats
path: root/src/lib-fs/fs-test.h
blob: 5a2ed1434a679dcc5a1bbdd98cfa3b4a97f0fd7b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#ifndef FS_TEST_H
#define FS_TEST_H

#include "fs-api-private.h"

struct test_fs {
	struct fs fs;
	enum fs_properties properties;
	ARRAY_TYPE(const_string) iter_files;
};

struct test_fs_file {
	struct fs_file file;
	enum fs_open_mode mode;

	fs_file_async_callback_t *async_callback;
	void *async_context;

	buffer_t *contents;
	struct istream *input;
	struct test_fs_file *copy_src;

	bool prefetched;
	bool locked;
	bool exists;
	bool seekable;
	bool closed;
	bool io_failure;
	bool wait_async;
};

struct test_fs_iter {
	struct fs_iter iter;
	char *prefix, *prev_dir;
	unsigned int prefix_len, idx;
	bool failed;
};

struct test_fs *test_fs_get(struct fs *fs);
struct test_fs_file *test_fs_file_get(struct fs *fs, const char *path);

void test_fs_async(const char *test_name, enum fs_properties properties,
		   const char *driver, const char *args);

#endif