Skip to content

Commit 7296294

Browse files
Set up testing (#9)
* try installing rust on travis * fix * add cargo PATH * verbose * check path in postinstall message? * uhhh correct path * Add basic test * use install.sh in scripts/ * External test
1 parent dcdf27d commit 7296294

File tree

9 files changed

+84
-11
lines changed

9 files changed

+84
-11
lines changed

.travis.yml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
node_js:
2-
- "4"
3-
- "5"
4-
- "6"
5-
- "7"
2+
- stable
3+
- 8
64
sudo: false
75
language: node_js
8-
script: "npm run test"
6+
before_script:
7+
- 'curl https://sh.rustup.rs -sSf | sh -s -- -y -v'
8+
- 'export PATH="$HOME/.cargo/bin:$PATH"'
9+
- 'sh scripts/install.sh'
10+
script:
11+
- 'npm test'
912
# after_success: "npm i -g codecov && npm run coverage && codecov"

example/package.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"browserify": {
3+
"transform": [
4+
"../"
5+
]
6+
}
7+
}

package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,7 @@
88
"start:external": "bankai start example/external",
99
"build": "mkdir -p dist/ && browserify -t ./ example/inline.js -o dist/bundle.js",
1010
"build:external": "mkdir -p dist/ && browserify -t ./ example/external.js -o dist/bundle.js",
11-
"test": "standard"
12-
},
13-
"browserify": {
14-
"transform": [
15-
"./"
16-
]
11+
"test": "standard && node test/index.js"
1712
},
1813
"dependencies": {
1914
"falafel": "^2.1.0",
@@ -27,6 +22,11 @@
2722
"standard": "^10.0.3",
2823
"tape": "^4.8.0"
2924
},
25+
"standard": {
26+
"ignore": [
27+
"test/*/**.js"
28+
]
29+
},
3030
"keywords": [
3131
"browserify",
3232
"rust",

test/external.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
var test = require('tape')
2+
var path = require('path')
3+
var vm = require('vm')
4+
var browserify = require('browserify')
5+
var rustify = require('../')
6+
7+
test('external', function (t) {
8+
t.plan(2)
9+
browserify(path.join(__dirname, 'external/main.js'))
10+
.transform(rustify)
11+
.bundle(function (err, src) {
12+
t.ifError(err)
13+
vm.runInNewContext(src, { T: t })
14+
})
15+
})

test/external/main.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
var rust = require('rustify')
2+
3+
var wasm = rust('./module.rs')
4+
5+
WebAssembly.instantiate(wasm, {})
6+
.then(function (res) {
7+
var module = res.instance.exports
8+
T.equal(module.fib(7), 13)
9+
}).catch(T.fail)

test/external/module.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#[no_mangle]
2+
pub fn fib(n: u32) -> u32 {
3+
match n {
4+
0 => 0,
5+
1 => 1,
6+
_ => fib(n - 1) + fib(n - 2),
7+
}
8+
}

test/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
require('./rust')
2+
require('./external')

test/rust.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
var test = require('tape')
2+
var path = require('path')
3+
var vm = require('vm')
4+
var browserify = require('browserify')
5+
var rustify = require('../')
6+
7+
test('rust', function (t) {
8+
t.plan(3)
9+
browserify(path.join(__dirname, 'rust/main.js'))
10+
.transform(rustify)
11+
.bundle(function (err, src) {
12+
t.ifError(err)
13+
vm.runInNewContext(src, { T: t })
14+
})
15+
})

test/rust/main.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
var rust = require('rustify')
2+
3+
var wasm = rust`
4+
#[no_mangle]
5+
pub fn add_one(x: i32) -> i32 {
6+
x + 1
7+
}
8+
`
9+
10+
WebAssembly.instantiate(wasm, {}).then(function (res) {
11+
var addOne = res.instance.exports.add_one
12+
T.equal(addOne(41), 42)
13+
T.equal(addOne(68), 69)
14+
}).catch(T.fail)

0 commit comments

Comments
 (0)