Add formatting and linting checks to CI

This commit is contained in:
thePR0M3TH3AN
2025-05-21 10:52:50 -04:00
parent 05423065c1
commit 23ac9a9533
13 changed files with 21 additions and 14 deletions

View File

@@ -35,6 +35,12 @@ jobs:
sudo apt-get update sudo apt-get update
sudo apt-get install -y hyperfine jq bc # For benchmarks within run_all_tests.sh sudo apt-get install -y hyperfine jq bc # For benchmarks within run_all_tests.sh
- name: Check formatting
run: cargo fmt -- --check
- name: Lint with Clippy
run: cargo clippy -- -D warnings
- name: Ensure run_all_tests.sh is executable - name: Ensure run_all_tests.sh is executable
run: chmod +x ./run_all_tests.sh run: chmod +x ./run_all_tests.sh

0
bench/dirty-vs-full.sh Normal file → Executable file
View File

View File

@@ -114,4 +114,4 @@ pub fn run(cmd: &WatchCmd, _conn: &mut Connection, _format: super::Format) -> Re
Ok(()) Ok(())
} }
} }
} }

View File

@@ -75,4 +75,4 @@ to see test coverage run:
```bash ```bash
cargo tarpaulin --out Html cargo tarpaulin --out Html
``` ```

View File

@@ -190,4 +190,4 @@ $ marlin view exec tasks
--- ---
*End of DP-001* *End of DP-001*

View File

@@ -182,4 +182,4 @@ marlin view exec tasks
Happy organising! Happy organising!
``` ```

View File

@@ -183,4 +183,4 @@ Benchmarks run nightly; regressions block merge.
* **Buffer** +10 % (3 weeks) for holidays & unknowns → **33 weeks** (\~8 months). * **Buffer** +10 % (3 weeks) for holidays & unknowns → **33 weeks** (\~8 months).
* **Rough budget** (3 FTE avg × 33 wks × \$150k/yr) ≈ **\$285k** payroll + \$15k ops / tooling. * **Rough budget** (3 FTE avg × 33 wks × \$150k/yr) ≈ **\$285k** payroll + \$15k ops / tooling.
--- ---

View File

@@ -496,4 +496,4 @@ mod tests {
assert_eq!(info.id, "backup_badformat.db"); assert_eq!(info.id, "backup_badformat.db");
assert_eq!(info.timestamp, expected_ts); assert_eq!(info.timestamp, expected_ts);
} }
} }

View File

@@ -188,4 +188,4 @@ CREATE INDEX IF NOT EXISTS idx_files_path ON files(path);
CREATE INDEX IF NOT EXISTS idx_files_hash ON files(hash); CREATE INDEX IF NOT EXISTS idx_files_hash ON files(hash);
CREATE INDEX IF NOT EXISTS idx_tags_name_parent ON tags(name, parent_id); CREATE INDEX IF NOT EXISTS idx_tags_name_parent ON tags(name, parent_id);
CREATE INDEX IF NOT EXISTS idx_file_tags_tag_id ON file_tags(tag_id); CREATE INDEX IF NOT EXISTS idx_file_tags_tag_id ON file_tags(tag_id);
CREATE INDEX IF NOT EXISTS idx_attr_file_key ON attributes(file_id, key); CREATE INDEX IF NOT EXISTS idx_attr_file_key ON attributes(file_id, key);

View File

@@ -154,4 +154,4 @@ mod tests {
// Verify the source exists // Verify the source exists
assert!(db_err_no_msg.source().is_some()); assert!(db_err_no_msg.source().is_some());
} }
} }

View File

@@ -204,4 +204,4 @@ impl Marlin {
Ok(owned_w) // Return the owned FileWatcher Ok(owned_w) // Return the owned FileWatcher
} }
} }

View File

@@ -16,6 +16,7 @@ use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
use std::sync::{Arc, Mutex}; use std::sync::{Arc, Mutex};
use std::thread::{self, JoinHandle}; use std::thread::{self, JoinHandle};
use std::time::{Duration, Instant}; use std::time::{Duration, Instant};
use tracing::info;
/// Configuration for the file watcher /// Configuration for the file watcher
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
@@ -430,7 +431,7 @@ impl FileWatcher {
if let Some(db_mutex) = &*db_guard_option { if let Some(db_mutex) = &*db_guard_option {
if let Ok(mut _db_instance_guard) = db_mutex.lock() { if let Ok(mut _db_instance_guard) = db_mutex.lock() {
for event_item in &evts_to_process { for event_item in &evts_to_process {
println!( info!(
"Processing event (DB available): {:?} for path {:?}", "Processing event (DB available): {:?} for path {:?}",
event_item.kind, event_item.path event_item.kind, event_item.path
); );
@@ -440,7 +441,7 @@ impl FileWatcher {
} }
} else { } else {
for event_item in &evts_to_process { for event_item in &evts_to_process {
println!( info!(
"Processing event (no DB): {:?} for path {:?}", "Processing event (no DB): {:?} for path {:?}",
event_item.kind, event_item.path event_item.kind, event_item.path
); );
@@ -454,7 +455,7 @@ impl FileWatcher {
let final_evts = debouncer.flush(); let final_evts = debouncer.flush();
events_processed_clone.fetch_add(final_evts.len(), Ordering::SeqCst); events_processed_clone.fetch_add(final_evts.len(), Ordering::SeqCst);
for processed_event in final_evts { for processed_event in final_evts {
println!( info!(
"Processing final event: {:?} for path {:?}", "Processing final event: {:?} for path {:?}",
processed_event.kind, processed_event.path processed_event.kind, processed_event.path
); );
@@ -710,4 +711,4 @@ mod file_watcher_state_tests {
assert!(watcher.stop().is_err()); assert!(watcher.stop().is_err());
assert!(watcher.status().is_err()); assert!(watcher.status().is_err());
} }
} }

View File

@@ -109,4 +109,4 @@ mod tests {
assert!(backups_actual_dir.join(&kept_info.id).exists(), "Kept backup file {} should exist", kept_info.id); assert!(backups_actual_dir.join(&kept_info.id).exists(), "Kept backup file {} should exist", kept_info.id);
} }
} }
} }