diff --git a/.github/workflows/msrv.yml b/.github/workflows/msrv.yml new file mode 100644 index 00000000..4b8b9933 --- /dev/null +++ b/.github/workflows/msrv.yml @@ -0,0 +1,70 @@ +name: Test MSRV Rust + +env: + DEBUG: 'napi:*' + +on: + push: + branches: + - main + pull_request: + +jobs: + test-msrv-rust: + name: 1.57.0 - ubuntu-latest - node@16 + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Setup node + uses: actions/setup-node@v3 + with: + node-version: 16 + check-latest: true + cache: 'yarn' + + - name: Install + uses: actions-rs/toolchain@v1 + with: + toolchain: 1.57.0 + profile: minimal + override: true + + - name: Cache cargo + uses: actions/cache@v3 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + key: stable-ubuntu-latest-node@16-cargo-cache + + - name: Cache NPM dependencies + uses: actions/cache@v3 + with: + path: .yarn/cache + key: npm-cache-ubuntu-latest-node@16 + + - name: 'Install dependencies' + run: yarn install --mode=skip-build --immutable + + - name: 'Build TypeScript' + run: yarn build + + - name: Check build + uses: actions-rs/cargo@v1 + with: + command: check + args: --all --bins --examples --tests -vvv + + - name: Unit tests + run: | + yarn build:test + yarn test --verbose + env: + RUST_BACKTRACE: 1 + + - name: Clear the cargo caches + run: | + cargo install cargo-cache --no-default-features --features ci-autoclean + cargo-cache diff --git a/crates/napi/src/bindgen_runtime/module_register.rs b/crates/napi/src/bindgen_runtime/module_register.rs index 740e7000..1b500831 100644 --- a/crates/napi/src/bindgen_runtime/module_register.rs +++ b/crates/napi/src/bindgen_runtime/module_register.rs @@ -2,7 +2,7 @@ use std::cell::RefCell; use std::collections::{HashMap, HashSet}; #[cfg(all(feature = "tokio_rt", feature = "napi4"))] use std::ffi::c_void; -use std::ffi::{CStr, CString}; +use std::ffi::CStr; use std::mem; use std::ptr; use std::sync::atomic::AtomicBool; @@ -384,7 +384,7 @@ unsafe extern "C" fn napi_register_module_v1( let ctor = ctor.get(0).map(|c| c.raw().method.unwrap()).unwrap_or(noop); let raw_props: Vec<_> = props.iter().map(|prop| prop.raw()).collect(); - let js_class_name = CString::from_vec_with_nul_unchecked(js_name.as_bytes().to_vec()); + let js_class_name = CStr::from_bytes_with_nul_unchecked(js_name.as_bytes()); let mut class_ptr = ptr::null_mut(); check_status_or_throw!(