Add build and test CI #1

Merged
EIREXE merged 4 commits from ci/build-and-test into master 2026-09-14 12:02:25 +00:00
2 changed files with 58 additions and 4 deletions
+45
View File
@@ -0,0 +1,45 @@
name: CI
on:
push:
branches:
- master
pull_request:
workflow_dispatch:
jobs:
build-and-test:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Check out source
uses: actions/checkout@v4
- name: Install Rust toolchain
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \
sh -s -- -y --profile minimal
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
"$HOME/.cargo/bin/rustup" toolchain install nightly --profile minimal
- name: Install Linux dependencies
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends -y \
clang \
libasound2-dev \
libudev-dev \
libusb-1.0-0-dev \
libwayland-dev \
libx11-dev \
libxkbcommon-dev \
libxkbcommon-x11-0 \
mesa-vulkan-drivers \
mold \
pkg-config
- name: Build
run: cargo build --locked -j 4
- name: Run unit tests
run: cargo test --locked --lib -j 4
+13 -4
View File
@@ -660,6 +660,14 @@ fn bake_gltf(
) -> io::Result<BakedFighterAnimations> {
let (document, buffers, _) = gltf::import_slice(bytes)
.map_err(|error| io::Error::new(io::ErrorKind::InvalidData, error))?;
bake_gltf_document(document, buffers, animations)
}
fn bake_gltf_document(
document: gltf::Document,
buffers: Vec<gltf::buffer::Data>,
animations: &HashMap<AnimKind, String>,
) -> io::Result<BakedFighterAnimations> {
let nodes: Vec<_> = document.nodes().collect();
if nodes.is_empty() {
return Err(io::Error::new(
@@ -933,11 +941,12 @@ mod tests {
fn configured_fighter_clips_bake_to_fixed_point_frames() {
let manifest: FighterManifest =
ron::from_str(include_str!("../../assets/fighters/test/test.fighter.ron")).unwrap();
let baked = bake_gltf(
include_bytes!("../../assets/fighters/test/test-fighter-2.glb"),
&manifest.animations,
)
let (document, buffers, _) = gltf::import(concat!(
env!("CARGO_MANIFEST_DIR"),
"/assets/fighters/test/test_fighter.gltf"
))
.unwrap();
let baked = bake_gltf_document(document, buffers, &manifest.animations).unwrap();
assert_eq!(baked.frame_rate, BAKED_ANIMATION_FPS);
assert_eq!(baked.frame_count(AnimKind::Wait), Some(121));