diff options
author | Anthony Pesch <inolen@gmail.com> | 2014-01-29 19:49:56 -0800 |
---|---|---|
committer | Anthony Pesch <inolen@gmail.com> | 2014-01-30 14:58:35 -0800 |
commit | e431e3d0e7e8cb17d956f8da4b94d4e02fa8efdf (patch) | |
tree | 49b164404ed024cbb45af0593ef1843aef31387f /tests/fs/test_mount.c | |
parent | 25252c1c65d622e84fb8ae646f90440b6587ea10 (diff) |
added basic unmount support
don't emit syncfs callback multiple times
error when mounting to an existing mountpoint
Diffstat (limited to 'tests/fs/test_mount.c')
-rw-r--r-- | tests/fs/test_mount.c | 60 |
1 files changed, 60 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; +} |