Skip to content

Commit 7f9dd7d

Browse files
committed
chore: deny unwrap_used
1 parent 44f8b61 commit 7f9dd7d

File tree

4 files changed

+77
-57
lines changed

4 files changed

+77
-57
lines changed

.github/workflows/build.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,6 @@ jobs:
6060

6161
- name: Clippy
6262
run: cargo clippy --all-targets --all-features
63-
env:
64-
RUSTFLAGS: '-DWarnings -W clippy::unwrap_used'
6563

6664

6765
build:

src/desktop_file.rs

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -365,46 +365,53 @@ pub async fn open_program(file_name: &str, launch_command: &str) {
365365
mod tests {
366366
use super::*;
367367

368-
fn setup() {
368+
type Result = std::result::Result<(), Box<dyn std::error::Error>>;
369+
370+
fn setup() -> Result {
369371
unsafe {
370-
let pwd = env::current_dir().unwrap();
372+
let pwd = env::current_dir()?;
371373
env::set_var("XDG_DATA_DIRS", format!("{}/test-configs", pwd.display()));
374+
Ok(())
372375
}
373376
}
374377

375378
#[tokio::test]
376-
async fn find_by_filename() {
377-
setup();
379+
async fn find_by_filename() -> Result {
380+
setup()?;
378381

379382
let desktop_files = DesktopFiles::new();
380-
let file = desktop_files.find_by_file_name("firefox").await.unwrap();
383+
let file = desktop_files.find_by_file_name("firefox").await?;
381384

382385
assert!(file.is_some());
383-
assert_eq!(file.unwrap().file_name, "firefox.desktop");
386+
assert_eq!(file.expect("should exist").file_name, "firefox.desktop");
387+
Ok(())
384388
}
385389

386390
#[tokio::test]
387-
async fn find_by_file_contents() {
388-
setup();
391+
async fn find_by_file_contents() -> Result {
392+
setup()?;
389393

390394
let desktop_files = DesktopFiles::new();
391395

392-
let file = desktop_files.find_by_file_contents("427520").await.unwrap();
396+
let file = desktop_files.find_by_file_contents("427520").await?;
393397

394398
assert!(file.is_some());
395-
assert_eq!(file.unwrap().file_name, "Factorio.desktop");
399+
assert_eq!(file.expect("should exist").file_name, "Factorio.desktop");
400+
Ok(())
396401
}
397402

398403
#[tokio::test]
399-
async fn parser() {
404+
async fn parser() -> Result {
400405
let mut file_ref =
401406
DesktopFileRef::Unloaded(PathBuf::from("test-configs/applications/firefox.desktop"));
402-
let file = file_ref.get().await.unwrap();
407+
let file = file_ref.get().await?;
403408

404409
assert_eq!(file.name, Some("Firefox".to_string()));
405410
assert_eq!(file.icon, Some("firefox".to_string()));
406411
assert_eq!(file.exec, Some("/usr/lib/firefox/firefox %u".to_string()));
407412
assert_eq!(file.startup_wm_class, Some("firefox".to_string()));
408413
assert_eq!(file.app_type, Some("Application".to_string()));
414+
415+
Ok(())
409416
}
410417
}

src/main.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#![doc = include_str!("../README.md")]
2+
#![deny(clippy::unwrap_used)]
23

34
use std::cell::RefCell;
45
use std::env;

src/modules/sysinfo/parser.rs

Lines changed: 57 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -256,149 +256,163 @@ fn parse_formatting(chars: &mut Peekable<Chars>, mut formatting: Formatting) ->
256256
#[cfg(test)]
257257
mod tests {
258258
use super::*;
259+
use std::fmt::Formatter;
260+
261+
type Result = std::result::Result<(), Box<dyn std::error::Error>>;
262+
263+
#[derive(Debug)]
264+
struct NotTokenErr;
265+
266+
impl std::fmt::Display for NotTokenErr {
267+
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
268+
write!(f, "expected token, got static")
269+
}
270+
}
271+
impl std::error::Error for NotTokenErr {}
259272

260273
#[test]
261-
fn static_only() {
262-
let tokens = parse_input("hello world").unwrap();
263-
println!("{tokens:?}");
274+
fn static_only() -> Result {
275+
let tokens = parse_input("hello world")?;
264276

265277
assert_eq!(tokens.len(), 1);
266278
assert!(matches!(&tokens[0], Part::Static(str) if str == "hello world"));
279+
Ok(())
267280
}
268281

269282
#[test]
270-
fn basic() {
271-
let tokens = parse_input("{cpu_frequency}").unwrap();
272-
println!("{tokens:?}");
283+
fn basic() -> Result {
284+
let tokens = parse_input("{cpu_frequency}")?;
273285

274286
assert_eq!(tokens.len(), 1);
275287

276288
assert!(matches!(&tokens[0], Part::Token(_)));
277-
let Part::Token(token) = tokens.get(0).unwrap() else {
278-
return;
289+
let Part::Token(token) = tokens.get(0).expect("should exist") else {
290+
return Err(Box::new(NotTokenErr));
279291
};
280292

281293
assert_eq!(token.token, TokenType::CpuFrequency);
294+
Ok(())
282295
}
283296

284297
#[test]
285-
fn named() {
286-
let tokens = parse_input("{cpu_frequency@cpu0}").unwrap();
287-
println!("{tokens:?}");
298+
fn named() -> Result {
299+
let tokens = parse_input("{cpu_frequency@cpu0}")?;
288300

289301
assert_eq!(tokens.len(), 1);
290302

291303
assert!(matches!(&tokens[0], Part::Token(_)));
292-
let Part::Token(token) = tokens.get(0).unwrap() else {
293-
return;
304+
let Part::Token(token) = tokens.get(0).expect("should exist") else {
305+
return Err(Box::new(NotTokenErr));
294306
};
295307

296308
assert_eq!(token.token, TokenType::CpuFrequency);
297309
assert!(matches!(&token.function, Function::Name(n) if n == "cpu0"));
310+
Ok(())
298311
}
299312

300313
#[test]
301-
fn conversion() {
302-
let tokens = parse_input("{cpu_frequency#G}").unwrap();
303-
println!("{tokens:?}");
314+
fn conversion() -> Result {
315+
let tokens = parse_input("{cpu_frequency#G}")?;
304316

305317
assert_eq!(tokens.len(), 1);
306318

307319
assert!(matches!(&tokens[0], Part::Token(_)));
308-
let Part::Token(token) = tokens.get(0).unwrap() else {
309-
return;
320+
let Part::Token(token) = tokens.get(0).expect("should exist") else {
321+
return Err(Box::new(NotTokenErr));
310322
};
311323

312324
assert_eq!(token.token, TokenType::CpuFrequency);
313325
assert_eq!(token.prefix, Prefix::Giga);
326+
Ok(())
314327
}
315328

316329
#[test]
317-
fn formatting_basic() {
318-
let tokens = parse_input("{cpu_frequency:.2}").unwrap();
319-
println!("{tokens:?}");
330+
fn formatting_basic() -> Result {
331+
let tokens = parse_input("{cpu_frequency:.2}")?;
320332

321333
assert_eq!(tokens.len(), 1);
322334

323335
assert!(matches!(&tokens[0], Part::Token(_)));
324-
let Part::Token(token) = tokens.get(0).unwrap() else {
325-
return;
336+
let Part::Token(token) = tokens.get(0).expect("should exist") else {
337+
return Err(Box::new(NotTokenErr));
326338
};
327339

328340
assert_eq!(token.token, TokenType::CpuFrequency);
329341
assert_eq!(token.formatting.precision, 2);
342+
Ok(())
330343
}
331344

332345
#[test]
333-
fn formatting_complex() {
334-
let tokens = parse_input("{cpu_frequency:0<5.2}").unwrap();
335-
println!("{tokens:?}");
346+
fn formatting_complex() -> Result {
347+
let tokens = parse_input("{cpu_frequency:0<5.2}")?;
336348

337349
assert_eq!(tokens.len(), 1);
338350

339351
assert!(matches!(&tokens[0], Part::Token(_)));
340-
let Part::Token(token) = tokens.get(0).unwrap() else {
341-
return;
352+
let Part::Token(token) = tokens.get(0).expect("should exist") else {
353+
return Err(Box::new(NotTokenErr));
342354
};
343355

344356
assert_eq!(token.token, TokenType::CpuFrequency);
345357
assert_eq!(token.formatting.fill, '0');
346358
assert_eq!(token.formatting.align, Alignment::Left);
347359
assert_eq!(token.formatting.width, 5);
348360
assert_eq!(token.formatting.precision, 2);
361+
Ok(())
349362
}
350363

351364
#[test]
352-
fn complex() {
353-
let tokens = parse_input("{cpu_frequency@cpu0#G:.2}").unwrap();
354-
println!("{tokens:?}");
365+
fn complex() -> Result {
366+
let tokens = parse_input("{cpu_frequency@cpu0#G:.2}")?;
355367

356368
assert_eq!(tokens.len(), 1);
357369

358370
assert!(matches!(&tokens[0], Part::Token(_)));
359-
let Part::Token(token) = tokens.get(0).unwrap() else {
360-
return;
371+
let Part::Token(token) = tokens.get(0).expect("should exist") else {
372+
return Err(Box::new(NotTokenErr));
361373
};
362374

363375
assert_eq!(token.token, TokenType::CpuFrequency);
364376
assert!(matches!(&token.function, Function::Name(n) if n == "cpu0"));
365377
assert_eq!(token.prefix, Prefix::Giga);
366378
assert_eq!(token.formatting.precision, 2);
379+
380+
Ok(())
367381
}
368382

369383
#[test]
370-
fn static_then_token() {
371-
let tokens = parse_input("Freq: {cpu_frequency#G:.2}").unwrap();
372-
println!("{tokens:?}");
384+
fn static_then_token() -> Result {
385+
let tokens = parse_input("Freq: {cpu_frequency#G:.2}")?;
373386

374387
assert_eq!(tokens.len(), 2);
375388

376389
assert!(matches!(&tokens[0], Part::Static(str) if str == "Freq: "));
377390

378391
assert!(matches!(&tokens[1], Part::Token(_)));
379-
let Part::Token(token) = tokens.get(1).unwrap() else {
380-
return;
392+
let Part::Token(token) = tokens.get(1).expect("should exist") else {
393+
return Err(Box::new(NotTokenErr));
381394
};
382395

383396
assert_eq!(token.token, TokenType::CpuFrequency);
384397
assert_eq!(token.formatting.precision, 2);
398+
Ok(())
385399
}
386400

387401
#[test]
388-
fn token_then_static() {
389-
let tokens = parse_input("{cpu_frequency#G:.2} GHz").unwrap();
390-
println!("{tokens:?}");
402+
fn token_then_static() -> Result {
403+
let tokens = parse_input("{cpu_frequency#G:.2} GHz")?;
391404

392405
assert_eq!(tokens.len(), 2);
393406

394407
assert!(matches!(&tokens[0], Part::Token(_)));
395-
let Part::Token(token) = tokens.get(0).unwrap() else {
396-
return;
408+
let Part::Token(token) = tokens.get(0).expect("should exist") else {
409+
return Err(Box::new(NotTokenErr));
397410
};
398411

399412
assert_eq!(token.token, TokenType::CpuFrequency);
400413
assert_eq!(token.formatting.precision, 2);
401414

402415
assert!(matches!(&tokens[1], Part::Static(str) if str == " GHz"));
416+
Ok(())
403417
}
404418
}

0 commit comments

Comments
 (0)