Skip to content

Commit

Permalink
test: add wasi readdir() test
Browse files Browse the repository at this point in the history
This commit provides coverage for __wasi_fd_readdir().

PR-URL: #35202
Reviewed-By: Gus Caplan <[email protected]>
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: Jiawen Geng <[email protected]>
  • Loading branch information
cjihrig authored and MylesBorins committed Nov 16, 2020
1 parent 884755f commit c3e1bf7
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 0 deletions.
50 changes: 50 additions & 0 deletions test/wasi/c/readdir.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#include <assert.h>
#include <dirent.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
DIR* dir;
struct dirent* entry;
char* platform;
int cnt;
int has_d_type;

platform = getenv("NODE_PLATFORM");
assert(platform != NULL);
has_d_type = (0 != strcmp(platform, "aix") && 0 != strcmp(platform, "sunos"));

dir = opendir("/sandbox");
assert(dir != NULL);

cnt = 0;
errno = 0;
while (NULL != (entry = readdir(dir))) {
if (strcmp(entry->d_name, "input.txt") == 0 ||
strcmp(entry->d_name, "input2.txt") == 0 ||
strcmp(entry->d_name, "notadir") == 0) {
if (has_d_type) {
assert(entry->d_type == DT_REG);
} else {
assert(entry->d_type == DT_UNKNOWN);
}
} else if (strcmp(entry->d_name, "subdir") == 0) {
if (has_d_type) {
assert(entry->d_type == DT_DIR);
} else {
assert(entry->d_type == DT_UNKNOWN);
}
} else {
assert("unexpected file");
}

cnt++;
}

assert(errno == 0);
assert(cnt == 4);
closedir(dir);
return 0;
}
5 changes: 5 additions & 0 deletions test/wasi/test-wasi.js
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,11 @@ if (process.argv[2] === 'wasi-child') {
runWASI({ test: 'notdir' });
runWASI({ test: 'poll' });
runWASI({ test: 'preopen_populates' });

if (!common.isWindows && process.platform !== 'android') {
runWASI({ test: 'readdir' });
}

runWASI({ test: 'read_file', stdout: `hello from input.txt${EOL}` });
runWASI({
test: 'read_file_twice',
Expand Down
Binary file added test/wasi/wasm/readdir.wasm
Binary file not shown.

0 comments on commit c3e1bf7

Please sign in to comment.