From cfbd45bfc0a131dd5dd0590ca56aaaca109ed5d0 Mon Sep 17 00:00:00 2001 From: Lorenzo Date: Wed, 2 Nov 2022 15:22:38 +0000 Subject: [PATCH] Support Wasi as target (#216) * Improve features * Add wasm32-wasi as a target * Update .github/workflows/ci.yml Co-authored-by: morenol <22335041+morenol@users.noreply.github.com> --- .github/workflows/ci.yml | 10 ++++++ Cargo.toml | 7 ++-- src/algorithm/neighbour/bbd_tree.rs | 5 ++- src/algorithm/neighbour/cover_tree.rs | 15 ++++++-- src/algorithm/neighbour/linear_search.rs | 10 ++++-- src/algorithm/sort/heap_select.rs | 25 ++++++++++--- src/algorithm/sort/quick_sort.rs | 5 ++- src/cluster/dbscan.rs | 14 ++++++-- src/cluster/kmeans.rs | 15 ++++++-- src/dataset/boston.rs | 5 ++- src/dataset/breast_cancer.rs | 5 ++- src/dataset/diabetes.rs | 5 ++- src/dataset/digits.rs | 5 ++- src/dataset/generator.rs | 15 ++++++-- src/dataset/iris.rs | 5 ++- src/dataset/mod.rs | 5 ++- src/decomposition/pca.rs | 17 ++++++--- src/decomposition/svd.rs | 7 ++-- src/ensemble/random_forest_classifier.rs | 15 ++++++-- src/ensemble/random_forest_regressor.rs | 15 ++++++-- src/linalg/traits/cholesky.rs | 10 ++++-- src/linalg/traits/evd.rs | 15 ++++++-- src/linalg/traits/lu.rs | 10 ++++-- src/linalg/traits/qr.rs | 10 ++++-- src/linalg/traits/svd.rs | 20 ++++++++--- src/linear/elastic_net.rs | 12 +++++-- src/linear/lasso.rs | 7 ++-- src/linear/linear_regression.rs | 7 ++-- src/linear/logistic_regression.rs | 36 +++++++++++++++---- src/linear/ridge_regression.rs | 7 ++-- src/metrics/accuracy.rs | 10 ++++-- src/metrics/auc.rs | 5 ++- src/metrics/cluster_hcv.rs | 5 ++- src/metrics/cluster_helpers.rs | 15 ++++++-- src/metrics/distance/euclidian.rs | 5 ++- src/metrics/distance/hamming.rs | 5 ++- src/metrics/distance/mahalanobis.rs | 5 ++- src/metrics/distance/manhattan.rs | 5 ++- src/metrics/distance/minkowski.rs | 5 ++- src/metrics/f1.rs | 5 ++- src/metrics/mean_absolute_error.rs | 5 ++- src/metrics/mean_squared_error.rs | 5 ++- src/metrics/precision.rs | 10 ++++-- src/metrics/r2.rs | 5 ++- src/metrics/recall.rs | 10 ++++-- src/model_selection/kfold.rs | 35 ++++++++++++++---- src/model_selection/mod.rs | 20 ++++++++--- src/naive_bayes/bernoulli.rs | 15 ++++++-- src/naive_bayes/categorical.rs | 15 ++++++-- src/naive_bayes/gaussian.rs | 15 ++++++-- src/naive_bayes/multinomial.rs | 15 ++++++-- src/neighbors/knn_classifier.rs | 15 ++++++-- src/neighbors/knn_regressor.rs | 15 ++++++-- .../first_order/gradient_descent.rs | 5 ++- src/optimization/first_order/lbfgs.rs | 5 ++- src/optimization/line_search.rs | 5 ++- src/preprocessing/categorical.rs | 25 ++++++++++--- src/preprocessing/numerical.rs | 5 ++- src/preprocessing/series_encoder.rs | 30 ++++++++++++---- src/svm/mod.rs | 20 ++++++++--- src/svm/svc.rs | 20 ++++++++--- src/svm/svr.rs | 4 +-- src/tree/decision_tree_classifier.rs | 20 ++++++++--- src/tree/decision_tree_regressor.rs | 10 ++++-- 64 files changed, 583 insertions(+), 150 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3059426..e2cd825 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,6 +19,7 @@ jobs: { os: "ubuntu", target: "i686-unknown-linux-gnu" }, { os: "ubuntu", target: "wasm32-unknown-unknown" }, { os: "macos", target: "aarch64-apple-darwin" }, + { os: "ubuntu", target: "wasm32-wasi" }, ] env: TZ: "/usr/share/zoneinfo/your/location" @@ -42,6 +43,9 @@ jobs: - name: Install test runner for wasm if: matrix.platform.target == 'wasm32-unknown-unknown' run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh + - name: Install test runner for wasi + if: matrix.platform.target == 'wasm32-wasi' + run: curl https://wasmtime.dev/install.sh -sSf | bash - name: Stable Build uses: actions-rs/cargo@v1 with: @@ -56,6 +60,12 @@ jobs: - name: Tests in WASM if: matrix.platform.target == 'wasm32-unknown-unknown' run: wasm-pack test --node -- --all-features + - name: Tests in WASI + if: matrix.platform.target == 'wasm32-wasi' + run: | + export WASMTIME_HOME="$HOME/.wasmtime" + export PATH="$WASMTIME_HOME/bin:$PATH" + cargo install cargo-wasi && cargo wasi test check_features: runs-on: "${{ matrix.platform.os }}-latest" diff --git a/Cargo.toml b/Cargo.toml index 7af3482..c5cb4fd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,9 +40,12 @@ criterion = { version = "0.4", default-features = false } serde_json = "1.0" bincode = "1.3.1" -[target.'cfg(target_arch = "wasm32")'.dev-dependencies] +[target.'cfg(all(target_arch = "wasm32", not(target_os = "wasi")))'.dev-dependencies] wasm-bindgen-test = "0.3" +[workspace] +resolver = "2" + [profile.test] debug = 1 opt-level = 3 @@ -53,4 +56,4 @@ strip = true debug = 1 lto = true codegen-units = 1 -overflow-checks = true \ No newline at end of file +overflow-checks = true diff --git a/src/algorithm/neighbour/bbd_tree.rs b/src/algorithm/neighbour/bbd_tree.rs index e84f6de..44cef50 100644 --- a/src/algorithm/neighbour/bbd_tree.rs +++ b/src/algorithm/neighbour/bbd_tree.rs @@ -316,7 +316,10 @@ mod tests { use super::*; use crate::linalg::basic::matrix::DenseMatrix; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn bbdtree_iris() { let data = DenseMatrix::from_2d_array(&[ diff --git a/src/algorithm/neighbour/cover_tree.rs b/src/algorithm/neighbour/cover_tree.rs index 85e0d22..db062f9 100644 --- a/src/algorithm/neighbour/cover_tree.rs +++ b/src/algorithm/neighbour/cover_tree.rs @@ -468,7 +468,10 @@ mod tests { } } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn cover_tree_test() { let data = vec![1, 2, 3, 4, 5, 6, 7, 8, 9]; @@ -485,7 +488,10 @@ mod tests { let knn: Vec = knn.iter().map(|v| *v.2).collect(); assert_eq!(vec!(3, 4, 5, 6, 7), knn); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn cover_tree_test1() { let data = vec![ @@ -504,7 +510,10 @@ mod tests { assert_eq!(vec!(0, 1, 2), knn); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] #[cfg(feature = "serde")] fn serde() { diff --git a/src/algorithm/neighbour/linear_search.rs b/src/algorithm/neighbour/linear_search.rs index ccd5c10..b1ce727 100644 --- a/src/algorithm/neighbour/linear_search.rs +++ b/src/algorithm/neighbour/linear_search.rs @@ -143,7 +143,10 @@ mod tests { } } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn knn_find() { let data1 = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; @@ -190,7 +193,10 @@ mod tests { assert_eq!(vec!(1, 2, 3), found_idxs2); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn knn_point_eq() { let point1 = KNNPoint { diff --git a/src/algorithm/sort/heap_select.rs b/src/algorithm/sort/heap_select.rs index bc880bc..23d2704 100644 --- a/src/algorithm/sort/heap_select.rs +++ b/src/algorithm/sort/heap_select.rs @@ -95,14 +95,20 @@ impl HeapSelection { mod tests { use super::*; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn with_capacity() { let heap = HeapSelection::::with_capacity(3); assert_eq!(3, heap.k); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn test_add() { let mut heap = HeapSelection::with_capacity(3); @@ -120,7 +126,10 @@ mod tests { assert_eq!(vec![2, 0, -5], heap.get()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn test_add1() { let mut heap = HeapSelection::with_capacity(3); @@ -135,7 +144,10 @@ mod tests { assert_eq!(vec![0f64, -1f64, -5f64], heap.get()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn test_add2() { let mut heap = HeapSelection::with_capacity(3); @@ -148,7 +160,10 @@ mod tests { assert_eq!(vec![5.6568, 2.8284, 0.0], heap.get()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn test_add_ordered() { let mut heap = HeapSelection::with_capacity(3); diff --git a/src/algorithm/sort/quick_sort.rs b/src/algorithm/sort/quick_sort.rs index 7ae7cc0..97d34e7 100644 --- a/src/algorithm/sort/quick_sort.rs +++ b/src/algorithm/sort/quick_sort.rs @@ -113,7 +113,10 @@ impl QuickArgSort for Vec { mod tests { use super::*; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn with_capacity() { let arr1 = vec![0.3, 0.1, 0.2, 0.4, 0.9, 0.5, 0.7, 0.6, 0.8]; diff --git a/src/cluster/dbscan.rs b/src/cluster/dbscan.rs index bec45b9..2887dc2 100644 --- a/src/cluster/dbscan.rs +++ b/src/cluster/dbscan.rs @@ -425,7 +425,10 @@ mod tests { assert!(iter.next().is_none()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn fit_predict_dbscan() { let x = DenseMatrix::from_2d_array(&[ @@ -457,7 +460,10 @@ mod tests { assert_eq!(expected_labels, predicted_labels); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] #[cfg(feature = "serde")] fn serde() { @@ -491,10 +497,12 @@ mod tests { assert_eq!(dbscan, deserialized_dbscan); } - use crate::dataset::generator; + #[cfg(feature = "datasets")] #[test] fn from_vec() { + use crate::dataset::generator; + // Generate three blobs let blobs = generator::make_blobs(100, 2, 3); let x: DenseMatrix = DenseMatrix::from_iterator(blobs.data.into_iter(), 100, 2, 0); diff --git a/src/cluster/kmeans.rs b/src/cluster/kmeans.rs index a7b9f08..9322d65 100644 --- a/src/cluster/kmeans.rs +++ b/src/cluster/kmeans.rs @@ -418,7 +418,10 @@ mod tests { use super::*; use crate::linalg::basic::matrix::DenseMatrix; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn invalid_k() { let x = DenseMatrix::from_2d_array(&[&[1, 2, 3], &[4, 5, 6]]); @@ -462,7 +465,10 @@ mod tests { assert!(iter.next().is_none()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn fit_predict_iris() { let x = DenseMatrix::from_2d_array(&[ @@ -497,7 +503,10 @@ mod tests { } } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] #[cfg(feature = "serde")] fn serde() { diff --git a/src/dataset/boston.rs b/src/dataset/boston.rs index 1e4ee12..f10db61 100644 --- a/src/dataset/boston.rs +++ b/src/dataset/boston.rs @@ -69,7 +69,10 @@ mod tests { assert!(serialize_data(&dataset, "boston.xy").is_ok()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn boston_dataset() { let dataset = load_dataset(); diff --git a/src/dataset/breast_cancer.rs b/src/dataset/breast_cancer.rs index 236d69c..b88eaf9 100644 --- a/src/dataset/breast_cancer.rs +++ b/src/dataset/breast_cancer.rs @@ -83,7 +83,10 @@ mod tests { // assert!(serialize_data(&dataset, "breast_cancer.xy").is_ok()); // } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn cancer_dataset() { let dataset = load_dataset(); diff --git a/src/dataset/diabetes.rs b/src/dataset/diabetes.rs index f3e4156..0450522 100644 --- a/src/dataset/diabetes.rs +++ b/src/dataset/diabetes.rs @@ -67,7 +67,10 @@ mod tests { // assert!(serialize_data(&dataset, "diabetes.xy").is_ok()); // } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn boston_dataset() { let dataset = load_dataset(); diff --git a/src/dataset/digits.rs b/src/dataset/digits.rs index b7dd2d4..6f081de 100644 --- a/src/dataset/digits.rs +++ b/src/dataset/digits.rs @@ -57,7 +57,10 @@ mod tests { let dataset = load_dataset(); assert!(serialize_data(&dataset, "digits.xy").is_ok()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn digits_dataset() { let dataset = load_dataset(); diff --git a/src/dataset/generator.rs b/src/dataset/generator.rs index d880f37..f8e5944 100644 --- a/src/dataset/generator.rs +++ b/src/dataset/generator.rs @@ -137,7 +137,10 @@ mod tests { use super::*; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn test_make_blobs() { let dataset = make_blobs(10, 2, 3); @@ -150,7 +153,10 @@ mod tests { assert_eq!(dataset.num_samples, 10); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn test_make_circles() { let dataset = make_circles(10, 0.5, 0.05); @@ -163,7 +169,10 @@ mod tests { assert_eq!(dataset.num_samples, 10); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn test_make_moons() { let dataset = make_moons(10, 0.05); diff --git a/src/dataset/iris.rs b/src/dataset/iris.rs index 9c81440..838f1ec 100644 --- a/src/dataset/iris.rs +++ b/src/dataset/iris.rs @@ -70,7 +70,10 @@ mod tests { // assert!(serialize_data(&dataset, "iris.xy").is_ok()); // } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn iris_dataset() { let dataset = load_dataset(); diff --git a/src/dataset/mod.rs b/src/dataset/mod.rs index 602abde..5b32d02 100644 --- a/src/dataset/mod.rs +++ b/src/dataset/mod.rs @@ -121,7 +121,10 @@ pub(crate) fn deserialize_data( mod tests { use super::*; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn as_matrix() { let dataset = Dataset { diff --git a/src/decomposition/pca.rs b/src/decomposition/pca.rs index 29bf551..20aee37 100644 --- a/src/decomposition/pca.rs +++ b/src/decomposition/pca.rs @@ -446,7 +446,10 @@ mod tests { &[6.8, 161.0, 60.0, 15.6], ]) } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn pca_components() { let us_arrests = us_arrests_data(); @@ -466,7 +469,10 @@ mod tests { epsilon = 1e-3 )); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn decompose_covariance() { let us_arrests = us_arrests_data(); @@ -579,7 +585,10 @@ mod tests { )); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn decompose_correlation() { let us_arrests = us_arrests_data(); @@ -700,7 +709,7 @@ mod tests { // Disable this test for now // TODO: implement deserialization for new DenseMatrix - // #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + // #[cfg_attr(all(target_arch = "wasm32", not(target_os = "wasi")), wasm_bindgen_test::wasm_bindgen_test)] // #[test] // #[cfg(feature = "serde")] // fn pca_serde() { diff --git a/src/decomposition/svd.rs b/src/decomposition/svd.rs index 7b563b1..dab7099 100644 --- a/src/decomposition/svd.rs +++ b/src/decomposition/svd.rs @@ -237,7 +237,10 @@ mod tests { assert!(iter.next().is_none()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn svd_decompose() { // https://stat.ethz.ch/R-manual/R-devel/library/datasets/html/USArrests.html @@ -316,7 +319,7 @@ mod tests { // Disable this test for now // TODO: implement deserialization for new DenseMatrix - // #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + // #[cfg_attr(all(target_arch = "wasm32", not(target_os = "wasi")), wasm_bindgen_test::wasm_bindgen_test)] // #[test] // #[cfg(feature = "serde")] // fn serde() { diff --git a/src/ensemble/random_forest_classifier.rs b/src/ensemble/random_forest_classifier.rs index 8f2e013..d01acef 100644 --- a/src/ensemble/random_forest_classifier.rs +++ b/src/ensemble/random_forest_classifier.rs @@ -632,7 +632,10 @@ mod tests { assert!(iter.next().is_none()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn fit_predict_iris() { let x = DenseMatrix::from_2d_array(&[ @@ -678,7 +681,10 @@ mod tests { assert!(accuracy(&y, &classifier.predict(&x).unwrap()) >= 0.95); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn fit_predict_iris_oob() { let x = DenseMatrix::from_2d_array(&[ @@ -727,7 +733,10 @@ mod tests { ); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] #[cfg(feature = "serde")] fn serde() { diff --git a/src/ensemble/random_forest_regressor.rs b/src/ensemble/random_forest_regressor.rs index a54ac3a..4ccdd4a 100644 --- a/src/ensemble/random_forest_regressor.rs +++ b/src/ensemble/random_forest_regressor.rs @@ -550,7 +550,10 @@ mod tests { assert!(iter.next().is_none()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn fit_longley() { let x = DenseMatrix::from_2d_array(&[ @@ -595,7 +598,10 @@ mod tests { assert!(mean_absolute_error(&y, &y_hat) < 1.0); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn fit_predict_longley_oob() { let x = DenseMatrix::from_2d_array(&[ @@ -645,7 +651,10 @@ mod tests { assert!(mean_absolute_error(&y, &y_hat) < mean_absolute_error(&y, &y_hat_oob)); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] #[cfg(feature = "serde")] fn serde() { diff --git a/src/linalg/traits/cholesky.rs b/src/linalg/traits/cholesky.rs index 22ec9a9..1394270 100644 --- a/src/linalg/traits/cholesky.rs +++ b/src/linalg/traits/cholesky.rs @@ -169,7 +169,10 @@ mod tests { use super::*; use crate::linalg::basic::matrix::DenseMatrix; use approx::relative_eq; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn cholesky_decompose() { let a = DenseMatrix::from_2d_array(&[&[25., 15., -5.], &[15., 18., 0.], &[-5., 0., 11.]]); @@ -188,7 +191,10 @@ mod tests { )); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn cholesky_solve_mut() { let a = DenseMatrix::from_2d_array(&[&[25., 15., -5.], &[15., 18., 0.], &[-5., 0., 11.]]); diff --git a/src/linalg/traits/evd.rs b/src/linalg/traits/evd.rs index 7b017e7..c0a54df 100644 --- a/src/linalg/traits/evd.rs +++ b/src/linalg/traits/evd.rs @@ -810,7 +810,10 @@ mod tests { use crate::linalg::basic::matrix::DenseMatrix; use approx::relative_eq; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn decompose_symmetric() { let A = DenseMatrix::from_2d_array(&[ @@ -841,7 +844,10 @@ mod tests { assert!((0f64 - evd.e[i]).abs() < std::f64::EPSILON); } } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn decompose_asymmetric() { let A = DenseMatrix::from_2d_array(&[ @@ -872,7 +878,10 @@ mod tests { assert!((0f64 - evd.e[i]).abs() < std::f64::EPSILON); } } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn decompose_complex() { let A = DenseMatrix::from_2d_array(&[ diff --git a/src/linalg/traits/lu.rs b/src/linalg/traits/lu.rs index 8e54f89..020c271 100644 --- a/src/linalg/traits/lu.rs +++ b/src/linalg/traits/lu.rs @@ -260,7 +260,10 @@ mod tests { use crate::linalg::basic::matrix::DenseMatrix; use approx::relative_eq; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn decompose() { let a = DenseMatrix::from_2d_array(&[&[1., 2., 3.], &[0., 1., 5.], &[5., 6., 0.]]); @@ -275,7 +278,10 @@ mod tests { assert!(relative_eq!(lu.U(), expected_U, epsilon = 1e-4)); assert!(relative_eq!(lu.pivot(), expected_pivot, epsilon = 1e-4)); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn inverse() { let a = DenseMatrix::from_2d_array(&[&[1., 2., 3.], &[0., 1., 5.], &[5., 6., 0.]]); diff --git a/src/linalg/traits/qr.rs b/src/linalg/traits/qr.rs index 1337fd8..da13729 100644 --- a/src/linalg/traits/qr.rs +++ b/src/linalg/traits/qr.rs @@ -198,7 +198,10 @@ mod tests { use super::*; use crate::linalg::basic::matrix::DenseMatrix; use approx::relative_eq; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn decompose() { let a = DenseMatrix::from_2d_array(&[&[0.9, 0.4, 0.7], &[0.4, 0.5, 0.3], &[0.7, 0.3, 0.8]]); @@ -217,7 +220,10 @@ mod tests { assert!(relative_eq!(qr.R().abs(), r.abs(), epsilon = 1e-4)); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn qr_solve_mut() { let a = DenseMatrix::from_2d_array(&[&[0.9, 0.4, 0.7], &[0.4, 0.5, 0.3], &[0.7, 0.3, 0.8]]); diff --git a/src/linalg/traits/svd.rs b/src/linalg/traits/svd.rs index 1920f99..93c8d9a 100644 --- a/src/linalg/traits/svd.rs +++ b/src/linalg/traits/svd.rs @@ -479,7 +479,10 @@ mod tests { use crate::linalg::basic::matrix::DenseMatrix; use approx::relative_eq; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn decompose_symmetric() { let A = DenseMatrix::from_2d_array(&[ @@ -510,7 +513,10 @@ mod tests { assert!((s[i] - svd.s[i]).abs() < 1e-4); } } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn decompose_asymmetric() { let A = DenseMatrix::from_2d_array(&[ @@ -711,7 +717,10 @@ mod tests { assert!((s[i] - svd.s[i]).abs() < 1e-4); } } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn solve() { let a = DenseMatrix::from_2d_array(&[&[0.9, 0.4, 0.7], &[0.4, 0.5, 0.3], &[0.7, 0.3, 0.8]]); @@ -722,7 +731,10 @@ mod tests { assert!(relative_eq!(w, expected_w, epsilon = 1e-2)); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn decompose_restore() { let a = DenseMatrix::from_2d_array(&[&[1.0, 2.0, 3.0, 4.0], &[5.0, 6.0, 7.0, 8.0]]); diff --git a/src/linear/elastic_net.rs b/src/linear/elastic_net.rs index 46272ed..7d57e1d 100644 --- a/src/linear/elastic_net.rs +++ b/src/linear/elastic_net.rs @@ -491,7 +491,10 @@ mod tests { assert!(iter.next().is_none()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn elasticnet_longley() { let x = DenseMatrix::from_2d_array(&[ @@ -535,7 +538,10 @@ mod tests { assert!(mean_absolute_error(&y_hat, &y) < 30.0); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn elasticnet_fit_predict1() { let x = DenseMatrix::from_2d_array(&[ @@ -603,7 +609,7 @@ mod tests { } // TODO: serialization for the new DenseMatrix needs to be implemented - // #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + // #[cfg_attr(all(target_arch = "wasm32", not(target_os = "wasi")), wasm_bindgen_test::wasm_bindgen_test)] // #[test] // #[cfg(feature = "serde")] // fn serde() { diff --git a/src/linear/lasso.rs b/src/linear/lasso.rs index 08076c6..150d5ca 100644 --- a/src/linear/lasso.rs +++ b/src/linear/lasso.rs @@ -398,7 +398,10 @@ mod tests { assert!(iter.next().is_none()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn lasso_fit_predict() { let x = DenseMatrix::from_2d_array(&[ @@ -448,7 +451,7 @@ mod tests { } // TODO: serialization for the new DenseMatrix needs to be implemented - // #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + // #[cfg_attr(all(target_arch = "wasm32", not(target_os = "wasi")), wasm_bindgen_test::wasm_bindgen_test)] // #[test] // #[cfg(feature = "serde")] // fn serde() { diff --git a/src/linear/linear_regression.rs b/src/linear/linear_regression.rs index ef471db..1f7d540 100644 --- a/src/linear/linear_regression.rs +++ b/src/linear/linear_regression.rs @@ -325,7 +325,10 @@ mod tests { assert!(iter.next().is_none()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn ols_fit_predict() { let x = DenseMatrix::from_2d_array(&[ @@ -372,7 +375,7 @@ mod tests { } // TODO: serialization for the new DenseMatrix needs to be implemented - // #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + // #[cfg_attr(all(target_arch = "wasm32", not(target_os = "wasi")), wasm_bindgen_test::wasm_bindgen_test)] // #[test] // #[cfg(feature = "serde")] // fn serde() { diff --git a/src/linear/logistic_regression.rs b/src/linear/logistic_regression.rs index 2012ae0..6b706dd 100644 --- a/src/linear/logistic_regression.rs +++ b/src/linear/logistic_regression.rs @@ -577,6 +577,8 @@ impl, Y: #[cfg(test)] mod tests { use super::*; + + #[cfg(feature = "datasets")] use crate::dataset::generator::make_blobs; use crate::linalg::basic::arrays::Array; use crate::linalg::basic::matrix::DenseMatrix; @@ -596,7 +598,10 @@ mod tests { assert!(iter.next().is_none()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn multiclass_objective_f() { let x = DenseMatrix::from_2d_array(&[ @@ -653,7 +658,10 @@ mod tests { assert!((g[0].abs() - 32.0).abs() < 1e-4); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn binary_objective_f() { let x = DenseMatrix::from_2d_array(&[ @@ -712,7 +720,10 @@ mod tests { assert!((g[2] - 3.8693).abs() < 1e-4); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn lr_fit_predict() { let x: DenseMatrix = DenseMatrix::from_2d_array(&[ @@ -751,7 +762,11 @@ mod tests { assert_eq!(y_hat, vec![0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg(feature = "datasets")] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn lr_fit_predict_multiclass() { let blobs = make_blobs(15, 4, 3); @@ -778,7 +793,11 @@ mod tests { assert!(reg_coeff_sum < coeff); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg(feature = "datasets")] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn lr_fit_predict_binary() { let blobs = make_blobs(20, 4, 2); @@ -809,7 +828,7 @@ mod tests { } // TODO: serialization for the new DenseMatrix needs to be implemented - // #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + // #[cfg_attr(all(target_arch = "wasm32", not(target_os = "wasi")), wasm_bindgen_test::wasm_bindgen_test)] // #[test] // #[cfg(feature = "serde")] // fn serde() { @@ -840,7 +859,10 @@ mod tests { // assert_eq!(lr, deserialized_lr); // } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn lr_fit_predict_iris() { let x = DenseMatrix::from_2d_array(&[ diff --git a/src/linear/ridge_regression.rs b/src/linear/ridge_regression.rs index 671a8fb..914afc2 100644 --- a/src/linear/ridge_regression.rs +++ b/src/linear/ridge_regression.rs @@ -443,7 +443,10 @@ mod tests { assert!(iter.next().is_none()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn ridge_fit_predict() { let x = DenseMatrix::from_2d_array(&[ @@ -500,7 +503,7 @@ mod tests { } // TODO: implement serialization for new DenseMatrix - // #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + // #[cfg_attr(all(target_arch = "wasm32", not(target_os = "wasi")), wasm_bindgen_test::wasm_bindgen_test)] // #[test] // #[cfg(feature = "serde")] // fn serde() { diff --git a/src/metrics/accuracy.rs b/src/metrics/accuracy.rs index b2a454e..1279614 100644 --- a/src/metrics/accuracy.rs +++ b/src/metrics/accuracy.rs @@ -83,7 +83,10 @@ impl Metrics for Accuracy { mod tests { use super::*; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn accuracy_float() { let y_pred: Vec = vec![0., 2., 1., 3.]; @@ -96,7 +99,10 @@ mod tests { assert!((score2 - 1.0).abs() < 1e-8); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn accuracy_int() { let y_pred: Vec = vec![0, 2, 1, 3]; diff --git a/src/metrics/auc.rs b/src/metrics/auc.rs index e8d02b2..ecaf646 100644 --- a/src/metrics/auc.rs +++ b/src/metrics/auc.rs @@ -113,7 +113,10 @@ impl Metrics for AUC { mod tests { use super::*; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn auc() { let y_true: Vec = vec![0., 0., 1., 1.]; diff --git a/src/metrics/cluster_hcv.rs b/src/metrics/cluster_hcv.rs index 4ee5974..ad43c94 100644 --- a/src/metrics/cluster_hcv.rs +++ b/src/metrics/cluster_hcv.rs @@ -87,7 +87,10 @@ impl Metrics for HCVScore { mod tests { use super::*; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn homogeneity_score() { let v1 = vec![0, 0, 1, 1, 2, 0, 4]; diff --git a/src/metrics/cluster_helpers.rs b/src/metrics/cluster_helpers.rs index e3f1881..47d8061 100644 --- a/src/metrics/cluster_helpers.rs +++ b/src/metrics/cluster_helpers.rs @@ -102,7 +102,10 @@ pub fn mutual_info_score(contingency: &[Vec]) -> f64 { mod tests { use super::*; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn contingency_matrix_test() { let v1 = vec![0, 0, 1, 1, 2, 0, 4]; @@ -114,7 +117,10 @@ mod tests { ); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn entropy_test() { let v1 = vec![0, 0, 1, 1, 2, 0, 4]; @@ -122,7 +128,10 @@ mod tests { assert!((1.2770 - entropy(&v1).unwrap() as f64).abs() < 1e-4); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn mutual_info_score_test() { let v1 = vec![0, 0, 1, 1, 2, 0, 4]; diff --git a/src/metrics/distance/euclidian.rs b/src/metrics/distance/euclidian.rs index 2c8a2db..39deebf 100644 --- a/src/metrics/distance/euclidian.rs +++ b/src/metrics/distance/euclidian.rs @@ -76,7 +76,10 @@ impl> Distance for Euclidian { mod tests { use super::*; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn squared_distance() { let a = vec![1, 2, 3]; diff --git a/src/metrics/distance/hamming.rs b/src/metrics/distance/hamming.rs index 80fbc24..ac0c2c3 100644 --- a/src/metrics/distance/hamming.rs +++ b/src/metrics/distance/hamming.rs @@ -70,7 +70,10 @@ impl> Distance for Hamming { mod tests { use super::*; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn hamming_distance() { let a = vec![1, 0, 0, 1, 0, 0, 1]; diff --git a/src/metrics/distance/mahalanobis.rs b/src/metrics/distance/mahalanobis.rs index 1b79a0a..e526c20 100644 --- a/src/metrics/distance/mahalanobis.rs +++ b/src/metrics/distance/mahalanobis.rs @@ -139,7 +139,10 @@ mod tests { use crate::linalg::basic::arrays::ArrayView2; use crate::linalg::basic::matrix::DenseMatrix; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn mahalanobis_distance() { let data = DenseMatrix::from_2d_array(&[ diff --git a/src/metrics/distance/manhattan.rs b/src/metrics/distance/manhattan.rs index 719043f..fae7868 100644 --- a/src/metrics/distance/manhattan.rs +++ b/src/metrics/distance/manhattan.rs @@ -66,7 +66,10 @@ impl> Distance for Manhattan { mod tests { use super::*; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn manhattan_distance() { let a = vec![1., 2., 3.]; diff --git a/src/metrics/distance/minkowski.rs b/src/metrics/distance/minkowski.rs index 9bfde0b..93e0c93 100644 --- a/src/metrics/distance/minkowski.rs +++ b/src/metrics/distance/minkowski.rs @@ -71,7 +71,10 @@ impl> Distance for Minkowski { mod tests { use super::*; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn minkowski_distance() { let a = vec![1., 2., 3.]; diff --git a/src/metrics/f1.rs b/src/metrics/f1.rs index 4eb4e48..fd41019 100644 --- a/src/metrics/f1.rs +++ b/src/metrics/f1.rs @@ -82,7 +82,10 @@ impl Metrics for F1 { mod tests { use super::*; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn f1() { let y_pred: Vec = vec![0., 0., 1., 1., 1., 1.]; diff --git a/src/metrics/mean_absolute_error.rs b/src/metrics/mean_absolute_error.rs index 74bf4c3..36e5f48 100644 --- a/src/metrics/mean_absolute_error.rs +++ b/src/metrics/mean_absolute_error.rs @@ -76,7 +76,10 @@ impl Metrics for MeanAbsoluteError { mod tests { use super::*; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn mean_absolute_error() { let y_true: Vec = vec![3., -0.5, 2., 7.]; diff --git a/src/metrics/mean_squared_error.rs b/src/metrics/mean_squared_error.rs index 7ad296a..7443857 100644 --- a/src/metrics/mean_squared_error.rs +++ b/src/metrics/mean_squared_error.rs @@ -76,7 +76,10 @@ impl Metrics for MeanSquareError { mod tests { use super::*; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn mean_squared_error() { let y_true: Vec = vec![3., -0.5, 2., 7.]; diff --git a/src/metrics/precision.rs b/src/metrics/precision.rs index 9bc0ff5..a6fcef1 100644 --- a/src/metrics/precision.rs +++ b/src/metrics/precision.rs @@ -95,7 +95,10 @@ impl Metrics for Precision { mod tests { use super::*; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn precision() { let y_true: Vec = vec![0., 1., 1., 0.]; @@ -114,7 +117,10 @@ mod tests { assert!((score3 - 0.5).abs() < 1e-8); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn precision_multiclass() { let y_true: Vec = vec![0., 0., 0., 1., 1., 1., 2., 2., 2.]; diff --git a/src/metrics/r2.rs b/src/metrics/r2.rs index b217aed..6581abe 100644 --- a/src/metrics/r2.rs +++ b/src/metrics/r2.rs @@ -81,7 +81,10 @@ impl Metrics for R2 { mod tests { use super::*; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn r2() { let y_true: Vec = vec![3., -0.5, 2., 7.]; diff --git a/src/metrics/recall.rs b/src/metrics/recall.rs index 640471d..04a779a 100644 --- a/src/metrics/recall.rs +++ b/src/metrics/recall.rs @@ -96,7 +96,10 @@ impl Metrics for Recall { mod tests { use super::*; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn recall() { let y_true: Vec = vec![0., 1., 1., 0.]; @@ -115,7 +118,10 @@ mod tests { assert!((score3 - 0.6666666666666666).abs() < 1e-8); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn recall_multiclass() { let y_true: Vec = vec![0., 0., 0., 1., 1., 1., 2., 2., 2.]; diff --git a/src/model_selection/kfold.rs b/src/model_selection/kfold.rs index 8387d7a..680d2ac 100644 --- a/src/model_selection/kfold.rs +++ b/src/model_selection/kfold.rs @@ -159,7 +159,10 @@ mod tests { use super::*; use crate::linalg::basic::matrix::DenseMatrix; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn run_kfold_return_test_indices_simple() { let k = KFold { @@ -175,7 +178,10 @@ mod tests { assert_eq!(test_indices[2], (22..33).collect::>()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn run_kfold_return_test_indices_odd() { let k = KFold { @@ -191,7 +197,10 @@ mod tests { assert_eq!(test_indices[2], (23..34).collect::>()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn run_kfold_return_test_mask_simple() { let k = KFold { @@ -218,7 +227,10 @@ mod tests { } } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn run_kfold_return_split_simple() { let k = KFold { @@ -235,7 +247,10 @@ mod tests { assert_eq!(train_test_splits[1].1, (11..22).collect::>()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn run_kfold_return_split_simple_shuffle() { let k = KFold { @@ -251,7 +266,10 @@ mod tests { assert_eq!(train_test_splits[1].1.len(), 11_usize); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn numpy_parity_test() { let k = KFold { @@ -273,7 +291,10 @@ mod tests { } } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn numpy_parity_test_shuffle() { let k = KFold { diff --git a/src/model_selection/mod.rs b/src/model_selection/mod.rs index 7bb8b8a..b8e4e7f 100644 --- a/src/model_selection/mod.rs +++ b/src/model_selection/mod.rs @@ -321,7 +321,10 @@ mod tests { use crate::neighbors::knn_regressor::{KNNRegressor, KNNRegressorParameters}; use crate::neighbors::KNNWeightFunction; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn run_train_test_split() { let n = 123; @@ -346,7 +349,10 @@ mod tests { struct BiasedParameters {} impl NoParameters for BiasedParameters {} - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn test_cross_validate_biased() { struct BiasedEstimator {} @@ -412,7 +418,10 @@ mod tests { assert_eq!(0.4, results.mean_train_score()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn test_cross_validate_knn() { let x = DenseMatrix::from_2d_array(&[ @@ -457,7 +466,10 @@ mod tests { assert!(results.mean_train_score() < results.mean_test_score()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn test_cross_val_predict_knn() { let x: DenseMatrix = DenseMatrix::from_2d_array(&[ diff --git a/src/naive_bayes/bernoulli.rs b/src/naive_bayes/bernoulli.rs index 1ded589..02bf330 100644 --- a/src/naive_bayes/bernoulli.rs +++ b/src/naive_bayes/bernoulli.rs @@ -496,7 +496,10 @@ mod tests { assert!(iter.next().is_none()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn run_bernoulli_naive_bayes() { // Tests that BernoulliNB when alpha=1.0 gives the same values as @@ -551,7 +554,10 @@ mod tests { assert_eq!(y_hat, &[1]); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn bernoulli_nb_scikit_parity() { let x = DenseMatrix::from_2d_array(&[ @@ -612,7 +618,10 @@ mod tests { assert_eq!(y_hat, vec!(2, 2, 0, 0, 0, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0)); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] #[cfg(feature = "serde")] fn serde() { diff --git a/src/naive_bayes/categorical.rs b/src/naive_bayes/categorical.rs index 3196b3b..f2ae4a8 100644 --- a/src/naive_bayes/categorical.rs +++ b/src/naive_bayes/categorical.rs @@ -428,7 +428,10 @@ mod tests { assert!(iter.next().is_none()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn run_categorical_naive_bayes() { let x = DenseMatrix::::from_2d_array(&[ @@ -509,7 +512,10 @@ mod tests { assert_eq!(y_hat, vec![0, 1]); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn run_categorical_naive_bayes2() { let x = DenseMatrix::::from_2d_array(&[ @@ -535,7 +541,10 @@ mod tests { assert_eq!(y_hat, vec![0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1]); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] #[cfg(feature = "serde")] fn serde() { diff --git a/src/naive_bayes/gaussian.rs b/src/naive_bayes/gaussian.rs index c8223fd..f23ffdb 100644 --- a/src/naive_bayes/gaussian.rs +++ b/src/naive_bayes/gaussian.rs @@ -372,7 +372,10 @@ mod tests { assert!(iter.next().is_none()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn run_gaussian_naive_bayes() { let x = DenseMatrix::from_2d_array(&[ @@ -409,7 +412,10 @@ mod tests { ); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn run_gaussian_naive_bayes_with_priors() { let x = DenseMatrix::from_2d_array(&[ @@ -429,7 +435,10 @@ mod tests { assert_eq!(gnb.class_priors(), &priors); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] #[cfg(feature = "serde")] fn serde() { diff --git a/src/naive_bayes/multinomial.rs b/src/naive_bayes/multinomial.rs index f82d4fc..f3305ac 100644 --- a/src/naive_bayes/multinomial.rs +++ b/src/naive_bayes/multinomial.rs @@ -403,7 +403,10 @@ mod tests { assert!(iter.next().is_none()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn run_multinomial_naive_bayes() { // Tests that MultinomialNB when alpha=1.0 gives the same values as @@ -461,7 +464,10 @@ mod tests { assert_eq!(y_hat, &[0]); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn multinomial_nb_scikit_parity() { let x = DenseMatrix::::from_2d_array(&[ @@ -524,7 +530,10 @@ mod tests { assert_eq!(y_hat, vec!(2, 2, 0, 0, 0, 2, 2, 1, 0, 1, 0, 2, 0, 0, 2)); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] #[cfg(feature = "serde")] fn serde() { diff --git a/src/neighbors/knn_classifier.rs b/src/neighbors/knn_classifier.rs index fb02b82..67d094a 100644 --- a/src/neighbors/knn_classifier.rs +++ b/src/neighbors/knn_classifier.rs @@ -305,7 +305,10 @@ mod tests { use super::*; use crate::linalg::basic::matrix::DenseMatrix; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn knn_fit_predict() { let x = @@ -317,7 +320,10 @@ mod tests { assert_eq!(y.to_vec(), y_hat); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn knn_fit_predict_weighted() { let x = DenseMatrix::from_2d_array(&[&[1.], &[2.], &[3.], &[4.], &[5.]]); @@ -335,7 +341,10 @@ mod tests { assert_eq!(vec![3], y_hat); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] #[cfg(feature = "serde")] fn serde() { diff --git a/src/neighbors/knn_regressor.rs b/src/neighbors/knn_regressor.rs index cf9b88d..3a123f7 100644 --- a/src/neighbors/knn_regressor.rs +++ b/src/neighbors/knn_regressor.rs @@ -289,7 +289,10 @@ mod tests { use crate::linalg::basic::matrix::DenseMatrix; use crate::metrics::distance::Distances; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn knn_fit_predict_weighted() { let x = @@ -313,7 +316,10 @@ mod tests { } } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn knn_fit_predict_uniform() { let x = @@ -328,7 +334,10 @@ mod tests { } } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] #[cfg(feature = "serde")] fn serde() { diff --git a/src/optimization/first_order/gradient_descent.rs b/src/optimization/first_order/gradient_descent.rs index 63c5c4a..5603a34 100644 --- a/src/optimization/first_order/gradient_descent.rs +++ b/src/optimization/first_order/gradient_descent.rs @@ -99,7 +99,10 @@ mod tests { use crate::optimization::line_search::Backtracking; use crate::optimization::FunctionOrder; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn gradient_descent() { let x0 = vec![-1., 1.]; diff --git a/src/optimization/first_order/lbfgs.rs b/src/optimization/first_order/lbfgs.rs index 1410bac..3bd5f13 100644 --- a/src/optimization/first_order/lbfgs.rs +++ b/src/optimization/first_order/lbfgs.rs @@ -278,7 +278,10 @@ mod tests { use crate::optimization::line_search::Backtracking; use crate::optimization::FunctionOrder; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn lbfgs() { let x0 = vec![0., 0.]; diff --git a/src/optimization/line_search.rs b/src/optimization/line_search.rs index 3d6c012..9a2656c 100644 --- a/src/optimization/line_search.rs +++ b/src/optimization/line_search.rs @@ -129,7 +129,10 @@ impl LineSearchMethod for Backtracking { mod tests { use super::*; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn backtracking() { let f = |x: f64| -> f64 { x.powf(2.) + x }; diff --git a/src/preprocessing/categorical.rs b/src/preprocessing/categorical.rs index 1316f2a..048dd26 100644 --- a/src/preprocessing/categorical.rs +++ b/src/preprocessing/categorical.rs @@ -224,7 +224,10 @@ mod tests { use crate::linalg::basic::matrix::DenseMatrix; use crate::preprocessing::series_encoder::CategoryMapper; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn adjust_idxs() { assert_eq!(find_new_idxs(0, &[], &[]), Vec::::new()); @@ -269,7 +272,10 @@ mod tests { (orig, oh_enc) } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn hash_encode_f64_series() { let series = vec![3.0, 1.0, 2.0, 1.0]; @@ -280,7 +286,10 @@ mod tests { let orig_val: f64 = inv.unwrap().into(); assert_eq!(orig_val, 2.0); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn test_fit() { let (x, _) = build_fake_matrix(); @@ -296,7 +305,10 @@ mod tests { assert_eq!(num_cat, vec![2, 4]); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn matrix_transform_test() { let (x, expected_x) = build_fake_matrix(); @@ -312,7 +324,10 @@ mod tests { assert_eq!(nm, expected_x); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn fail_on_bad_category() { let m = DenseMatrix::from_2d_array(&[ diff --git a/src/preprocessing/numerical.rs b/src/preprocessing/numerical.rs index fc0aa9b..2e424e0 100644 --- a/src/preprocessing/numerical.rs +++ b/src/preprocessing/numerical.rs @@ -420,7 +420,10 @@ mod tests { /// Same as `fit_for_random_values` test, but using a `StandardScaler` that has been /// serialized and deserialized. - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] #[cfg(feature = "serde")] fn serde_fit_for_random_values() { diff --git a/src/preprocessing/series_encoder.rs b/src/preprocessing/series_encoder.rs index 6c81134..5d8b720 100644 --- a/src/preprocessing/series_encoder.rs +++ b/src/preprocessing/series_encoder.rs @@ -199,7 +199,10 @@ where mod tests { use super::*; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn from_categories() { let fake_categories: Vec = vec![1, 2, 3, 4, 5, 3, 5, 3, 1, 2, 4]; @@ -218,14 +221,20 @@ mod tests { let enc = CategoryMapper::<&str>::from_positional_category_vec(fake_category_pos); enc } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn ordinal_encoding() { let enc = build_fake_str_enc(); assert_eq!(1f64, enc.get_ordinal::(&"dog").unwrap()) } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn category_map_and_vec() { let category_map: HashMap<&str, usize> = vec![("background", 0), ("dog", 1), ("cat", 2)] @@ -240,7 +249,10 @@ mod tests { assert_eq!(oh_vec, res); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn positional_categories_vec() { let enc = build_fake_str_enc(); @@ -252,7 +264,10 @@ mod tests { assert_eq!(oh_vec, res); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn invert_label_test() { let enc = build_fake_str_enc(); @@ -265,7 +280,10 @@ mod tests { }; } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn test_many_categorys() { let enc = build_fake_str_enc(); diff --git a/src/svm/mod.rs b/src/svm/mod.rs index 3346c52..3f3c7eb 100644 --- a/src/svm/mod.rs +++ b/src/svm/mod.rs @@ -269,7 +269,10 @@ mod tests { use super::*; use crate::svm::Kernels; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn linear_kernel() { let v1 = vec![1., 2., 3.]; @@ -278,7 +281,10 @@ mod tests { assert_eq!(32f64, Kernels::linear().apply(&v1, &v2).unwrap()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn rbf_kernel() { let v1 = vec![1., 2., 3.]; @@ -293,7 +299,10 @@ mod tests { assert!((0.2265f64 - result) < 1e-4); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn polynomial_kernel() { let v1 = vec![1., 2., 3.]; @@ -308,7 +317,10 @@ mod tests { assert!((4913f64 - result) < std::f64::EPSILON); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn sigmoid_kernel() { let v1 = vec![1., 2., 3.]; diff --git a/src/svm/svc.rs b/src/svm/svc.rs index d616374..ce1e57c 100644 --- a/src/svm/svc.rs +++ b/src/svm/svc.rs @@ -948,7 +948,10 @@ mod tests { #[cfg(feature = "serde")] use crate::svm::*; - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn svc_fit_predict() { let x = DenseMatrix::from_2d_array(&[ @@ -996,7 +999,10 @@ mod tests { ); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn svc_fit_decision_function() { let x = DenseMatrix::from_2d_array(&[&[4.0, 0.0], &[0.0, 4.0], &[8.0, 0.0], &[0.0, 8.0]]); @@ -1034,7 +1040,10 @@ mod tests { assert!(num::Float::abs(y_hat[0]) <= 0.1); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn svc_fit_predict_rbf() { let x = DenseMatrix::from_2d_array(&[ @@ -1083,7 +1092,10 @@ mod tests { ); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] #[cfg(feature = "serde")] fn svc_serde() { diff --git a/src/svm/svr.rs b/src/svm/svr.rs index 14180e4..dc0c52e 100644 --- a/src/svm/svr.rs +++ b/src/svm/svr.rs @@ -719,7 +719,7 @@ mod tests { // } // TODO: had to disable this test as it runs for too long - // #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + // #[cfg_attr(all(target_arch = "wasm32", not(target_os = "wasi")), wasm_bindgen_test::wasm_bindgen_test)] // #[test] // fn svr_fit_predict() { // let x = DenseMatrix::from_2d_array(&[ @@ -758,7 +758,7 @@ mod tests { // assert!(mean_squared_error(&y_hat, &y) < 2.5); // } - // #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + // #[cfg_attr(all(target_arch = "wasm32", not(target_os = "wasi")), wasm_bindgen_test::wasm_bindgen_test)] // #[test] // #[cfg(feature = "serde")] // fn svr_serde() { diff --git a/src/tree/decision_tree_classifier.rs b/src/tree/decision_tree_classifier.rs index e5d366c..043d79b 100644 --- a/src/tree/decision_tree_classifier.rs +++ b/src/tree/decision_tree_classifier.rs @@ -899,7 +899,10 @@ mod tests { assert!(iter.next().is_none()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn gini_impurity() { assert!( @@ -915,7 +918,10 @@ mod tests { ); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn fit_predict_iris() { let x: DenseMatrix = DenseMatrix::from_2d_array(&[ @@ -968,7 +974,10 @@ mod tests { ); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn fit_predict_baloons() { let x: DenseMatrix = DenseMatrix::from_2d_array(&[ @@ -1003,7 +1012,10 @@ mod tests { ); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] #[cfg(feature = "serde")] fn serde() { diff --git a/src/tree/decision_tree_regressor.rs b/src/tree/decision_tree_regressor.rs index a2397d1..397040b 100644 --- a/src/tree/decision_tree_regressor.rs +++ b/src/tree/decision_tree_regressor.rs @@ -731,7 +731,10 @@ mod tests { assert!(iter.next().is_none()); } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] fn fit_longley() { let x = DenseMatrix::from_2d_array(&[ @@ -808,7 +811,10 @@ mod tests { } } - #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)] + #[cfg_attr( + all(target_arch = "wasm32", not(target_os = "wasi")), + wasm_bindgen_test::wasm_bindgen_test + )] #[test] #[cfg(feature = "serde")] fn serde() {