mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-03-16 10:10:52 +00:00
This commit starts to add infrastructure for targeted diagnostics in the `#[wasm_bindgen]` attribute, intended eventually at providing much better errors as they'll be pointing to exactly the code in question rather than always to a `#[wasm_bindgen]` attribute. The general changes are are: * A new `Diagnostic` error type is added to the backend. A `Diagnostic` is created with a textual error or with a span, and it can also be created from a list of diagnostics. A `Diagnostic` implements `ToTokens` which emits a bunch of invocations of `compile_error!` that will cause rustc to later generate errors. * Fallible implementations of `ToTokens` have switched to using a new trait, `TryToTokens`, which returns a `Result` to use `?` with. * The `MacroParse` trait has changed to returning a `Result` to propagate errors upwards. * A new `ui-tests` crate was added which uses `compiletest_rs` to add UI tests. These UI tests will verify that our output improves over time and does not regress. This test suite is added to CI as a new builder as well. * No `Diagnostic` instances are created just yet, everything continues to panic and return `Ok`, with the one exception of the top-level invocations of `syn::parse` which now create a `Diagnostic` and pass it along. This commit does not immediately improve diagnostics but the intention is that it is laying the groundwork for improving diagnostics over time. It should ideally be much easier to contribute improved diagnostics after this commit! cc #601
188 lines
6.4 KiB
YAML
188 lines
6.4 KiB
YAML
language: rust
|
|
sudo: false
|
|
|
|
INSTALL_NODE_VIA_NVM: &INSTALL_NODE_VIA_NVM
|
|
|
|
|
rustup target add wasm32-unknown-unknown
|
|
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
|
|
source ~/.nvm/nvm.sh
|
|
nvm install v10.5
|
|
|
|
INSTALL_GECKODRIVER: &INSTALL_GECKODRIVER
|
|
|
|
|
curl --retry 5 -LO https://github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-linux64.tar.gz
|
|
tar xf geckodriver-v0.21.0-linux64.tar.gz
|
|
export GECKODRIVER=`pwd`/geckodriver
|
|
|
|
DEPLOY_TO_GITHUB: &DEPLOY_TO_GITHUB
|
|
before_deploy:
|
|
|
|
|
name="wasm-bindgen-$TRAVIS_TAG-$TARGET"
|
|
mkdir "$name"
|
|
cp "target/$TARGET/release/wasm-bindgen" "$name/"
|
|
cp "target/$TARGET/release/wasm2es6js" "$name/"
|
|
cp "target/$TARGET/release/wasm-bindgen-test-runner" "$name/"
|
|
cp README.md LICENSE-MIT LICENSE-APACHE "$name/"
|
|
tar czvf "$name.tar.gz" "$name"
|
|
deploy:
|
|
api_key:
|
|
secure: "qCiELnEnvyKpWHDttgTNf+ElZGbWlvthu5aOIj5nYfov+h6g1+mkWnDFP6at/WPlE78zE/f/z/dL2KB2I7w/cxH/T4P1nWh0A9DvrpY6hqWkK2pgN5dPeWE/a4flI7AdH0A6wMRw7m00uMgDjlzN78v7XueccpJCxSO5allQN5jweAQvMX2QA07TbLRJc7Lq6lfVwSf8OfrcO8qCbcIzJTsC4vtbh6jkUYg1OAaU2tAYlskBy9ZYmHWCExIAu/zxzcJY9OpApPD9Ea4CyrsfjniAyRBJ87Weh/sP4XhiWeRPVmvA4HAzv4Pps9ps+Ar5QmsX53rhKQ3id7/VPR8ggaAHxrYUiJPvJRtbP6cKKOlDiK0ooP+vI4vjxWeNVj9ibEolSYOlT0ENIvPK1BppA6VgAoJOjwPr0Q16Ma4AmvLkIkowJiXCm2Jlje/5c0vPEAGJVgUtkj3jFQzgXwyEMpzxUlhHmYpmnfeaM0tK/Kiiwe1monL/ydMlyfV55kNylylCg+XoTnf420AFChKbD4DM5Z7ZsjU9g8fF3LUoN0sKpmLDp+GvwjLi9YtGogWB71Q2MFp43MSL0YLshkyYYoZKrVMiy5J9hKNUxhT2jNEq53Z69syIHHMCxHL9GoAcuHxIKOA7uTMW0aCoyy2I+dfAKKsrUGwGYaNC5LZdUQI="
|
|
file_glob: true
|
|
file:
|
|
- wasm-bindgen-$TRAVIS_TAG-$TARGET.tar.gz
|
|
on:
|
|
tags: true
|
|
provider: releases
|
|
skip_cleanup: true
|
|
if: branch = master OR branch =~ /^\d/
|
|
|
|
matrix:
|
|
include:
|
|
# Tests pass on nightly
|
|
- rust: nightly
|
|
env: JOB=test-bindgen
|
|
install:
|
|
- *INSTALL_NODE_VIA_NVM
|
|
- npm ci --verbose
|
|
script:
|
|
- cargo test --release
|
|
- cargo test --target wasm32-unknown-unknown
|
|
# Check JS output from all tests against eslint
|
|
- npm run run-lint-generated-tests
|
|
# Check Examples against eslint
|
|
- npm run run-lint-examples
|
|
addons:
|
|
firefox: latest
|
|
if: branch = master
|
|
|
|
# All examples work
|
|
- rust: nightly
|
|
env: JOB=examples-build
|
|
install:
|
|
- *INSTALL_NODE_VIA_NVM
|
|
- npm ci --verbose
|
|
script:
|
|
- |
|
|
for dir in `ls examples | grep -v README | grep -v asm.js | grep -v no_modules`; do
|
|
(cd examples/$dir &&
|
|
sed -i 's/: "webpack-dev-server"/: "webpack"/' package.json &&
|
|
sed -i 's/npm install//' build.sh &&
|
|
ln -s ../../node_modules . &&
|
|
./build.sh) || exit 1;
|
|
done
|
|
if: branch = master
|
|
|
|
# The `web-sys` crate's tests pass on nightly.
|
|
- rust: nightly
|
|
env: JOB=test-web-sys
|
|
install:
|
|
- *INSTALL_NODE_VIA_NVM
|
|
- *INSTALL_GECKODRIVER
|
|
script:
|
|
- cargo test -p web-sys --target wasm32-unknown-unknown
|
|
addons:
|
|
firefox: latest
|
|
if: branch = master
|
|
|
|
# The `js-sys` crate's tests pass on nightly.
|
|
- rust: nightly
|
|
env: JOB=test-js-sys
|
|
install:
|
|
- *INSTALL_NODE_VIA_NVM
|
|
- *INSTALL_GECKODRIVER
|
|
script:
|
|
- cargo test -p js-sys --target wasm32-unknown-unknown
|
|
addons:
|
|
firefox: latest
|
|
if: branch = master
|
|
|
|
# Tests pass on nightly using yarn
|
|
- rust: nightly
|
|
env: JOB=test-yarn-smoke
|
|
install:
|
|
- *INSTALL_NODE_VIA_NVM
|
|
- travis_retry curl -OLSf https://yarnpkg.com/install.sh
|
|
- travis_retry bash install.sh -- --version 1.7.0
|
|
- export PATH=$HOME/.yarn/bin:$PATH
|
|
- yarn install --freeze-lockfile
|
|
script: cargo test api::works
|
|
if: branch = master
|
|
|
|
# WebIDL tests pass on nightly
|
|
- rust: nightly
|
|
env: JOB=test-webidl
|
|
install: *INSTALL_NODE_VIA_NVM
|
|
script:
|
|
- cargo test -p wasm-bindgen-webidl
|
|
- cargo test -p webidl-tests --target wasm32-unknown-unknown
|
|
if: branch = master
|
|
|
|
# UI tests for the macro work just fine
|
|
- rust: nightly
|
|
env: JOB=macro-ui
|
|
script: cargo test -p ui-tests
|
|
if: branch = master
|
|
|
|
# Dist linux binary
|
|
- rust: nightly
|
|
env: JOB=dist-linux TARGET=x86_64-unknown-linux-musl
|
|
before_script: rustup target add $TARGET
|
|
install:
|
|
- travis_retry curl -O https://www.openssl.org/source/openssl-1.0.2o.tar.gz
|
|
- tar xf openssl-1.0.2o.tar.gz
|
|
- (cd openssl-1.0.2o &&
|
|
CC=musl-gcc ./Configure --prefix=$HOME/openssl-musl no-dso no-ssl2 no-ssl3 linux-x86_64 -fPIC &&
|
|
make -j$(nproc) &&
|
|
make install)
|
|
- export OPENSSL_DIR=$HOME/openssl-musl
|
|
script: cargo build --manifest-path crates/cli/Cargo.toml --release --target $TARGET
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- musl-tools
|
|
<<: *DEPLOY_TO_GITHUB
|
|
|
|
# Dist OSX binary
|
|
- rust: nightly
|
|
os: osx
|
|
env: JOB=dist-osx MACOSX_DEPLOYMENT_TARGET=10.7 TARGET=x86_64-apple-darwin
|
|
script: cargo build --manifest-path crates/cli/Cargo.toml --release --target $TARGET
|
|
<<: *DEPLOY_TO_GITHUB
|
|
|
|
# CLI builds on stable
|
|
- rust: stable
|
|
env: JOB=check-stable-cli
|
|
script: cargo check --manifest-path crates/cli/Cargo.toml
|
|
if: branch = master
|
|
# CLI builds on nightly
|
|
- rust: nightly
|
|
env: JOB=check-nightly-cli
|
|
script: cargo check --manifest-path crates/cli/Cargo.toml
|
|
if: branch = master
|
|
|
|
# Build documentation for the gh-pages branch
|
|
- rust: nightly
|
|
env: JOB=guide-build-and-deploy
|
|
cache:
|
|
directories:
|
|
- $HOME/.cargo
|
|
before_script:
|
|
- (test -x $HOME/.cargo/bin/cargo-install-update || cargo install cargo-update)
|
|
- (test -x $HOME/.cargo/bin/mdbook || cargo install --vers "^0.1" mdbook)
|
|
- cargo install-update -a
|
|
script:
|
|
- (cd guide && mdbook build)
|
|
- cargo doc --no-deps -p wasm-bindgen -p web-sys -p js-sys -p wasm-bindgen-futures
|
|
- mv target/doc guide/book/api
|
|
deploy:
|
|
provider: pages
|
|
skip-cleanup: true
|
|
github-token: $GITHUB_TOKEN # Set in travis-ci.org dashboard, marked secure
|
|
local-dir: guide/book
|
|
keep-history: false
|
|
if: branch = master
|
|
|
|
notifications:
|
|
email:
|
|
on_success: never
|