diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/fs/test_mount.c | 60 | ||||
-rw-r--r-- | tests/test_core.py | 4 |
2 files changed, 64 insertions, 0 deletions
diff --git a/tests/fs/test_mount.c b/tests/fs/test_mount.c new file mode 100644 index 00000000..b1a337ad --- /dev/null +++ b/tests/fs/test_mount.c @@ -0,0 +1,60 @@ +#include <assert.h> +#include <stdio.h> +#include <emscripten.h> + +int main() { + EM_ASM( + var ex; + + // write a file that should be unaffected by this process + FS.writeFile('/safe.txt', 'abc'); + + // mount it the first time + FS.mkdir('/working'); + FS.mount(MEMFS, {}, '/working'); + FS.writeFile('/working/waka.txt', 'az'); + + // mount to a missing directory + try { + FS.mount(MEMFS, {}, '/missing'); + } catch (e) { + ex = e; + } + assert(ex instanceof FS.ErrnoError && ex.errno === ERRNO_CODES.ENOENT); + + // mount to an existing mountpoint + try { + FS.mount(MEMFS, {}, '/working'); + } catch (e) { + ex = e; + } + assert(ex instanceof FS.ErrnoError && ex.errno === ERRNO_CODES.EBUSY); + + // unmount + FS.unmount('/working'); + + // unmount something that's not mounted + try { + FS.unmount('/working'); + } catch (e) { + ex = e; + } + assert(ex instanceof FS.ErrnoError && ex.errno === ERRNO_CODES.EINVAL); + + // try to read the file from the old mount + try { + FS.readFile('/working/waka.txt', { encoding: 'utf8' }); + } catch (e) { + ex = e; + } + assert(ex instanceof FS.ErrnoError && ex.errno === ERRNO_CODES.ENOENT); + + // check the safe file + var contents = FS.readFile('/safe.txt', { encoding: 'utf8' }); + assert(contents === 'abc'); + ); + + puts("success"); + + return 0; +} diff --git a/tests/test_core.py b/tests/test_core.py index 4d915e71..43b675f5 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -3957,6 +3957,10 @@ def process(filename): ''' self.do_run(src, ('got: 35\ngot: 45\ngot: 25\ngot: 15\nisatty? 0,0,1\n', 'isatty? 0,0,1\ngot: 35\ngot: 45\ngot: 25\ngot: 15\n'), post_build=post) + def test_mount(self): + src = open(path_from_root('tests', 'fs', 'test_mount.c'), 'r').read() + self.do_run(src, 'success', force_c=True) + def test_fwrite_0(self): test_path = path_from_root('tests', 'core', 'test_fwrite_0') src, output = (test_path + s for s in ('.in', '.out')) |