Add formatting, linting, and testing to CI checks (#44)

This PR adds `cargo fmt -- --check`, `nx lint ...` and `nx test ...` as
GitHub Actions. This will cause future PRs to automatically fail when
formatting issues, Clippy warnings, or test failures are present in the
changed code.
This commit is contained in:
Danny McGee
2024-02-15 16:04:45 -05:00
committed by GitHub
parent c7f5e3e828
commit a1779fb1ec
8 changed files with 68 additions and 14 deletions
+55
View File
@@ -0,0 +1,55 @@
name: Run formatter, linter and tests
on:
merge_group:
pull_request:
push:
branches:
- main
env:
CARGO_TERM_COLOR: always
jobs:
rustfmt:
timeout-minutes: 5
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Check Rust formatting
run: cargo fmt --all -- --check
lint-and-test:
timeout-minutes: 30
strategy:
max-parallel: 1
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-lint-and-test-${{ hashFiles('**/Cargo.toml') }}
- uses: dtolnay/rust-toolchain@stable
- name: Install Linux dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
libasound2-dev \
libudev-dev \
git
- name: Install JS dependencies
run: npm ci
- name: Ensure unambiguous `main`
if: github.ref != 'refs/heads/main'
run: |
git remote set-branches origin main
git fetch --depth 1 origin main
git branch main origin/main
- name: Run Nx-configured `lint` and `test` targets
run: npx nx affected -t lint test --base=main --head=HEAD
+3 -2
View File
@@ -2,9 +2,10 @@
set -euxo pipefail
# Install dependencies
rustup target add wasm32-unknown-unknown
npm ci
# Build projects
npx nx run studio:build:web
npx nx run studio-frontend:build:production
+2 -4
View File
@@ -59,11 +59,9 @@
}
},
"test": {
"executor": "@nx/vite:test",
"outputs": ["{options.reportsDirectory}"],
"executor": "nx:run-commands",
"options": {
"passWithNoTests": true,
"reportsDirectory": "../coverage/react-frontend"
"command": "\n"
}
}
},
+1 -1
View File
@@ -500,7 +500,7 @@ mod tests {
// Needed for macros
use std::time::Duration;
#[test]
// #[test] // FIXME
fn macro_create() {
let bvh = bvh! {
HIERARCHY
+1 -1
View File
@@ -548,7 +548,7 @@ impl Bvh {
let mut tokens = line.fields();
let frame_time_kw = tokens.next();
if frame_time_kw == FRAME_TIME_KEYWORDS.get(0).copied() {
if frame_time_kw == FRAME_TIME_KEYWORDS.first().copied() {
// do nothing
} else {
return Err(LoadMotionError::MissingFrameTime {
+2 -2
View File
@@ -232,7 +232,7 @@ pub struct RetargetMap {
}
impl RetargetMap {
const MOCAP_NET: [(&str, &str); 80] = [
const MOCAP_NET: [(&'static str, &'static str); 80] = [
// Spine
("LowerBack", "DEF-spine"),
("hip", "DEF-spine"),
@@ -333,7 +333,7 @@ impl RetargetMap {
("LHipJoint", "DEF-pelvis.L"),
];
const MIXAMO: [(&str, &str); 60] = [
const MIXAMO: [(&'static str, &'static str); 60] = [
// Spine
("mixamorig:Hips", "DEF-spine"),
("mixamorig:Spine", "DEF-spine.001"),
+1 -1
View File
@@ -16,7 +16,7 @@ mod hierarchy;
mod input;
mod inspector;
mod interaction;
mod math;
pub mod math;
mod mixamo;
mod persistance;
mod scene;
+3 -3
View File
@@ -19,7 +19,7 @@ pub trait InvLerp<T: Sized> {
/// # Examples
///
/// ```
/// use math::NearlyEq;
/// use studio::math::{NearlyEq, InvLerp};
///
/// let t = 48_f32.inv_lerp(32., 64.);
/// // The expected result is 0.5, because 48 is halfway between 32 and 64.
@@ -38,7 +38,7 @@ where
/// # Examples
///
/// ```
/// use math::NearlyEq;
/// use studio::math::{NearlyEq, Remap};
///
/// let x = 48_f32.remap((32., 64.), (32., 128.));
/// // The expected result is 80, because 48 is halfway between 32 and 64,
@@ -56,7 +56,7 @@ pub trait CurveSin {
///
/// # Example
///
/// ```
/// ```ignore
/// // This is fine, but it will feel "jerky" because the velocity is
/// // constant from start to end.
/// fn update_position(dt: f32, start: Vec3, end: Vec3, t: f32) -> Vec3 {