diff options
author | Anthony Pesch <inolen@gmail.com> | 2013-09-27 00:53:28 -0700 |
---|---|---|
committer | Anthony Pesch <inolen@gmail.com> | 2013-09-29 01:50:35 -0700 |
commit | 4db117910eb13fc93d632dd4e3fb4cf127544538 (patch) | |
tree | 64d1790b108f642168fb1c8033f407e32909b60e | |
parent | 67f4aab994dc04230d96eb0fed7f8bce57f2f188 (diff) |
- added basic nodefs r/w test
-rw-r--r-- | tests/fs/test_nodefs_rw.c | 49 | ||||
-rw-r--r-- | tests/test_core.py | 4 |
2 files changed, 53 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; +} diff --git a/tests/test_core.py b/tests/test_core.py index e78fb513..f41d59ab 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -7742,6 +7742,10 @@ def process(filename): finally: Settings.INCLUDE_FULL_LIBRARY = 0 + def test_fs_nodefs_rw(self): + src = open(path_from_root('tests', 'fs', 'test_nodefs_rw.c'), 'r').read() + self.do_run(src, 'success', force_c=True) + def test_unistd_access(self): if Settings.ASM_JS: Settings.ASM_JS = 2 # skip validation, asm does not support random code if not self.is_le32(): return self.skip('le32 needed for inline js') |