aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAnthony Pesch <inolen@gmail.com>2014-01-29 19:49:56 -0800
committerAnthony Pesch <inolen@gmail.com>2014-01-30 14:58:35 -0800
commite431e3d0e7e8cb17d956f8da4b94d4e02fa8efdf (patch)
tree49b164404ed024cbb45af0593ef1843aef31387f /tests
parent25252c1c65d622e84fb8ae646f90440b6587ea10 (diff)
added basic unmount support
don't emit syncfs callback multiple times error when mounting to an existing mountpoint
Diffstat (limited to 'tests')
-rw-r--r--tests/fs/test_mount.c60
-rw-r--r--tests/test_core.py4
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 18d7d74a..9827a859 100644
--- a/tests/test_core.py
+++ b/tests/test_core.py
@@ -3955,6 +3955,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'))