mirror of
https://github.com/Xevion/Pac-Man.git
synced 2025-12-06 09:15:46 -06:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fff44faa05 | ||
|
|
ca17984d98 |
@@ -3,3 +3,10 @@ fail-fast = false
|
||||
|
||||
[profile.coverage]
|
||||
status-level = "none"
|
||||
|
||||
[[profile.default.overrides]]
|
||||
filter = 'test(pacman::game::)'
|
||||
test-group = 'serial'
|
||||
|
||||
[test-groups]
|
||||
serial = { max-threads = 1 }
|
||||
|
||||
15
.github/workflows/coverage.yaml
vendored
15
.github/workflows/coverage.yaml
vendored
@@ -4,7 +4,7 @@ on: ["push", "pull_request"]
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
RUST_TOOLCHAIN: 1.86.0
|
||||
RUST_TOOLCHAIN: nightly
|
||||
|
||||
jobs:
|
||||
coverage:
|
||||
@@ -46,12 +46,11 @@ jobs:
|
||||
|
||||
- name: Generate coverage report
|
||||
run: |
|
||||
just coverage-codecov
|
||||
just coverage-lcov
|
||||
|
||||
- name: Upload coverage reports to Codecov
|
||||
uses: codecov/codecov-action@v4
|
||||
- name: Coveralls upload
|
||||
uses: coverallsapp/github-action@v2
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
files: ./codecov.json
|
||||
disable_search: true
|
||||
verbose: true
|
||||
github-token: ${{ secrets.COVERALLS_REPO_TOKEN }}
|
||||
path-to-lcov: lcov.info
|
||||
debug: true
|
||||
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -20,3 +20,7 @@ coverage.html
|
||||
# Profiling output
|
||||
flamegraph.svg
|
||||
/profile.*
|
||||
|
||||
# temporary
|
||||
assets/game/sound/*.wav
|
||||
/*.py
|
||||
|
||||
2
Cargo.lock
generated
2
Cargo.lock
generated
@@ -663,7 +663,7 @@ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
|
||||
|
||||
[[package]]
|
||||
name = "pacman"
|
||||
version = "0.2.0"
|
||||
version = "0.76.1"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"bevy_ecs",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "pacman"
|
||||
version = "0.2.0"
|
||||
version = "0.76.1"
|
||||
authors = ["Xevion"]
|
||||
edition = "2021"
|
||||
rust-version = "1.86.0"
|
||||
@@ -98,3 +98,6 @@ x86_64-pc-windows-msvc = { triplet = "x64-windows-static-md" }
|
||||
x86_64-unknown-linux-gnu = { triplet = "x64-linux" }
|
||||
x86_64-apple-darwin = { triplet = "x64-osx" }
|
||||
aarch64-apple-darwin = { triplet = "arm64-osx" }
|
||||
|
||||
[lints.rust]
|
||||
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(coverage,coverage_nightly)'] }
|
||||
|
||||
28
Justfile
28
Justfile
@@ -1,9 +1,6 @@
|
||||
set shell := ["bash", "-c"]
|
||||
set windows-shell := ["powershell.exe", "-NoLogo", "-Command"]
|
||||
|
||||
# Regex to exclude files from coverage report, double escapes for Justfile + CLI
|
||||
# You can use src/..., but the filename alone is acceptable too
|
||||
coverage_exclude_pattern := "src/app\\.rs|audio\\.rs|src/error\\.rs|platform/emscripten\\.rs|bin/.+\\.rs|main\\.rs|platform/desktop\\.rs|platform/tracing_buffer\\.rs|platform/buffered_writer\\.rs|systems/debug\\.rs|systems/profiling\\.rs"
|
||||
|
||||
binary_extension := if os() == "windows" { ".exe" } else { "" }
|
||||
|
||||
@@ -11,39 +8,26 @@ binary_extension := if os() == "windows" { ".exe" } else { "" }
|
||||
# !!! --remap-path-prefix prevents the absolute path from being used in the generated report
|
||||
|
||||
# Generate HTML report (for humans, source line inspection)
|
||||
html: coverage-lcov
|
||||
html: coverage
|
||||
cargo llvm-cov report \
|
||||
--remap-path-prefix \
|
||||
--ignore-filename-regex "{{ coverage_exclude_pattern }}" \
|
||||
--html \
|
||||
--open
|
||||
|
||||
# Display report (for humans)
|
||||
report-coverage: coverage-lcov
|
||||
cargo llvm-cov report \
|
||||
--remap-path-prefix \
|
||||
--ignore-filename-regex "{{ coverage_exclude_pattern }}"
|
||||
report-coverage: coverage
|
||||
cargo llvm-cov report --remap-path-prefix
|
||||
|
||||
# Run & generate LCOV report (as base report)
|
||||
coverage-lcov:
|
||||
cargo llvm-cov \
|
||||
coverage:
|
||||
cargo +nightly llvm-cov \
|
||||
--lcov \
|
||||
--remap-path-prefix \
|
||||
--ignore-filename-regex "{{ coverage_exclude_pattern }}" \
|
||||
--workspace \
|
||||
--output-path lcov.info \
|
||||
--profile coverage \
|
||||
--no-fail-fast nextest
|
||||
|
||||
# Run & generate Codecov report (for CI)
|
||||
coverage-codecov:
|
||||
cargo llvm-cov \
|
||||
--codecov \
|
||||
--remap-path-prefix \
|
||||
--ignore-filename-regex "{{ coverage_exclude_pattern }}" \
|
||||
--output-path codecov.json \
|
||||
--profile coverage \
|
||||
--no-fail-fast nextest
|
||||
|
||||
# Profile the project using 'samply'
|
||||
samply:
|
||||
cargo build --profile profile
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
#![cfg_attr(coverage_nightly, feature(coverage_attribute))]
|
||||
#![cfg_attr(coverage_nightly, coverage(off))]
|
||||
|
||||
use std::time::{Duration, Instant};
|
||||
|
||||
use sdl2::event::Event;
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
#![cfg_attr(coverage_nightly, feature(coverage_attribute))]
|
||||
#![cfg_attr(coverage_nightly, coverage(off))]
|
||||
|
||||
use circular_buffer::CircularBuffer;
|
||||
use pacman::constants::CANVAS_SIZE;
|
||||
use sdl2::event::Event;
|
||||
|
||||
14
src/lib.rs
14
src/lib.rs
@@ -1,14 +1,22 @@
|
||||
//! Pac-Man game library crate.
|
||||
#![cfg_attr(coverage_nightly, feature(coverage_attribute))]
|
||||
|
||||
#[cfg_attr(coverage_nightly, coverage(off))]
|
||||
pub mod app;
|
||||
pub mod asset;
|
||||
#[cfg_attr(coverage_nightly, coverage(off))]
|
||||
pub mod audio;
|
||||
pub mod constants;
|
||||
#[cfg_attr(coverage_nightly, coverage(off))]
|
||||
pub mod error;
|
||||
#[cfg_attr(coverage_nightly, coverage(off))]
|
||||
pub mod events;
|
||||
#[cfg_attr(coverage_nightly, coverage(off))]
|
||||
pub mod formatter;
|
||||
#[cfg_attr(coverage_nightly, coverage(off))]
|
||||
pub mod platform;
|
||||
|
||||
pub mod asset;
|
||||
pub mod constants;
|
||||
pub mod game;
|
||||
pub mod map;
|
||||
pub mod platform;
|
||||
pub mod systems;
|
||||
pub mod texture;
|
||||
|
||||
16
src/main.rs
16
src/main.rs
@@ -1,20 +1,27 @@
|
||||
// Note: This disables the console window on Windows. We manually re-attach to the parent terminal or process later on.
|
||||
#![windows_subsystem = "windows"]
|
||||
#![cfg_attr(coverage_nightly, feature(coverage_attribute))]
|
||||
|
||||
use crate::{app::App, constants::LOOP_TIME};
|
||||
use tracing::info;
|
||||
|
||||
#[cfg_attr(coverage_nightly, coverage(off))]
|
||||
mod app;
|
||||
mod asset;
|
||||
#[cfg_attr(coverage_nightly, coverage(off))]
|
||||
mod audio;
|
||||
mod constants;
|
||||
|
||||
#[cfg_attr(coverage_nightly, coverage(off))]
|
||||
mod error;
|
||||
#[cfg_attr(coverage_nightly, coverage(off))]
|
||||
mod events;
|
||||
#[cfg_attr(coverage_nightly, coverage(off))]
|
||||
mod formatter;
|
||||
#[cfg_attr(coverage_nightly, coverage(off))]
|
||||
mod platform;
|
||||
|
||||
mod asset;
|
||||
mod constants;
|
||||
mod game;
|
||||
mod map;
|
||||
mod platform;
|
||||
mod systems;
|
||||
mod texture;
|
||||
|
||||
@@ -22,6 +29,7 @@ mod texture;
|
||||
///
|
||||
/// This function initializes SDL, the window, the game state, and then enters
|
||||
/// the main game loop.
|
||||
#[cfg_attr(coverage_nightly, coverage(off))]
|
||||
pub fn main() {
|
||||
// On Windows, this connects output streams to the console dynamically
|
||||
// On Emscripten, this connects the subscriber to the browser console
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
//! Debug rendering system
|
||||
use std::cmp::Ordering;
|
||||
|
||||
#[cfg_attr(coverage_nightly, feature(coverage_attribute))]
|
||||
use crate::constants::{self, BOARD_PIXEL_OFFSET};
|
||||
use crate::map::builder::Map;
|
||||
use crate::systems::{Collider, CursorPosition, NodeId, Position, SystemTimings};
|
||||
@@ -13,6 +12,7 @@ use sdl2::rect::{Point, Rect};
|
||||
use sdl2::render::{Canvas, Texture};
|
||||
use sdl2::video::Window;
|
||||
use smallvec::SmallVec;
|
||||
use std::cmp::Ordering;
|
||||
use std::collections::{HashMap, HashSet};
|
||||
use tracing::warn;
|
||||
|
||||
@@ -149,6 +149,7 @@ fn transform_position_with_offset(pos: Vec2, scale: f32) -> IVec2 {
|
||||
}
|
||||
|
||||
/// Renders timing information in the top-left corner of the screen using the debug text atlas
|
||||
#[cfg_attr(coverage_nightly, coverage(off))]
|
||||
fn render_timing_display(
|
||||
canvas: &mut Canvas<Window>,
|
||||
timings: &SystemTimings,
|
||||
@@ -203,6 +204,7 @@ fn render_timing_display(
|
||||
}
|
||||
|
||||
#[allow(clippy::too_many_arguments)]
|
||||
#[cfg_attr(coverage_nightly, coverage(off))]
|
||||
pub fn debug_render_system(
|
||||
canvas: &mut Canvas<Window>,
|
||||
ttf_atlas: &mut TtfAtlasResource,
|
||||
|
||||
@@ -3,17 +3,21 @@
|
||||
//! This module contains all the ECS-related logic, including components, systems,
|
||||
//! and resources.
|
||||
|
||||
#[cfg_attr(coverage_nightly, coverage(off))]
|
||||
pub mod audio;
|
||||
pub mod blinking;
|
||||
pub mod collision;
|
||||
pub mod components;
|
||||
#[cfg_attr(coverage_nightly, coverage(off))]
|
||||
pub mod debug;
|
||||
pub mod ghost;
|
||||
pub mod input;
|
||||
pub mod item;
|
||||
pub mod movement;
|
||||
pub mod player;
|
||||
#[cfg_attr(coverage_nightly, coverage(off))]
|
||||
pub mod profiling;
|
||||
#[cfg_attr(coverage_nightly, coverage(off))]
|
||||
pub mod render;
|
||||
pub mod stage;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user