aboutsummaryrefslogtreecommitdiff
path: root/javascript/test
diff options
context:
space:
mode:
authorDavid Baker <dave@matrix.org>2018-09-21 16:01:51 +0100
committerDavid Baker <dave@matrix.org>2018-09-21 16:01:51 +0100
commit122867c45c7f41b82a550a9665d34b7dda1c3ffa (patch)
tree258bcabe939d5cc4275b71ac8d958767835a047d /javascript/test
parented02c217e6f7e95e495c241c8ff27ef6b5dd8417 (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.js7
-rw-r--r--javascript/test/olm.spec.js10
-rw-r--r--javascript/test/pk.spec.js8
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();
});