aboutsummaryrefslogtreecommitdiff
path: root/tests/fs/test_nodefs_rw.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/fs/test_nodefs_rw.c')
-rw-r--r--tests/fs/test_nodefs_rw.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/tests/fs/test_nodefs_rw.c b/tests/fs/test_nodefs_rw.c
new file mode 100644
index 00000000..140da332
--- /dev/null
+++ b/tests/fs/test_nodefs_rw.c
@@ -0,0 +1,49 @@
+#include <assert.h>
+#include <stdio.h>
+#include <emscripten.h>
+
+int main() {
+ FILE *file;
+ int res;
+ char buffer[512];
+
+ // write something locally with node
+ EM_ASM(
+ var fs = require('fs');
+ fs.writeFileSync('foobar.txt', 'yeehaw');
+ );
+
+ // mount the current folder as a NODEFS instance
+ // inside of emscripten
+ EM_ASM(
+ FS.mkdir('/working');
+ FS.mount(NODEFS, { root: '.' }, '/working');
+ );
+
+ // read and validate the contents of the file
+ file = fopen("/working/foobar.txt", "r");
+ assert(file);
+ res = fread(buffer, sizeof(char), 6, file);
+ assert(res == 6);
+ fclose(file);
+
+ assert(!strcmp(buffer, "yeehaw"));
+
+ // write out something new
+ file = fopen("/working/foobar.txt", "w");
+ assert(file);
+ res = fwrite("cheez", sizeof(char), 5, file);
+ assert(res == 5);
+ fclose(file);
+
+ // validate the changes were persisted to the underlying fs
+ EM_ASM(
+ var fs = require('fs');
+ var contents = fs.readFileSync('foobar.txt', { encoding: 'utf8' });
+ assert(contents === 'cheez');
+ );
+
+ puts("success");
+
+ return 0;
+}