--- test case: file exists files: file.txt: | 123456 in: key: "vfs.file.exists[file.txt]" out: result: SYSINFO_RET_OK file_exists: 1 --- test case: file exists, include all files: file.txt: | 123456 in: key: "vfs.file.exists[file.txt, all]" out: result: SYSINFO_RET_OK file_exists: 1 --- test case: file exists, exclude sockets files: file.txt: | 123456 in: key: "vfs.file.exists[file.txt,, sock]" out: result: SYSINFO_RET_OK file_exists: 1 --- test case: file does not exist files: file.txt: | 123456 in: key: "vfs.file.exists[nonexistent.txt]" out: result: SYSINFO_RET_OK file_exists: 0 --- test case: file exist but is excluded files: file.txt: | 123456 in: key: "vfs.file.exists[file.txt,, file]" out: result: SYSINFO_RET_OK file_exists: 0 --- test case: empty file name in: key: "vfs.file.exists[]" out: result: SYSINFO_RET_FAIL error: "Invalid first parameter." --- test case: too many parameters in: key: "vfs.file.exists[foo, bar, buz, qux]" out: result: SYSINFO_RET_FAIL error: "Too many parameters." --- test case: invalid "include types" parameter in: key: "vfs.file.exists[foo, bar]" out: result: SYSINFO_RET_FAIL error: "Invalid type \"bar\"." --- test case: invalid "exclude types" parameter in: key: "vfs.file.exists[foo, file, baz]" out: result: SYSINFO_RET_FAIL error: "Invalid type \"baz\"." --- test case: invalid both "include types" and "exclude types" parameters in: key: "vfs.file.exists[foo, bar, baz]" out: result: SYSINFO_RET_FAIL error: "Invalid type \"bar\"." ...