• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

tamada / btmeister / 18859797937

28 Oct 2025 12:13AM UTC coverage: 90.0% (-0.7%) from 90.704%
18859797937

Pull #72

github

tamada
Implement utility for generating  Filter instance and  add corresponding tests
Pull Request #72: Release/v0.8.2

146 of 174 new or added lines in 12 files covered. (83.91%)

38 existing lines in 2 files now uncovered.

1467 of 1630 relevant lines covered (90.0%)

20.47 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

40.54
/cli/src/defs_builder.rs
1
use std::fs::File;
2
use std::io::{BufRead, BufReader};
3

4
use btmeister::defs::{self, BuildToolDefs};
5
use btmeister::{Filter, Result};
6

7
use crate::cli;
8

9
pub fn construct(opts: cli::DefOpts) -> Result<BuildToolDefs> {
4✔
10
    let (d, a, f) = (opts.definition, opts.append_defs, opts.filter);
4✔
11
    match defs::construct(d, a) {
4✔
12
        Ok(r) => {
4✔
13
            let filter = f.build_filter();
4✔
14
            if filter == Filter::None {
4✔
15
                Ok(r)
4✔
16
            } else {
NEW
17
                Ok(r.filter(filter))
×
18
            }
19
        }
NEW
20
        Err(e) => Err(e),
×
21
    }
22
}
4✔
23

24
impl cli::FilterOpts {
25
    fn build_filter(self) -> Filter {
4✔
26
        match (
27
            self.includes,
4✔
28
            self.excludes,
4✔
29
            self.include_files,
4✔
30
            self.exclude_files,
4✔
31
        ) {
NEW
32
            (Some(v), _, _, _) => Filter::Includes(parse_item(v)),
×
NEW
33
            (_, Some(v), _, _) => Filter::Excludes(parse_item(v)),
×
NEW
34
            (_, _, Some(v), _) => Filter::IncludeFiles(parse_item(v)),
×
NEW
35
            (_, _, _, Some(v)) => Filter::ExcludeFiles(parse_item(v)),
×
36
            (None, None, None, None) => Filter::None,
4✔
37
        }
38
    }
4✔
39
}
40

NEW
41
fn parse_item(item: String) -> Vec<String> {
×
NEW
42
    if let Some(filename) = item.strip_prefix('@') {
×
NEW
43
        match File::open(filename) {
×
NEW
44
            Ok(f) => read_file_content(f),
×
NEW
45
            Err(_) => vec![],
×
46
        }
47
    } else {
NEW
48
        item.split(',')
×
NEW
49
            .map(|s| s.trim().to_string())
×
NEW
50
            .collect::<Vec<String>>()
×
51
    }
NEW
52
}
×
53

NEW
54
fn read_file_content(f: File) -> Vec<String> {
×
NEW
55
    BufReader::new(f)
×
NEW
56
        .lines()
×
NEW
57
        .map_while(|s| s.ok())
×
NEW
58
        .map(|s| s.trim().to_string())
×
NEW
59
        .collect::<Vec<_>>()
×
NEW
60
}
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc