diff --git a/.github/workflows/rust_tests.yml b/.github/workflows/rust_tests.yml index 67749ab3..551419fe 100644 --- a/.github/workflows/rust_tests.yml +++ b/.github/workflows/rust_tests.yml @@ -22,15 +22,17 @@ jobs: - x86_64-unknown-linux-gnu - x86_64-unknown-linux-musl - wasm32-unknown-unknown + - wasm32-wasi steps: - uses: actions/checkout@v2 + # setup wasmedge + - run: curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install.sh | sudo bash -s -- -p /usr/local # Setup musl if needed - run: sudo apt-get update if: matrix.target == 'x86_64-unknown-linux-musl' - run: sudo apt-get install -y musl musl-dev musl-tools cmake if: matrix.target == 'x86_64-unknown-linux-musl' - # # Caching stuff - uses: actions/cache@v2 with: @@ -96,7 +98,22 @@ jobs: command: build toolchain: ${{ matrix.toolchain }} args: --target wasm32-unknown-unknown --features reqwest - + - uses: actions-rs/cargo@v1 + name: "Build" + if: matrix.target == 'wasm32-wasi' + with: + command: build + toolchain: ${{ matrix.toolchain }} + args: --target ${{ matrix.target }} --features "http-binding hyper hyper_wasi" + - uses: actions-rs/cargo@v1 + name: "Test" + if: matrix.target == 'wasm32-wasi' + with: + command: test + toolchain: ${{ matrix.toolchain }} + args: --target ${{ matrix.target }} --features "http-binding hyper hyper_wasi" + env: + CARGO_TARGET_WASM32_WASI_RUNNER: wasmedge # Build examples - uses: actions-rs/cargo@v1 name: "Build reqwest-wasm-example" diff --git a/Cargo.toml b/Cargo.toml index 29f150bf..bb72c950 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -46,13 +46,12 @@ uuid = { version = "1", features = ["v4"] } actix-web = { version = "4", optional = true } actix-http = { version = "3", optional = true } reqwest-lib = { version = "^0.11", default-features = false, features = ["rustls-tls"], optional = true, package = "reqwest" } -rdkafka-lib = { version = "^0.29", features = ["cmake-build"], optional = true, package = "rdkafka" } +rdkafka-lib = { version = "^0.36", features = ["cmake-build"], optional = true, package = "rdkafka" } warp-lib = { version = "^0.3", optional = true, package = "warp" } async-trait = { version = "^0.1.33", optional = true } bytes = { version = "^1.0", optional = true } futures = { version = "^0.3", optional = true } http = { version = "0.2", optional = true } -hyper = { version = "^0.14", optional = true } axum-lib = { version = "^0.6", optional = true, package="axum"} http-body = { version = "^0.4", optional = true } poem-lib = { version = "=1.2.34", optional = true, package = "poem" } @@ -64,6 +63,12 @@ hostname = "^0.3" [target.'cfg(all(target_arch = "wasm32", target_os = "unknown"))'.dependencies] web-sys = { version = "^0.3", features = ["Window", "Location"] } +[target.'cfg(not(target_os = "wasi"))'.dependencies] +hyper = { version = "^0.14", optional = true } + +[target.'cfg(all(target_arch = "wasm32", target_os = "wasi"))'.dependencies] +hyper_wasi = { version = "0.15", features = ["full"], optional = true } + [dev-dependencies] rstest = "0.6" claims = "0.7.1" @@ -72,11 +77,25 @@ serde_yaml = "0.8" rmp-serde = "1" # runtime dev-deps -actix-rt = { version = "^2" } + url = { version = "^2.1", features = ["serde"] } serde_json = { version = "^1.0" } chrono = { version = "^0.4", features = ["serde"] } mockito = "0.25.1" -tokio = { version = "^1.0", features = ["full"] } mime = "0.3" + + +[target.'cfg(not(target_os = "wasi"))'.dev-dependencies] +actix-rt = { version = "^2" } +tokio = { version = "^1.0", features = ["full"] } tower = { version = "0.4", features = ["util"] } + +[target.'cfg(all(target_arch = "wasm32", target_os = "wasi"))'.dev-dependencies] +tokio_wasi = { version = "1", features = [ + "io-util", + "fs", + "net", + "time", + "rt", + "macros", +] } diff --git a/tests/version_number.rs b/tests/version_number.rs index 288592d0..b65761a6 100644 --- a/tests/version_number.rs +++ b/tests/version_number.rs @@ -1,9 +1,11 @@ #[test] +#[cfg_attr(target_os = "wasi", ignore)] fn test_readme_deps() { version_sync::assert_markdown_deps_updated!("README.md"); } #[test] +#[cfg_attr(target_os = "wasi", ignore)] fn test_html_root_url() { version_sync::assert_html_root_url_updated!("src/lib.rs"); }