aboutsummaryrefslogtreecommitdiff
path: root/tests/fs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/fs')
-rw-r--r--tests/fs/test_idbfs_sync.c48
-rw-r--r--tests/fs/test_nodefs_rw.c49
2 files changed, 97 insertions, 0 deletions
diff --git a/tests/fs/test_idbfs_sync.c b/tests/fs/test_idbfs_sync.c
new file mode 100644
index 00000000..ff356416
--- /dev/null
+++ b/tests/fs/test_idbfs_sync.c
@@ -0,0 +1,48 @@
+#include <stdio.h>
+#include <emscripten.h>
+
+#define EM_ASM_REEXPAND(x) EM_ASM(x)
+
+void success() {
+ int result = 1;
+ REPORT_RESULT();
+}
+
+int main() {
+ EM_ASM(
+ FS.mkdir('/working');
+ FS.mount(IDBFS, {}, '/working');
+ );
+
+#if FIRST
+ // store local files to backing IDB
+ EM_ASM_REEXPAND(
+ FS.writeFile('/working/waka.txt', 'az');
+ FS.writeFile('/working/moar.txt', SECRET);
+ FS.syncfs(function (err) {
+ assert(!err);
+
+ ccall('success', 'v', '', []);
+ });
+ );
+#else
+ // load files from backing IDB
+ EM_ASM_REEXPAND(
+ FS.syncfs(true, function (err) {
+ assert(!err);
+
+ var contents = FS.readFile('/working/waka.txt', { encoding: 'utf8' });
+ assert(contents === 'az');
+
+ var secret = FS.readFile('/working/moar.txt', { encoding: 'utf8' });
+ assert(secret === SECRET);
+
+ ccall('success', 'v', '', []);
+ });
+ );
+#endif
+
+ emscripten_exit_with_live_runtime();
+
+ return 0;
+}
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;
+}