From 2c604baac21b25675daf0e9b2a2a41806f6e7598 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9e=20Kooi?= Date: Wed, 21 Feb 2018 13:52:18 +0100 Subject: [PATCH 1/9] try installing rust on travis --- .travis.yml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3ea5d4f..856a4c7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,13 @@ node_js: -- "4" -- "5" -- "6" -- "7" + - stable + - 8 sudo: false language: node_js -script: "npm run test" +before_script: + - 'curl https://sh.rustup.rs -sSf | sh' + - 'rustup update nightly' + - 'rustup target add wasm32-unknown-unknown --toolchain nightly' + - 'cargo install --git https://github.com/alexcrichton/wasm-gc' +script: + - 'npm test' # after_success: "npm i -g codecov && npm run coverage && codecov" From 6d3b86458e887cdab97d2c4b65f02b9b1d79b95d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9e=20Kooi?= Date: Wed, 21 Feb 2018 13:55:41 +0100 Subject: [PATCH 2/9] fix --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 856a4c7..7558c44 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ node_js: sudo: false language: node_js before_script: - - 'curl https://sh.rustup.rs -sSf | sh' + - 'curl https://sh.rustup.rs -sSf | sh -s -- -y' - 'rustup update nightly' - 'rustup target add wasm32-unknown-unknown --toolchain nightly' - 'cargo install --git https://github.com/alexcrichton/wasm-gc' From a47748b0ba32595814285fae25bb77a4ce942aa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9e=20Kooi?= Date: Wed, 21 Feb 2018 14:00:07 +0100 Subject: [PATCH 3/9] add cargo PATH --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 7558c44..0ce70a6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,6 +5,7 @@ sudo: false language: node_js before_script: - 'curl https://sh.rustup.rs -sSf | sh -s -- -y' + - 'export PATH="$HOME/.cargo:$PATH"' - 'rustup update nightly' - 'rustup target add wasm32-unknown-unknown --toolchain nightly' - 'cargo install --git https://github.com/alexcrichton/wasm-gc' From d4aa00750bd8d283c2edc5b7bcbcf45dee8b3173 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9e=20Kooi?= Date: Wed, 21 Feb 2018 14:01:59 +0100 Subject: [PATCH 4/9] verbose --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 0ce70a6..e3a2d93 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ node_js: sudo: false language: node_js before_script: - - 'curl https://sh.rustup.rs -sSf | sh -s -- -y' + - 'curl https://sh.rustup.rs -sSf | sh -s -- -y -v' - 'export PATH="$HOME/.cargo:$PATH"' - 'rustup update nightly' - 'rustup target add wasm32-unknown-unknown --toolchain nightly' From 4111f9b61787d77e6af56da0bcd140c6cec20818 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9e=20Kooi?= Date: Wed, 21 Feb 2018 14:05:17 +0100 Subject: [PATCH 5/9] check path in postinstall message? --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index e3a2d93..521fa39 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ node_js: sudo: false language: node_js before_script: - - 'curl https://sh.rustup.rs -sSf | sh -s -- -y -v' + - 'curl https://sh.rustup.rs -sSf | sh -s -- -y -v --no-modify-path' - 'export PATH="$HOME/.cargo:$PATH"' - 'rustup update nightly' - 'rustup target add wasm32-unknown-unknown --toolchain nightly' From 8a678d0a5375cbe5f9e4e90c39078c1d8f08a9cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9e=20Kooi?= Date: Wed, 21 Feb 2018 14:06:51 +0100 Subject: [PATCH 6/9] uhhh correct path --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 521fa39..8f7bfce 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,8 +4,8 @@ node_js: sudo: false language: node_js before_script: - - 'curl https://sh.rustup.rs -sSf | sh -s -- -y -v --no-modify-path' - - 'export PATH="$HOME/.cargo:$PATH"' + - 'curl https://sh.rustup.rs -sSf | sh -s -- -y -v' + - 'export PATH="$HOME/.cargo/bin:$PATH"' - 'rustup update nightly' - 'rustup target add wasm32-unknown-unknown --toolchain nightly' - 'cargo install --git https://github.com/alexcrichton/wasm-gc' From 9dc5596a3968ea5c7843d1044737263add467e4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9e=20Kooi?= Date: Wed, 21 Feb 2018 14:12:41 +0100 Subject: [PATCH 7/9] Add basic test --- example/package.json | 7 +++++++ package.json | 7 +------ test/rust.js | 15 +++++++++++++++ test/rust/main.js | 14 ++++++++++++++ 4 files changed, 37 insertions(+), 6 deletions(-) create mode 100644 example/package.json create mode 100644 test/rust.js create mode 100644 test/rust/main.js diff --git a/example/package.json b/example/package.json new file mode 100644 index 0000000..0836c93 --- /dev/null +++ b/example/package.json @@ -0,0 +1,7 @@ +{ + "browserify": { + "transform": [ + "../" + ] + } +} diff --git a/package.json b/package.json index 2b1dbf2..9f32ae7 100644 --- a/package.json +++ b/package.json @@ -8,12 +8,7 @@ "start:external": "bankai start example/external", "build": "mkdir -p dist/ && browserify -t ./ example/inline.js -o dist/bundle.js", "build:external": "mkdir -p dist/ && browserify -t ./ example/external.js -o dist/bundle.js", - "test": "standard" - }, - "browserify": { - "transform": [ - "./" - ] + "test": "standard && node test" }, "dependencies": { "falafel": "^2.1.0", diff --git a/test/rust.js b/test/rust.js new file mode 100644 index 0000000..5441bd2 --- /dev/null +++ b/test/rust.js @@ -0,0 +1,15 @@ +var test = require('tape') +var path = require('path') +var vm = require('vm') +var browserify = require('browserify') +var rustify = require('../') + +test('rust', function (t) { + t.plan(3) + browserify(path.join(__dirname, 'rust/main.js')) + .transform(rustify) + .bundle(function (err, src) { + t.ifError(err) + vm.runInNewContext(src, { T: t }) + }) +}) diff --git a/test/rust/main.js b/test/rust/main.js new file mode 100644 index 0000000..9eaa779 --- /dev/null +++ b/test/rust/main.js @@ -0,0 +1,14 @@ +var rust = require('rustify') + +var wasm = rust` + #[no_mangle] + pub fn add_one(x: i32) -> i32 { + x + 1 + } +` + +WebAssembly.instantiate(wasm, {}).then(function (res) { + var addOne = res.instance.exports.add_one + T.equal(addOne(41), 42) + T.equal(addOne(68), 69) +}).catch(T.fail) From d4aa1f8a70556cd6be310fc3a0ab1182e20a9bdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9e=20Kooi?= Date: Wed, 21 Feb 2018 14:21:32 +0100 Subject: [PATCH 8/9] use install.sh in scripts/ --- .travis.yml | 4 +--- package.json | 7 ++++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8f7bfce..1680a00 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,9 +6,7 @@ language: node_js before_script: - 'curl https://sh.rustup.rs -sSf | sh -s -- -y -v' - 'export PATH="$HOME/.cargo/bin:$PATH"' - - 'rustup update nightly' - - 'rustup target add wasm32-unknown-unknown --toolchain nightly' - - 'cargo install --git https://github.com/alexcrichton/wasm-gc' + - 'sh scripts/install.sh' script: - 'npm test' # after_success: "npm i -g codecov && npm run coverage && codecov" diff --git a/package.json b/package.json index 9f32ae7..81f258f 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "start:external": "bankai start example/external", "build": "mkdir -p dist/ && browserify -t ./ example/inline.js -o dist/bundle.js", "build:external": "mkdir -p dist/ && browserify -t ./ example/external.js -o dist/bundle.js", - "test": "standard && node test" + "test": "standard && node test/index.js" }, "dependencies": { "falafel": "^2.1.0", @@ -22,6 +22,11 @@ "standard": "^10.0.3", "tape": "^4.8.0" }, + "standard": { + "ignore": [ + "test/*/**.js" + ] + }, "keywords": [ "browserify", "rust", From 09d8d190f8db68597ac7a4b1f8839ec9af150f8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9e=20Kooi?= Date: Wed, 21 Feb 2018 14:23:25 +0100 Subject: [PATCH 9/9] External test --- test/external.js | 15 +++++++++++++++ test/external/main.js | 9 +++++++++ test/external/module.rs | 8 ++++++++ test/index.js | 2 ++ 4 files changed, 34 insertions(+) create mode 100644 test/external.js create mode 100644 test/external/main.js create mode 100644 test/external/module.rs create mode 100644 test/index.js diff --git a/test/external.js b/test/external.js new file mode 100644 index 0000000..48d108e --- /dev/null +++ b/test/external.js @@ -0,0 +1,15 @@ +var test = require('tape') +var path = require('path') +var vm = require('vm') +var browserify = require('browserify') +var rustify = require('../') + +test('external', function (t) { + t.plan(2) + browserify(path.join(__dirname, 'external/main.js')) + .transform(rustify) + .bundle(function (err, src) { + t.ifError(err) + vm.runInNewContext(src, { T: t }) + }) +}) diff --git a/test/external/main.js b/test/external/main.js new file mode 100644 index 0000000..663ead2 --- /dev/null +++ b/test/external/main.js @@ -0,0 +1,9 @@ +var rust = require('rustify') + +var wasm = rust('./module.rs') + +WebAssembly.instantiate(wasm, {}) + .then(function (res) { + var module = res.instance.exports + T.equal(module.fib(7), 13) + }).catch(T.fail) diff --git a/test/external/module.rs b/test/external/module.rs new file mode 100644 index 0000000..3956812 --- /dev/null +++ b/test/external/module.rs @@ -0,0 +1,8 @@ +#[no_mangle] +pub fn fib(n: u32) -> u32 { + match n { + 0 => 0, + 1 => 1, + _ => fib(n - 1) + fib(n - 2), + } +} diff --git a/test/index.js b/test/index.js new file mode 100644 index 0000000..0d81ca9 --- /dev/null +++ b/test/index.js @@ -0,0 +1,2 @@ +require('./rust') +require('./external')