diff options
author | David Baker <dave@matrix.org> | 2018-09-21 16:01:51 +0100 |
---|---|---|
committer | David Baker <dave@matrix.org> | 2018-09-21 16:01:51 +0100 |
commit | 122867c45c7f41b82a550a9665d34b7dda1c3ffa (patch) | |
tree | 258bcabe939d5cc4275b71ac8d958767835a047d /javascript/test | |
parent | ed02c217e6f7e95e495c241c8ff27ef6b5dd8417 (diff) |
WebAssembly support!
Quite a lot going on in this PR:
* Updates to support recent emscripten, switching to WASM which is now the default
* Use emscripten's MODULARIZE option rather than wrapping it ourself, since doing
so in pre-post js doesn't work anymore.
* Most changes are moving the emscripten runtime functions to top-level
calls rather than in the Module object.
* Get rid of duplicated NULL_BYTE_PADDING_LENGTH
* Fix ciphertext_length used without being declared
* Fix things that caused the closure compiler to error, eg. using
OLM_OPTIONS without a declaration.
* Wait until module is inited to do OLM_ERROR = olm_error()
The main BREAKING CHANGE here is that the module now needs to initialise
asyncronously (because it has to load the wasm file). require()ing olm
now gives a function which needs to be called to create an instance.
The resulting object has a promise-like then() method that can be used
to detect when the module is ready. (We could use MODULARIZE_INSTANCE
to return the module directly as before, rather than the function,
but then we don't get the .then() method).
Diffstat (limited to 'javascript/test')
-rw-r--r-- | javascript/test/megolm.spec.js | 7 | ||||
-rw-r--r-- | javascript/test/olm.spec.js | 10 | ||||
-rw-r--r-- | javascript/test/pk.spec.js | 8 |
3 files changed, 19 insertions, 6 deletions
diff --git a/javascript/test/megolm.spec.js b/javascript/test/megolm.spec.js index 8f9d24a..9d5eb72 100644 --- a/javascript/test/megolm.spec.js +++ b/javascript/test/megolm.spec.js @@ -16,12 +16,15 @@ limitations under the License. "use strict"; -var Olm = require('../olm'); +var Olm = require('../olm')(); describe("megolm", function() { var aliceSession, bobSession; - beforeEach(function() { + beforeEach(function(done) { + Olm.then(function() { + done(); + }); aliceSession = new Olm.OutboundGroupSession(); bobSession = new Olm.InboundGroupSession(); }); diff --git a/javascript/test/olm.spec.js b/javascript/test/olm.spec.js index b7cc3ae..94fa87b 100644 --- a/javascript/test/olm.spec.js +++ b/javascript/test/olm.spec.js @@ -16,7 +16,7 @@ limitations under the License. "use strict"; -var Olm = require('../olm'); +var Olm = require('../olm')(); if (!Object.keys) { Object.keys = function(o) { @@ -30,7 +30,13 @@ describe("olm", function() { var aliceAccount, bobAccount; var aliceSession, bobSession; - beforeEach(function() { + beforeEach(function(done) { + // This should really be in a beforeAll, but jasmine-node + // doesn't support that + Olm.then(function() { + done(); + }); + aliceAccount = new Olm.Account(); bobAccount = new Olm.Account(); aliceSession = new Olm.Session(); diff --git a/javascript/test/pk.spec.js b/javascript/test/pk.spec.js index aec90ac..9f7dbfd 100644 --- a/javascript/test/pk.spec.js +++ b/javascript/test/pk.spec.js @@ -16,7 +16,7 @@ limitations under the License. "use strict"; -var Olm = require('../olm'); +var Olm = require('../olm')(); if (!Object.keys) { Object.keys = function(o) { @@ -29,7 +29,11 @@ if (!Object.keys) { describe("pk", function() { var encryption, decryption; - beforeEach(function() { + beforeEach(function(done) { + Olm.then(function() { + done(); + }); + encryption = new Olm.PkEncryption(); decryption = new Olm.PkDecryption(); }); |