From 3723cc1cb51327965d0bbc7a358f8f2cc70f0e8a Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Sun, 17 Oct 2021 13:54:22 -0700 Subject: [PATCH] Added support for Windows --- .github/workflows/build.yml | 6 +++++- CHANGELOG.md | 4 ++++ build.rs | 4 ++-- src/model.rs | 13 +++++++++---- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4ee22c6..92bbe8d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,7 +2,11 @@ name: build on: [push, pull_request] jobs: build: - runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest] + runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 with: diff --git a/CHANGELOG.md b/CHANGELOG.md index 534cc14..c843e25 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ## 0.2.0 (unreleased) +- Added support for Windows + +Breaking changes + - Changed pattern for fitting models - use `Model::params()` instead of `Model::new()` - Changed `fit`, `fit_eval`, `cv`, `save`, and `load` to return `Result` - Changed `cv` to return average error diff --git a/build.rs b/build.rs index 504cbf4..9386452 100644 --- a/build.rs +++ b/build.rs @@ -3,8 +3,8 @@ extern crate cc; fn main() { cc::Build::new() .cpp(true) - .flag("-std=c++11") - .flag("-Wno-unused-parameter") + .flag_if_supported("-std=c++11") + .flag_if_supported("-Wno-unused-parameter") .file("vendor/libmf/mf.cpp") .compile("mf"); } diff --git a/src/model.rs b/src/model.rs index 447008d..16ecd75 100644 --- a/src/model.rs +++ b/src/model.rs @@ -104,6 +104,7 @@ impl Drop for Model { #[cfg(test)] mod tests { use crate::{Error, Loss, Matrix, Model}; + use std::env; fn generate_data() -> Matrix { let mut data = Matrix::new(); @@ -156,8 +157,12 @@ mod tests { let data = generate_data(); let model = Model::params().quiet(true).fit(&data).unwrap(); - model.save("/tmp/model.txt").unwrap(); - let model = Model::load("/tmp/model.txt").unwrap(); + let mut path = env::temp_dir(); + path.push("model.txt"); + let path = path.to_str().unwrap(); + + model.save(path).unwrap(); + let model = Model::load(path).unwrap(); model.p_factors(); model.q_factors(); @@ -168,13 +173,13 @@ mod tests { fn test_save_missing() { let data = generate_data(); let model = Model::params().quiet(true).fit(&data).unwrap(); - let result = model.save("/tmp/missing/model.txt"); + let result = model.save("missing/model.txt"); assert_eq!(result.unwrap_err(), Error::Io); } #[test] fn test_load_missing() { - let result = Model::load("/tmp/missing.txt"); + let result = Model::load("missing.txt"); assert_eq!(result.unwrap_err(), Error::Io); }