details: https://hg.nginx.org/njs/rev/f076da3c7a6f branches: changeset: 2212:f076da3c7a6f user: Dmitry Volyntsev <xei...@nginx.com> date: Fri Sep 29 21:41:34 2023 -0700 description: FS: introduced fs.existsSync().
diffstat: external/njs_fs_module.c | 30 ++++++++++++++++++++++++++++++ test/fs/methods.t.js | 31 +++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 0 deletions(-) diffs (102 lines): diff -r 88318e18dec9 -r f076da3c7a6f external/njs_fs_module.c --- a/external/njs_fs_module.c Thu Sep 28 19:09:56 2023 -0700 +++ b/external/njs_fs_module.c Fri Sep 29 21:41:34 2023 -0700 @@ -146,6 +146,8 @@ typedef njs_int_t (*njs_file_tree_walk_c static njs_int_t njs_fs_access(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs, njs_index_t calltype, njs_value_t *retval); +static njs_int_t njs_fs_exists_sync(njs_vm_t *vm, njs_value_t *args, + njs_uint_t nargs, njs_index_t calltype, njs_value_t *retval); static njs_int_t njs_fs_mkdir(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs, njs_index_t calltype, njs_value_t *retval); static njs_int_t njs_fs_open(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs, @@ -583,6 +585,16 @@ static njs_external_t njs_ext_fs[] = { { .flags = NJS_EXTERN_METHOD, + .name.string = njs_str("existsSync"), + .writable = 1, + .configurable = 1, + .u.method = { + .native = njs_fs_exists_sync, + } + }, + + { + .flags = NJS_EXTERN_METHOD, .name.string = njs_str("fstatSync"), .writable = 1, .configurable = 1, @@ -1470,6 +1482,24 @@ njs_fs_access(njs_vm_t *vm, njs_value_t static njs_int_t +njs_fs_exists_sync(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs, + njs_index_t calltype, njs_value_t *retval) +{ + const char *path; + char path_buf[NJS_MAX_PATH + 1]; + + path = njs_fs_path(vm, path_buf, njs_arg(args, nargs, 1), "path"); + if (njs_slow_path(path == NULL)) { + return NJS_ERROR; + } + + njs_value_boolean_set(retval, access(path, F_OK) == 0); + + return NJS_OK; +} + + +static njs_int_t njs_fs_open(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs, njs_index_t calltype, njs_value_t *retval) { diff -r 88318e18dec9 -r f076da3c7a6f test/fs/methods.t.js --- a/test/fs/methods.t.js Thu Sep 28 19:09:56 2023 -0700 +++ b/test/fs/methods.t.js Fri Sep 29 21:41:34 2023 -0700 @@ -359,6 +359,36 @@ let appendFileP_tsuite = { get tests() { return append_tests() }, }; +async function exists_test(params) { + let res = await method("exists", params); + + if (res !== params.expected) { + throw Error(`exists failed check`); + } + + return 'SUCCESS'; +} + +let exists_tests = () => [ + { args: ["test/fs/ascii"], + expected: true }, + { args: ["test/fs"], + expected: true }, + { args: ["test/fs_NONEXISTENT/ascii"], + expected: false }, + { args: ["test/fs/ascii_NONEXISTENT"], + expected: false }, +]; + +let existsSync_tsuite = { + name: "fs existsSync", + skip: () => (!has_fs() || !has_buffer()), + T: exists_test, + prepare_args: p, + opts: { type: "sync" }, + get tests() { return exists_tests() }, +}; + async function realpath_test(params) { let data = await method("realpath", params); @@ -1153,6 +1183,7 @@ run([ appendFile_tsuite, appendFileSync_tsuite, appendFileP_tsuite, + existsSync_tsuite, realpath_tsuite, realpathSync_tsuite, realpathP_tsuite, _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-devel